哪些机器学习算法有利于估计哪些特征更重要?

机器算法验证 机器学习 特征选择
2022-03-25 02:26:58

我的数据具有最少数量的不变特征,以及一些可以改变并对结果产生重大影响的附加特征。我的数据集如下所示:

特征是 A、B、C(始终存在)和 D、E、F、G、H(有时存在)

A = 10, B = 10, C = 10                  outcome = 10
A = 8,  B = 7,  C = 8                   outcome = 8.5
A = 10, B = 5,  C = 11, D = 15          outcome = 178
A = 10, B = 10, C = 10, E = 10, G = 18  outcome = 19
A = 10, B = 8,  C = 9,  E = 8,  F = 4   outcome = 250
A = 10, B = 11, C = 13, E = 8,  F = 4   outcome = 320
...

我想预测结果值,附加参数的组合对于确定结果非常重要。在这个例子中,E 和 F 的存在会导致很大的结果,而 E 和 G 的存在则不会。什么机器学习算法或技术可以很好地捕捉到这种现象?

4个回答

这是机器学习的主要研究领域之一,被称为特征选择

一般而言,唯一的方法是尝试所有可能的子集,才能说出最好的特征子集是什么(输入到一些可以组合它们的预测模型中)。这通常是不可能的,因此人们尝试通过各种启发式方法对特征子集的空间进行采样(有关一些典型方法,请参阅文章)。

据我了解,您正在寻找衡量变量重要性的方法。这些基于几种不同的理论方法有多种风格,但都与用于优化您正在谈论的算法的方法有很强的联系。一般来说,每个机器学习算法都会有一个规范的优化方法;神经网络的反向传播、SVM 的顺序最小优化、各种信息标准和决策树的统计显着性检验,包括卡方显着性或基尼杂质。当然,对于每种算法,经常会提出其他更新颖的优化方法。

每种算法的这些优化方法本质上定义了手头模型的变量重要性。本质上,您正在寻找算法正在执行的优化步骤的结果的近似或可解释的表示。然而,由于几个原因,这是有问题的。

  1. 确定给定变量对模型形式选择的影响的难度,因为选择本身通常是一个随机过程。变量在一定程度上影响模型选择,因此即使变量对模型中的最终预测并不重要,它可能对模型形式本身产生了至关重要的影响。鉴于模型本身的生成通常是随机的(使用粒子群优化或装袋方法等进行优化),很难准确理解给定变量如何塑造其形式。

  2. 提取单个变量的重要性的难度,因为它可能仅在与另一个变量结合或相互作用时才重要。

  3. 有些变量可能只对某些观察很重要。对其他观察结果缺乏重要性可能会通过平均实际差异来混淆整体重要性的测量。

也很难获得与模型定义的变量重要性完全一致的可立即解释的指标,因为它可能不会产生单个数字(尤其是在 bagging 的情况下)。相反,在这些情况下,每个变量都有一个重要性分布。

克服这些问题的一种方法可能是使用扰动。这是一种通过向变量添加随机噪声来分析最终模型的方法,然后检查这如何影响结果。优点是它允许您通过模拟从经验上找到哪些变量最重要 - 回答如果删除哪些变量会最破坏预测的问题。缺点是,即使变量被删除/扰动,模型(如果重新训练)也很有可能使用其他变量重建它们的效果,这意味着您得出的“变量重要性”度量仍然只是真正的表示在您的训练模型中的重要性,但不是所有可能模型的整体重要性。

正如@Bitwise 所提到的,特征选择或特征提取本身就是一个巨大的研究领域,并且有无数种方法可以做到这一点。

其他答案在我看来都是有效的,但最终,您可能会最喜欢,并选择对您来说最直观且您最了解的方法。我仍然会添加两个可能的选项。

多元回归可能是最古老的技术。这个想法是拟合一个模型来描述来自预测变量的响应,并只保留对响应有很大影响的预测变量(大比例系数)。在这里,您可能必须将 D、E、F 和 G 的缺失重新编码为D=0E=0F=0、 G=0或类似的东西。

另一种从未获得应有的普及的技术是协惯性分析(规范分析的一种变体)。据我所知,它没有实现,你必须从头开始(例如那里)。这是一种线性方法,可以找到与您的结果相匹配的特征的最佳线性组合。这篇文展示了如何使用它的示例。

我使用信息增益(也称为互信息)。我和我的顾问经常使用本文Cohen,2008中描述的方法来分析 SVM 分类的特征。