我正在使用高斯混合模型进行图像分类。我有大约34,000个特征,属于三个类,都位于23维空间中。我使用不同的方法对训练和测试数据进行了特征缩放,我观察到在执行缩放后实际上的精度降低。我执行了特征缩放,因为许多特征之间存在许多顺序的差异。我很想知道为什么会这样,我认为特征缩放会提高准确性,特别是考虑到特征的巨大差异。
答案 0 :(得分:21)
我认为特征缩放会提高准确性,特别是考虑到特征的巨大差异。
欢迎来到现实世界的好友。
一般来说,您希望功能在同一" scale"这样你就不会有某些功能而且会占据主导地位。其他特性。如果您的机器学习算法本质上是几何的,那么尤其如此。在自然界。通过"几何",我的意思是它将样本视为空间中的 points ,并且依赖于进行预测的点之间的距离(通常是Euclidean / L2,就像你的情况一样),即,点的空间关系很重要。 GMM和SVM就是这种算法。
然而,特征缩放可能会使事情变得困难,特别是如果某些特征本质上是分类/序数的,并且当您将它们附加到其余特征时,您没有对它们进行适当的预处理。此外,根据您的特征缩放方法,特定特征的异常值的存在也可能会破坏该特征的特征缩放。例如,a" min / max"或"单位差异"缩放将对异常值敏感(例如,如果您的某个功能编码年度收入或现金余额,并且数据集中有一些mi /亿万富翁)。
此外,当您遇到此类问题时,原因可能并不明显。这并不意味着您执行功能缩放,结果变坏,然后功能缩放就是错误。可能是你的方法被搞砸了,而且特征缩放后的结果恰好被搞砸了。
那么问题的其他原因是什么?
那你能做什么?
基本上,我的观点是,不要(只是)将机器学习领域/算法视为黑盒子和一堆你记忆并随意尝试的技巧。尝试理解引擎盖下的算法/数学。这样,您就能更好地诊断遇到的问题。
编辑(响应@Zee要求澄清)
对于论文而言,我唯一可以回想起的是LibSVM的作者A Practical Guide to Support Vector Classification。其中的示例显示了SVM在各种数据集上的特征缩放的重要性。例如,考虑RBF /高斯核。该内核使用平方L2范数。如果您的功能具有不同的比例,则会影响该值。
此外,如何表示您的功能至关重要。例如,将表示高度的变量从米改变为厘米或英寸将影响诸如PCA之类的算法(因为该特征的方向的变化已经改变。)注意这与"典型的"不同。缩放(例如,最小/最大,Z分数等),因为这是表示的问题。无论单位,此人的身高仍然相同。而典型的特征缩放"转换"数据,改变了"身高"这个人当被问及为什么他没有在他的书中包含PCA时,Amazon page of his book,Information Theory for Machine Learning上的David Mackay教授就此发表评论。
对于序数和分类变量,Bayesian Reasoning for Machine Learning,The Elements of Statistical Learning中简要提及了它们。他们提到了将它们编码为特征的方法,例如,用3个二进制变量替换可以代表3个类别的变量,其中一个设置为" 1"表明样本具有该类别。这对于诸如线性回归(或线性分类器)之类的方法很重要。请注意,这是关于编码分类变量/功能,不缩放本身,但它们是功能预处理设置的一部分,因此有用。更多信息可以在Hal Duame III的书中找到。
Hal Duame III的书A Course in Machine Learning。搜索"缩放"。本书最早的例子之一是它如何影响KNN(它只使用L2距离,如果你使用RBF /高斯核,GMM,SVM等使用它)。更多细节在第4章"机器学习实践"中给出。不幸的是,PDF中没有显示图像/图表。本书有一个关于特征编码和缩放的最好的处理方法,特别是如果你从事自然语言处理(NLP)。例如,参见他对特征应用对数的解释(即对数变换)。这样,日志的总和就成为了特征产品的对数,以及"效果" /"贡献"这些特征的对数逐渐减小。
请注意,所有上述教科书均可从上述链接免费下载。