代码之家  ›  专栏  ›  技术社区  ›  Ivo Danihelka

如何设计机器学习功能[关闭]

  •  32
  • Ivo Danihelka  · 技术社区  · 16 年前

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

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

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

    1 回复  |  直到 9 年前
        1
  •  48
  •   Alan Sii Hee Kwong dmcer    9 年前

    好的特性工程包括两个部分。第一个问题是理解您试图解决的任务的属性,以及它们如何与您使用的分类器的优势和局限性交互。第二个是实验性的工作,你将在那里测试你的期望,找出哪些是实际有效的,哪些是无效的。

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

    将功能安装到分类器

    假设您使用的是简单的线性分类器,如 logistic-regression 或A SVM 具有线性核。如果您认为可以测量和提供作为分类器输入的各种属性之间可能存在有趣的交互,那么您需要手动构造和提供捕获这些交互的特性。但是,如果您使用的是带有多项式或高斯核的SVM,那么模型结构将已经捕获输入变量之间的交互。

    同样,如果某些输入变量的值范围比其他变量大得多(例如,大多数特性的值为0或1,但一个特性的值介于-1000和1000之间),则SVM的性能也会很差。因此,当您为SVM进行特性工程时,您可能希望在将特性值提供给分类器之前,尝试对它们进行规范化。但是,如果您正在使用 decision trees random forests 不需要这样的规范化,因为这些分类器对于不同特性所呈现的值之间的大小差异具有鲁棒性。

    解谜特别注意事项

    如果要解决复杂状态空间的问题,可能需要使用 reinforcement learning 接近 Q-learning . 这有助于构建学习任务,这些任务涉及到通过系统的一系列中间步骤实现某个目标。