我对机器学习相当陌生,并且正在使用线性特征缩放来预处理我的训练数据。特征缩放/归一化中的最小值和最大值?
我的问题是,给定一个.csv文件,其中每列数据代表一个功能,minX和maxX值应该是我的数据规范化?
更具体地说,我应该分别规范化每个特征(使用每列中的minX/maxX值),一次标准化所有数据(从整个数据集中查找minX/maxX,检查所有特征),或者标准化逐个输入的基础?
我对机器学习相当陌生,并且正在使用线性特征缩放来预处理我的训练数据。特征缩放/归一化中的最小值和最大值?
我的问题是,给定一个.csv文件,其中每列数据代表一个功能,minX和maxX值应该是我的数据规范化?
更具体地说,我应该分别规范化每个特征(使用每列中的minX/maxX值),一次标准化所有数据(从整个数据集中查找minX/maxX,检查所有特征),或者标准化逐个输入的基础?
你想要所有的特征都在线性分类器的相同范围内(而不仅仅是它们!也适用于神经网络!)。在继续前进之前,你想要扩展的原因应该很清楚。看看这个主题上的Andrew Ng's lecture,以便直观地解释发生了什么。
一旦清楚,你应该对你的问题有个答案:单独规范每个特征。例如,如果你有3行的表:
row | F1 | F2
1 | 1 | 1000
2 | 2 | 2000
3 | 3 | 3000
你想利用其最大值(3)和最小值(1)规模F1。 F2将分别为3000和1000分别做最大值和最小值。
这就是所谓的MinMax缩放。您也可以根据均值和方差进行缩放,或者完全按照另一种方法进行,即考虑您通常在计算资源方面拥有“预算”,并且希望将其最大化。在这种情况下,类似Histogram Equalization可能是一个不错的选择。最后一点:如果你正在使用决策树(作为一个独立的分类器,或者在一个决策森林或一个增强的集合中),那么不要打扰正常化,它不会改变一件事情。
分别标准化每个功能。你想要的是在一个定义好的时间间隔内限制每个特征的范围(即[0,1])。 仅使用来自训练数据集的数据。
如果你使用Min-Max缩放,你将会有一个较小的STD,这并不坏。如果使用Min-Max或标准化(mu = 0,std = 1)取决于您需要执行的应用程序。
好的,所以当我输入一组特征{F1:12,F2:19,F3:-80}到我的神经网络中时,是否使用过去的minX/maxX数据(来自训练数据)来标准化每个特征?或者我使用来自输入数组的minX/maxX值对它进行规格化? –
如果训练数据集足够好,您的输入数据应该使用来自它的最小最大值在[0,1]范围内。如果这没有发生,这不是一件好事。无论如何,使用训练数据集中的最小最大值。 – ozw1z5rd
我了解训练数据的特征标准化功能,但是当我开始进行预测时,输入数据如何呢?例如,如果我有一组输入:{F1:12,F2:19,F3:8},我应该用训练数据中的minX/maxX值还是数组中的其他值对每个值进行归一化? –
当然。您已经训练的分类器是函数f(V),其中V是您的特征向量。如果通过其他函数g(V)对V进行归一化,则需要将相同的函数应用于预测数据。因此,例如,如果使用minmax标准化,则需要存储最小值和最大值,以便可以将相同的标准化应用于预测数据。注意:如果您的预测数据具有小于最小值或大于最大值的特征,只需将其分别设置为MIN或MAX(分别)即可。 – Tex