有两个数据集 - 训练数据集和一组特征数据集,其标签尚未预测(新数据集)。
我构建了一个随机森林分类器。一路上我必须做两件事:
- 标准化连续数字特征。
- 对分类编码执行 one-hot-encoding。
现在我有两个问题。当我预测新数据的标签时:
我需要标准化传入的特征吗? (常识告诉我是的:))如果是这样,我应该从训练数据集中获取特定特征的平均值、最大值、最小值,还是应该以某种方式考虑特征的新值?
如何对特征的新值进行热单编码?我是否考虑到特征可能的新值来扩展特定类别的可能类别字典?
就我而言,我拥有两个数据集,因此我可以提前计算所有这些内容,但如果我只有一个分类器和一个新数据集怎么办?
最佳答案
我只对您正在使用的分类器类型和标准化技术有基本了解,但我认为也适用于您正在做的事情的一般规则是执行以下操作。
您的分类器不是随机森林分类器。这只是充当实际分类器的管道的一步。这个管道/实际分类器就是您所描述的:
- Normalize continuous numeric features.
- Perform a one-hot-encoding on the categorical ones.
- 对前 2 个步骤中获得的信息使用随机森林分类器。
这个管道包含 3 个内容,是您实际用作分类器的管道。
现在,分类器是如何工作的?
- 您根据训练数据构建一些状态。
- 您使用该状态对测试数据进行预测。
所以:
- Do I need to normalize the incoming features? (common sense tells me that yes :) ) If so, should I take the mean, max, min values for a specific feature from the training data set or should I somehow take into account the new values of the features?
您的分类器会对训练数据的传入特征进行标准化,因此它也会对未见过的实例的特征进行标准化。为此,它必须使用在训练期间建立的状态。
例如,如果您对功能进行最小-最大缩放,您的状态将为每个功能存储 min(f)
和 max(f)
f
。然后,在测试/预测期间,您将使用存储的 min(f)
和 max(f)
对每个特征 f
进行最小-最大缩放> 值(value)观。
我不确定“标准化连续数字特征”是什么意思。你的意思是discretization ?如果您在训练期间为这种离散化建立了某种状态,那么您需要找到一种方法来将其考虑在内。
How do I hot-one-encode the new values of the features? Do I expand the dictionary of the possible categories for a specific category taking into account the possibly new values of the features?
你不知道每个类别可以有多少个值吗?通常你会这样做(因为分类是指国籍、大陆等——你事先知道的事情)。如果您可以获得在训练期间未见过的分类特征的值,那么就引出了您是否应该关心它的问题。您从未接受过训练的分类值有什么用?
也许添加一个“未知”类别。我认为扩展单个应该没问题,如果你从未接受过它们的训练,那么再多又有什么用呢?
您有什么类型的分类?
我可能是错的,但是你真的需要 one-hot 编码吗? AFAIK,基于树的分类器似乎并没有从中受益太多。
关于machine-learning - 分类时,在预测真实数据时是否需要对新输入的特征进行标准化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671536/