您是否有一些建议或阅读如何为机器学习任务设计功能?即使对于神经网络,良好的输入特征也很重要。选择的特征将影响所需的隐藏神经元数量和所需的训练示例数量。
以下是一个示例问题,但我一般对特征工程感兴趣。
一个动机示例: 当看一个谜题(例如,15-puzzle或Sokoban)时,什么是好的输入?是否有可能识别出两种状态中的哪一种更接近目标?
好的特征工程涉及两个组件。首先是了解您尝试解决的任务的属性以及它们如何与您使用的分类器的优势和局限性相互作用。第二个是实验性工作,您将在其中测试您的期望并找出实际有效的方法和无效的方法。
这可以反复进行:您对问题的自上而下的理解激发了实验,然后您为这些实验学习的自下而上的信息有助于您更好地理解问题。对问题的更深入理解可以推动更多的实验。
为您的分类器安装功能
假设您正在使用一个简单的线性分类器,如逻辑回归或具有线性内核的SVM 。如果您认为可以测量的各种属性之间可能存在有趣的交互并将其作为输入提供给分类器,则需要手动构建并提供捕获这些交互的特征。但是,如果您使用具有多项式或高斯核的 SVM,则输入变量之间的交互将已被模型的结构捕获。
同样,如果某些输入变量的取值范围比其他变量大得多(例如,大多数特征取值 0 或 1,但一个特征取值介于 -1000 和 1000 之间),SVM 的性能也会很差。因此,当您为 SVM 进行特征工程时,您可能希望在将特征值提供给分类器之前尝试对其进行规范化。但是,如果您使用的是决策树或随机森林,则无需进行此类归一化,因为这些分类器对各种特征所采用的值之间的大小差异具有鲁棒性。
解谜特别注意事项
如果您正在考虑解决具有复杂状态空间的问题,您可能需要使用强化学习方法,例如Q-learning。这有助于构建涉及通过系统的一系列中间步骤达到某个目标的学习任务。