目录:
视频: R语言第17期 :回归模型比较和变量筛选 2024
在Python中选择正确的变量可以减少数据科学中的学习过程,信息)可以影响学习者的估计。因此,变量选择可以有效地减少预测方差。为了在训练中只涉及有用的变量并省略多余的变量,可以使用下面的方法:
-
单变量方法: 选择与目标结果最相关的变量。
<!贪婪或向后的方法: -
只保留可以从学习过程中删除而不损害其性能的变量。 通过单变量度量选择
如果您决定通过与其目标相关联的级别来选择变量,则SelectPercentile类将提供一个自动过程,仅保留最佳关联要素的某个百分比。可用的关联指标是
-
f_classif:仅用于分类目标,并基于方差分析(ANOVA)统计检验。 chi2:对分类目标执行卡方统计,对于预测变量与其目标之间的非线性关系较不明显。
-
<!当评估分类问题的候选者时,f_classif和chi2倾向于提供相同的最高变量集合。测试关联指标的选择仍然是一个很好的做法。
-
SelectPercentile除了可以直接选择最重要的百分比关联外,还可以对最佳变量进行排名,以便更容易地决定排除某个特征参与学习过程的百分比。类SelectKBest类似于它的功能,但它选择了前k个变量,其中k是一个数字,而不是百分位数。从sklearn
。 feature_selection从sklearn中导入SelectPercentile。 feature_selection import f_regression Selector_f = SelectPercentile(f_regression,percentile = 25)Selector_f。 fit(X,y)for n,s in zip(boston。feature_names,Selector_f。scores_):print'F-score:%3。 (s,n)F分数:88. 15对于特征CRIM F得分:75. 26对于特征ZN F得分:153.35对于特征INDUS F得分:15.97对于特征%功能CHAS F得分:112.59功能NOX F得分:471.85功能RM F得分:83。48对于特征AGE F得分:33.对于特征DIS F得分为58.58对于特征RAD F得分为141.76对于特征TAX F得分为175.对于特征PTRATIO F得分为11.63。 05功能B F-score:601. 62功能LSTAT
使用关联输出级别帮助您为机器学习模型选择最重要的变量,但是您应该注意以下可能的问题: >一些高度相关的变量也可能是高度相关的,引入重复的信息,这在学习过程中起到噪音的作用。某些变量可能会受到惩罚,特别是二进制变量(变量指示状态或特征,当值为1时,值为1,否则为0)。例如,请注意,输出显示二进制变量CHAS与目标变量关联最少(但您从前面的示例中了解到,它在交叉验证阶段具有影响力)。单变量选择过程可以给你一个真正的优势,当你有大量的变量可供选择时,所有其他方法在计算上是不可行的。最好的方法是将SelectPercentile的值减少一半或更多的可用变量,将变量数量减少到一个可管理的数量,从而允许使用更复杂和更精确的方法,如贪婪搜索。
使用贪婪搜索
当使用单变量选择时,您必须自己决定要保留多少个变量:贪婪选择会根据对学习模型的有效贡献,自动减少参与学习模型的特征的数量性能测量由误差测量。适合数据的RFECV类可以为您提供关于有用特征数量的信息,并将它们指向您,并通过方法转换将X数据自动转换为简化变量集合,如下面的例子:sklearn中的
。 feature_selection import RFECV selector = RFECV(estimator = regression,cv = 10,scoring =“mean_squared_error”)选择器。 (X,y)打印(“最佳特征数量:%d”%选择器。n_特征_)最佳特征数量:6
-
可以通过调用RFECV的属性support_获取最佳变量集合的索引上课后,你适应它。打印波士顿。 feature_names [选择器。请注意,CHAS现在包含在最具预测性的特征之中,与单变量搜索的结果形成对比,RFECV方法可以检测变量是重要的,不管它是二元的,分类的还是数字的,因为它直接评估特征在预测中所扮演的角色
-
与单变量方法相比,RFECV方法当然更有效率,因为它考虑高度相关的特征,并且被调整以优化评估测量(通常不是卡方或F分数)。作为一个贪婪的过程,它在计算上要求很高,并且可能只接近最好的一组预测器。由于RFECV从数据中学习到最好的一组变量,所以选择可能会过度,这是所有其他机器学习算法发生的情况。在不同的训练数据样本上尝试RFECV可以确定使用的最佳变量。