如何设计机器学习功能

时间:2010-04-20 10:55:04

标签: artificial-intelligence machine-learning neural-network classification pattern-recognition

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

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

动机示例: 在查看谜题时会有什么好的输入(例如15-puzzleSokoban)?是否有可能认识到两个国家中哪一个更接近目标?

1 个答案:

答案 0 :(得分:48)

良好的特征工程涉及两个组件。首先是了解您尝试解决的任务的属性以及它们如何与您正在使用的分类器的优势和局限进行交互。第二个是实验性工作,您将测试您的期望并找出实际工作和不工作的内容。

这可以迭代完成:您对问题的自上而下理解会激发实验,然后您为这些实验学习的自下而上信息可帮助您更好地理解这个问题。对问题的更深入理解可以推动更多实验。

为您的分类器调整功能

假设您使用的是简单的线性分类器,如logistic-regressionSVM,其中包含线性内核。如果您认为可以测量各种属性之间可能存在有趣的交互并将其作为分类器的输入提供,则需要手动构建并提供捕获这些交互的功能。但是,如果您使用具有多项式或高斯内核的SVM,则输入变量之间的交互将已由模型的结构捕获。

类似地,如果某些输入变量具有比其他变量具有更大范围的值,则SVM可能表现不佳(例如,大多数特征采用值0或1,但是一个特征采用-1000到1000之间的值)。因此,当您为SVM进行特征工程时,您可能希望在将特征值提供给分类器之前尝试对其进行规范化。但是,如果您使用的是decision treesrandom forests,则无需进行此类归一化,因为这些分类器对于各种功能所采用的值之间的大小差异非常强大。

特别注意拼图解决

如果您正在寻找解决复杂状态空间的问题,您可能希望使用reinforcement learning方法,例如Q-learning。这有助于构建学习任务,包括通过系统的一系列中间步骤达到某个目标。