如何为机器学习设计特征

34

你有没有一些关于如何为机器学习任务设计特征的建议或读物呢?即使对于神经网络来说,好的输入特征也非常重要。所选择的特征将影响所需的隐藏神经元数量和所需的训练样本数量。

以下是一个示例问题,但我对特征工程有兴趣。

动机示例: 当查看一个谜题(例如15 puzzleSokoban)时,什么样的输入才是好的呢?是否可能识别出两个状态中哪一个更接近目标状态?

1个回答

50
好的特征工程包括两个组成部分。第一个是理解你正在尝试解决的任务的属性以及它们可能与你使用的分类器的优势和局限性相互作用的理解。第二个是实验工作,您将在其中测试您的期望,并找出实际有效和无效的内容。
这可以通过迭代完成:您对问题的自上而下的理解促使实验,然后您为这些实验学到的自下而上的信息可以帮助您更好地理解问题。对问题的更深入理解可以推动更多的实验。
适合您的分类器的特征
假设您正在使用像logistic-regression或具有线性内核的SVM这样的简单线性分类器。如果您认为各种属性之间可能存在有趣的交互作用,并且可以测量并提供作为分类器输入,那么您需要手动构建并提供捕获这些交互作用的特征。但是,如果您使用带有多项式或高斯内核的SVM,则输入变量之间的交互作用将已经被模型的结构所捕获。
同样地,如果某些输入变量的值域远大于其他变量(例如,大多数特征的取值为0或1,但某一特征的取值范围为-1000到1000),那么SVM就可能表现不佳。因此,在使用SVM进行特征工程时,您可能需要尝试在提供给分类器之前对特征的值进行归一化。然而,如果您使用的是决策树或者随机森林, 那么这种归一化是不必要的,因为这些分类器对各个特征的取值差异具有鲁棒性。

特别是关于拼图问题的说明

如果您正在解决一个具有复杂状态空间的问题,您可能需要使用 强化学习 方法,例如 Q-learning。这有助于构建涉及通过系统的一系列中间步骤达到某个目标的学习任务。


属性之间的交互是否在书中提到?如何识别输入中缺少的内容? - Ivo Danihelka
大多数统计学教材都应该提到交互作用,但在维基百科上也有一个很好的概述:http://en.wikipedia.org/wiki/Interaction_%28statistics%29。 - dmcer
7
关于输入中缺少的内容,我认为你的意思是“如何知道我是否具备足够的正确特征”。如果你的分类器正则化程度非常低,而在训练数据上表现仍然不好,那么你可能需要想出更多的特征。但是,当你的训练集表现良好但测试集表现不佳时,就会发生过拟合现象,这时你需要删除一些特征和/或增加正则化程度。 - dmcer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接