特征选择方法

特征选择

这里对 这一篇文章进行的部分翻译和笔记,是一个向导类型,后面还要继续学习。

1.引言

当我们在现实生活中建立机器学习模型的时候,并不是数据集中的所有特征(变量)都要被用于建立模型的。增加多余的变量会降低模型的泛化能力,并且可能会降低分类器的总体精度(the overall accuracy)。此外,给模型增加越来越多的变量,还会增加模型的整体复杂度。

正如“奥卡姆剃刀“所代表的简约法则一样,对一个问题最好的解释就是该解释包含最少的可能假设(如无必要,勿增实体)。因此,特征选择成为构建机器学习模型中不可缺少的一部分。

下面这些方法基本都可以在sklearn中找到相应的API,网址如下:

sklearn的API

2.目标

机器学习中的特征选择的目标是去得到特征集,从而可以为所研究的现象构建有用的模型。

特征选择技术可以大致分为有监督和无监督两类。有监督:这一类的技术被用于被标记的数据,并且用于辨别相关的特征,以提高有监督模型(分类、回归)的表现。无监督:这类技术用于未被标记的数据。

可以细分四个部分:A. Filter methods B. Wrapper methods C. Embedded methods D. Hybird methods

A. Filter methods

Filter methods 通过单变量的测量数据选取特征的固有属性,而不是通过交叉检验的表现。这些方法更快并且计算开销比Wrapper methods更小。当处理高维数据的时候,利用Filter methods计算成本更小。下面是几种常见的

信息增益(Information Gain)

信息增益计算数据集转换过程中的信息熵的减少。可以通过评估每个变量在目标变量上下文中的信息增益,来进行特征选择。

from sklearn.feature_selection import mutual_info_classif
#信息增益方法
importance = mutual_info_classif(data_training_nonan,label_training)
feature_importance = pd.Series(importance,columns)
feature_importance.plot(kind = 'barh',color = 'teal')
plt.show()
卡方检验(Chi-square Test)

卡方检验适用于数据集中的分类特征(categorical features)。我们计算每一个特征与目标的卡方值,并且选择具有最高卡方值的特征数量。为了正确应用卡方检验数据集中各种特征与目标变量之间的关系,必须满足以下条件:变量必须是分类的,独立抽样的,值的期望频率应大于5。

注意,这里要求是特征非负。

判别分析(Discriminant Analysis)

这也有说是Fisher’s Socre的方法。

Fisher Socre

相关系数(Correlation Coefficient)

相关系数是用来测量两个变量之间的线性关系。通过相关性,我们可以通过一个变量来预测另一个。通过相关系数进行特征选择的逻辑就是好的特征对目标值有着很高的相关性。此外,变量(特征)应该与目标值相关而不应该与其他变量(特征)相关。

如果两个变量是相关的,那么我们可以用其中一个来预测另一个。因此,如果两个特征是相关的,那么模型真正需要的特征只有其中的一个。

当我们计算出特征与目标值之间的相关系数之后,我们需要设定一个阈值,例如0.5,来选择相关性高的特征。然后当我们计算出特征之间的相关系数之后,得到一个n*n的矩阵,对角为1,我们可以得到特征之间的相关性,进一步减少特征。

import seaborn as sns
cor = df_training_nonan.corr()
plt.figure()
sns.heatmap(cor,annot = True)
方差阈值(Variance Threshold)

Variance Threshold是一种简单且基础的特征选择方法。这种方法会移除所有不满足阈值的特征。默认移除所有零方差的特征(即在所有样本中,尤其是对于不同类的样本,该特征的值不变,那么这个特征对模型没用,就移除)。我们认为高方差的特征会有更多的信息,但是注意我们并不是在讨论特征变量之间或者特征与目标值之间的关系。最好的状态就是同一类,该特征方差小,不同类,该特征方差大。

from sklearn.feature_selection import VarianceThreshold

v_threshold = VarianceThreshold(threshold=0)#Features with a training-set variance lower than this threshold will be removed.
v_threshold.fit(data_training_nonan[0:290,:]) 
v_threshold.get_support() #返回一个布尔向量,如果特征值方差不等于零,那么就返回True
Mean Absolute Difference (MAD)

MAD计算与均值的差的绝对值的平均值。方差和MAD度量之间的主要区别是后者缺乏平方。

Dispersion ratio

另一种评价离散情况的是算术平均与几何平均。

在这里插入图片描述
在这里插入图片描述

RM可以当作一种对离散情况的度量。其实方差,MAD,RM这些思想是一样的。

B. Wrapper methods

Wrapper 要求搜索所有可能的特征子集,通过学习模型的表现来评价该特征子集的优劣。该特征选择的方法是基于某一个模型和特定数据集的。通常情况下会比较得到比较好的子集。

Forward Feature Selection

这是一种迭代方法,我们从针对目标的最佳性能变量开始。接下来,我们选择另一个变量,与第一个选择的变量结合使用,它可以提供最佳的性能。这个过程一直持续,直到达到预设的标准。

Backward Feature Elimination

这种方法与Forward Feature Selection方法完全相反。这里,我们从所有可用的特性开始,并构建一个模型。其次,我们从模型中选取给出最佳评价测度值的变量。此过程将继续进行,直到达到预设的标准。

这种方法又叫Sequential Feature Selection method.

Exhaustive Feature Selection

这是对每个特征子集的蛮力评估。这意味着它会尝试所有可能的变量组合,并返回性能最佳的子集。

Recursive Feature Elimination

例如,对一个已经有一个特征子集的模型,REF要做的就是评价每个特征的重要性,然后把最不重要的那一个去掉,循环这个步骤,直到满足特征维度要求。

C. Embedded methods

这些方法综合了wrapper与filter的有点,既考虑特征间的关系,也考虑计算成本。

LASSO Regularization

正则化是对机器学习模型的不同参数添加一个惩罚,以防止过拟合等。在各种不同的正则化方式中,Lasso或者L1可以将一些系数缩小到0.因此这些特征可以被去掉。

随机森林

随机森林是一种集特定数目个决策树的Bagging算法。

这一部分和前面判别分析内容较多,后面深入学习。

决策树

随机森林

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值