确定机器学习模型的有用特征

数据挖掘 特征选择 训练 初学者
2022-02-04 09:05:37

我正在使用具有数百个特征的数据集。我希望使用原始数据集中的 7-10 个特征创建一个简单的机器学习模型。我的问题是这样的:

我可以使用哪些量化指标来确定某个功能对学习模型是否有用?

我一直在将目标均值在特征组上的分布与整个数据集的目标均值进行比较。例如,取一个二元特征 X 和一个二元目标。假设目标在整个数据集上的平均值为 0.10。

为了分析特征 X,我取特征 X 中每个组的目标均值。

mean (X=0) = 0.07
mean (X=1) = 1.15

通过这种方式,我可以观察到一个特征对目标的影响。

我知道人们必须使用一些更强大的指标来确定功能的强度。在学校里,我使用p检验来确定变量的统计显着性。DS / ML中有模拟吗?

3个回答

我建议查看此页面以获取更多想法:

特征选择

话虽这么说,但很快想到的几个想法是:

  1. 使用基于树的方法(如随机森林)并查看您的特征重要性。Scikit Learn 有一个方便的类可以做到这一点,请参见上面的链接。
  2. 使用某种正则化/惩罚,如 L1 或 L2 正则化。这将迫使无用功能的参数接近于零。
  3. 递归删除变量并查看结果输出是什么并进行交叉验证。sklearn 再次为此提供了一种方法。

通常,这些方法将是“昂贵的”,因为您要安装多个模型以将您带到您需要去的地方。

您可以逐步(向后或向前)删除或添加特征到您的特征子集中。对于特征选择过程,您需要一个度量来衡量哪些特征应包含在可用数据的缩减数据集中。一个重要的熵度量是互信息

互信息是两个(可能是多维的)随机变量 X 和 Y 之间的度量,它量化了通过另一个随机变量获得的关于一个随机变量的信息量。互信息由下式给出

I(X;Y)=∫∫p(x,y)logp(x,y)/p(x)p(y)dxdy,

其中 p(x,y) 是 X 和 Y 的联合概率密度函数,其中 p(x) 和 p(y) 是边际密度函数。互信息决定联合分布 p(x,y) 与因子边际分布的乘积有多相似。如果 X 和 Y 完全不相关(因此是独立的),则 p(x,y) 将等于 p(x)p(y),并且该积分为零。

如果我们假设 X 是一个特征并且 Y 是目标变量,那么我们可以测量它们的互信息。我们希望保留它们与目标变量之间具有最高互信息的特征。

除了选择合适特征的逐步算法外,还有一些贪心方法也试图最大化联合分布和目标变量之间的互信息。

您可以在下面找到一些指示性链接

基于互信息的特征选择方法综述

使用联合互信息最大化的特征选择

在预测 y_i 时,有很多方法可以估计特征的好坏。一种好的方法是仅使用您想要检查其重要性的特征来构建适当的 ML 模型。在这种情况下,我们将仅使用您想要检查其是否重要的​​特征来构建逻辑回归模型。
请记住,如果分类特征根据您使用的模型将其编码为矢量形式,例如(one-hot 编码)最适合线性模型,而响应编码最适合基于树的模型。