30

您是否有一些建议或阅读如何设计机器学习任务的功能? 即使是神经网络,良好的输入特征也很重要。选择的特征将影响所需的隐藏神经元数量和所需的训练实例数量。如何设计机器学习功能

以下是一个示例问题,但我一般对功能工程感兴趣。

动机例如: 看着一个难题(例如,15-puzzleSokoban)时,这将是一个良好的输入?是否有可能认识到哪两个国家更接近目标?

回答

46

良好的特征工程涉及两个组件。首先是理解您试图解决的任务的属性,以及它们如何与您使用的分类器的优点和局限性相互作用。第二个是实验性工作,你将测试你的期望,并找出实际工作和不工作。

这可以反复做:你自上而下问题的理解激励实验,然后你学习这些实验的自下而上信息可帮助您更好地了解这个问题。对问题的更深入的理解可以推动更多的实验。

拟合功能,以您的分类

比方说,你正在使用像logistic-regression或一个简单的线性分类与线性内核SVM。如果您认为可以测量各种属性并将其作为输入提供给分类器,那么您需要手动构建并提供捕获这些交互的功能。但是,如果您使用的是具有多项式或高斯内核的SVM,则输入变量之间的交互作用已经被模型结构捕获。同样,如果某些输入变量的值比其他值大得多(例如,大多数特征的值为0或1,但一个特征的值在-1000和1000之间),则SVM可能表现不佳, 。因此,当您为SVM进行特征工程时,您可能需要先将特征的值标准化,然后再将它们提供给分类器。但是,如果您使用的是decision treesrandom forests,则此类归一化不是必需的,因为这些分类器对各种功能值之间的幅度差异具有鲁棒性。特别是在解谜

如果你正在寻找解决问题的一个复杂的状态空间

注意,你可能想使用reinforcement learning办法像Q-learning。这有助于结构学习任务,涉及通过系统的一系列中间步骤实现某个目标。

+0

对书中提到的属性之间的相互作用的认识是什么?如何识别输入中缺少的内容? – 2010-04-21 20:22:41

+0

交互应该在大多数统计教科书中提及。但是,维基百科有一个很好的概述:http://en.wikipedia.org/wiki/Interaction_%28statistics%29。 – dmcer 2010-04-21 23:36:27

+6

至于从输入中缺少的东西,我假设你的意思是'我怎么知道我是否拥有足够的正确功能'。如果您为分类器关闭正则化方法,并且训练数据的性能仍然不佳,那么您应该尝试集体讨论更多功能。但是,当您的训练集性能良好但您的测试集性能不佳时,则表明您过度训练集并且需要删除某些功能和/或调整正规化。 – dmcer 2010-04-21 23:45:09