机器学习 特征选择

特征选择

1、简介

数据预处理完成以后,特征比较多时,就需要对特征进行选择。 使有意义的特征输入模型进行训练。 特征选择通常来说从两个方面入手:

  • 特征是否发散:特征如果不发散, 方差很小接近于0, 就意味着这个特征在所有样本中的分布是没有差异的, 说明这个特征对于样品区分没有贡献。
  • 特征与目标相关项: 对于分类问题, 特征与分类目标相关性越大说明特征对于分类问题作用也就越大。

特征选择的方法:

  • Filter: 过滤法, 通过给定的方差阈值对特征进行分类, 只保留方差过阈值的特征。
  • Wrapper: 包装发, 根基后续模型的学习效果, 目标函数, 每次选取若干或者排除若干特征。 来寻找最优特征。
  • Embedded: 嵌入法, Filter与Wrapper 的结合。 先使用某些机器学习算法和模型训练,得到各个特征的权值洗漱,根据系数大小选择特征。例如使用RandomForest.

在sklearn中可以使用feature_selection库来进行特征选择。

2、使用方法说明

2.1 Filter法

2.1.1 方差选择法

方差选择法需要计算各特征的方差,然后根据给定的方差阈值选择特征。

from sklearn.feature_selection import VarianceThreshold
selected_feature = VarianceThreshold(threshold=3).fit_transform(features)

这里的threshold根据不同的feature应该有所不同, 所以需要对于样本有一定的了解。 

2.1.2 卡方检验法

对于每一个特征与目标分类标签进行卡方检验,根据得出的chi2统计和p-value对特征进行选择。

from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest

selected_feature = SelectKBest(chi2, k=2).fit_transform(features, target)

2.2 Wrapper法

2.2.1 递归特征消除法

递归特征消元法需要给定一个预测模型(基模型),然后使用最初的特征进行模型训练得到每一个特征的权值, 然后丢弃权值最小的的特征,重新训练模型。 如此往复直到得到所需要的数量时停止。
sklearn.feature_selection中的RFE类实现。
代码例子中,选取逻辑回归模型作为基模型。

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
selected_feature = RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(features, target)

2.3 Embedded法

2.3.1 基于惩罚项的特征选择法

使用带惩罚项的基模型, 除了筛选特征,同时进行降维。 使用feature_selection库的SelectFromModel类结合L1惩罚项的逻辑回归模型实现:

from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
selected_feature = SelectFromModel(estimator=LogisticRegression(penalty="l1", C=0.1)).fit_transform(features, target)

2.3.2 基于树模型的特征选择

通过树模型的GBDT作为基模型进行特征选择, 使用SelectFromModel结合GBDT模型实现:

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
selected_feature = SelectFromModel(estimator=GradientBoostingClassifier()).fit_transform(features, target)

2.4 总结

所属方式 说明
VarianceThreshold Filter 方差选择法
SelectKBest Filter 可选关联系数、卡方校验、最大信息系数作为得分计算的方法
RFE Wrapper 递归地训练基模型,将权值系数较小的特征从特征集合中消除
SelectFromModel Embedded 训练基模型,选择权值系数较高的特征

 原文大神博客

猜你喜欢

转载自blog.csdn.net/u012089823/article/details/88727411