在本文中,我们将探讨各种特征选择方法和技术,用以在保持模型评分可接受的情况下减少特征数量。通过减少噪声和冗余信息,模型可以更快地处理,并减少复杂性。
我们将使用所有特征作为基础模型。然后将执行各种特征选择技术,以确定保留和删除的最佳特征,同时不显著牺牲评分(R2 分数)。使用的方法包括:
- 相关性矩阵
- 检查方差膨胀因子(VIF)
- Lasso作为特征选择方法
- Select K-Best(f_regression 和 mutual_info_regression)
- 递归特征消除(RFE)
- 顺序前向/后向特征选择
数据集
我们将从汽车数据集开始,该数据集包含七个特征,并将“mpg”(每加仑行驶英里数)列设置为我们的目标变量。
数据集还需要做一些预处理,我们先处理一下异常值
结果如下:
“horsepower”和“acceleration”有几个异常值。
这样异常值就没有了
现在数据集已经清理完毕,可以特征选择方法了。
检验相关矩阵
通过查看相关矩阵,我们可以明确哪些特征与目标变量(如每加仑行驶英里数)有强相关性,这有助于预测。同时,这也帮助我们识别那些相互之间关联度高的特征,可能需要从模型中移除一些以避免多重共线性,从而改善模型的性能和准确性。
相关性矩阵表明,cylinders, displacement, horsepower, weight与我们的目标变量(MPG)呈强烈负相关,而车型年份和产地则显示出轻微的正相关。
这有助于我们识别那些对目标变量影响较大的特征,从而在特征选择时做出更明智的决策。
我们先做一个全特征的基础模型:
训练:
结果如下:
这个基础模型,包含所有七个选定的特征,输出的训练分数为0.845,测试分数为0.823。现在,让我们看看是否能在保持或甚至提高这个分数的同时,减少特征的数量。
方差膨胀因子(VIF)
VIF 表示特定特征与数据集中其他特征的相关程度。高 VIF 值表明该特征具有高度的多重共线性,可能是冗余的。通过分析 VIF,我们可以识别并考虑从模型中移除那些可能对模型预测能力影响不大的冗余特征,从而优化模型的性能和准确性。
具有高 VIF 值的特征通常是改善模型准确性的候选特征,可考虑移除。通过减少这些特征,可以降低模型的复杂性,提高其泛化能力,在不牺牲模型性能的前提下,使模型更加简洁有效。
继续调用上面我们写好的训练函数
结果如下:
可以看到训练集分数差别不到,而测试集则有一些增长,说明我们去掉特征后模型的鲁棒性(泛化)得到了提高
Lasso作为特征选择
Lasso回归通常用于正则化,以防止过拟合,这种情况下的模型可能在训练数据上得分很高,但在未见过的测试数据上表现不佳。Lasso还可以作为一种特征选择技术,通过将系数缩减至零,帮助识别最重要的预测变量。这种方法不仅能有效减少模型中的特征数量,还能帮助我们集中关注那些对目标变量有实质性影响的特征。
我们把最小的weight和displacement去除
训练
结果如下:
可以看到效果并不是很理想,这是因为Lasso没有考虑到多重共线性的问题。
Select K-Best
Select K-Best有两种方法
1、f_regression
使用f_regression进行特征选择时,方法会计算每个特征与目标变量之间的相关性程度,并通过F统计量来衡量这种关联的强度。这种方法特别适合于处理连续的特征和目标变量,能够有效地识别出对预测目标变量最有用的特征。选择F统计值最高的K个特征,可以帮助构建一个既简洁又有效的模型。
训练:
得分高表明该特征与目标变量高度相关
评估f_regression特征在R2上的得分
2、mutual_info_regression
使用互信息回归(mutual_info_regression)进行特征选择时,该方法会评估每个特征与目标变量之间的信息共享量。互信息得分高意味着特征与目标变量之间的关系更为密切,这种特征对于预测目标变量非常重要。通过选择互信息得分最高的K个特征,我们可以确保模型包含最有影响力的特征,从而提高模型的预测能力和准确性。
递归特征消除(RFE)
递归特征消除(RFE)通过迭代方式从模型中去除较不重要的特征,评估这些特征对模型性能的影响。它通常依赖于模型系数或特征重要性等指标来决定每次迭代中应去除哪些特征。这一迭代过程持续进行,直到剩下所需数量的特征,确保最终模型中仅保留最相关的预测因子。这种方法有助于优化模型的结构,确保模型的效率和准确性。
测试:
顺序前向和后向选择
- 顺序前向选择(SFS):从一个空的特征集开始,逐步一次添加一个特征到模型中,每一步都选择能最大提高模型性能的特征。
- 顺序后向选择(SBS):从包含所有特征的模型开始,每一步去除一个特征,选择其移除对模型性能影响最小的,直到满足停止标准为止。
这两种方法都是通过迭代的方式精细调整特征集,以达到最佳的模型性能。顺序前向选择适用于从少量特征开始逐步构建模型,而顺序后向选择则适用于从一个全特征模型开始逐步简化。这两种方法都能有效地帮助确定哪些特征对预测目标变量最为重要,从而使得模型既精简又有效。
顺序前向选择
顺序后向选择
通过前向和后向序列特征选择,我们确定了最优特征。
总结
递归特征消除(RFE)、顺序前向选择(SFFS)、和顺序后向选择(SBFS)都表明,‘weight’、‘model year’和‘horsepower’是最重要的特征。仅使用这三个特征,我们就能获得可靠的 R² 分数0.823,与使用七个特征的基础模型相比,其 R² 分数也是0.823。(这些 R² 分数是从未在训练期间使用过的测试数据中获得的。)
这表明通过精确的特征选择,我们能够简化模型而不损失性能,从而提高模型的效率和可解释性。通过减少特征的数量,我们还能减少模型训练和预测所需的计算资源,从而在保持预测质量的同时,提高计算效率。
作者:kaiku