你有没有一些关于如何为机器学习任务设计特征的建议或读物呢?即使对于神经网络来说,好的输入特征也非常重要。所选择的特征将影响所需的隐藏神经元数量和所需的训练样本数量。 以下是一个示例问题,但我对特征工程有兴趣。 动机示例: 当查看一个谜题(例如15 puzzle或Sokoban)时,什么样的输入才是好的呢?是否可能识别出两个状态中哪一个更接近目标状态?
好的特征工程包括两个组成部分。第一个是理解你正在尝试解决的任务的属性以及它们可能与你使用的分类器的优势和局限性相互作用的理解。第二个是实验工作,您将在其中测试您的期望,并找出实际有效和无效的内容。这可以通过迭代完成:您对问题的自上而下的理解促使实验,然后您为这些实验学到的自下而上的信息可以帮助您更好地理解问题。对问题的更深入理解可以推动更多的实验。适合您的分类器的特征假设您正在使用像logistic-regression或具有线性内核的SVM这样的简单线性分类器。如果您认为各种属性之间可能存在有趣的交互作用,并且可以测量并提供作为分类器输入,那么您需要手动构建并提供捕获这些交互作用的特征。但是,如果您使用带有多项式或高斯内核的SVM,则输入变量之间的交互作用将已经被模型的结构所捕获。同样地,如果某些输入变量的值域远大于其他变量(例如,大多数特征的取值为0或1,但某一特征的取值范围为-1000到1000),那么SVM就可能表现不佳。因此,在使用SVM进行特征工程时,您可能需要尝试在提供给分类器之前对特征的值进行归一化。然而,如果您使用的是决策树或者随机森林, 那么这种归一化是不必要的,因为这些分类器对各个特征的取值差异具有鲁棒性。 特别是关于拼图问题的说明 如果您正在解决一个具有复杂状态空间的问题,您可能需要使用 强化学习 方法,例如 Q-learning。这有助于构建涉及通过系统的一系列中间步骤达到某个目标的学习任务。