版权声明:本文为CSDN博主「happy1yao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41940752/article/details/98469595
————————————————
1,特征工程又包含了Feature Selection(特征选择)、Feature Extraction(特征提取)和Feature construction(特征构造)等子问题。
2.特征选择的目的
在实际项目中,我们可能会有大量的特征可使用,有的特征携带的信息丰富,有的特征携带的信息有重叠,有的特征则属于无关特征,如果所有特征不经筛选地全部作为训练特征,经常会出现维度灾难问题,甚至会降低模型的准确性,如果只选择所有特征中的关键特征构建模型,那么可以大大减少学习算法的运行时间,也可以增加模型的可解释性。
1数据预处理后,先排除取值变化很小的特征;
2使用单特征选择法排除部分特征;
3PCA(主成分分析)和LDA(线性判别)等方法进行特征降维;
4使用正则化线性模型选择法、随机森林选择法或者顶层特征选择法进一步进行特征筛选。
二、特征选择方法
1.Filter(过滤式)
卡方检验
Relief
信息增益)互信息方法、最大信息系数方法
相关系数)距离相关系数 Pearson相关系数
2.Wrapper方法(封装式)
递归特征消除RFE
LASSO Ridge 逐步
3.Embedded方法(嵌入式)
1.Filter(过滤式)
先进行特征选择,然后去训练学习器,所以特征选择的过程与学习器无关。相当于先对特征进行过滤操作,然后用特征子集来训练分类器。对每一维特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该特征的重要性,然后依据权重排序。
1.1主要方法:
Chi-squared test(卡方检验)
Information gain(信息增益)互信息方法、最大信息系数方法
Correlation coefficient scores(相关系数)距离相关系数 Pearson相关系数
Relief
1.2优缺点
优点:运行速度快,是一种非常流行的特征选择方法。
缺点:无法提供反馈,特征选择的标准/规范的制定是在特征搜索算法中完成,学习算法无法向特征搜索算法传递对特征的需求。另外,可能处理某个特征时由于任意原因表示该特征不重要,但是该特征与其他特征结合起来则可能变得很重要。
1.3实现
实现一:去掉取值变化小的特征
该方法一般用在特征选择前作为一个预处理的工作,即先去掉取值变化小的特征,然后再使用其他特征选择方法选择特征。 考察某个特征下,样本的方差值,可以认为给定一个阈值,抛弃哪些小于某个阈值的特征。
离散型变量:假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。
连续型变量:需要将连续变量离散化之后才能用。
而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。
实现二:单变量特征选择
单变量特征选择方法独立的衡量每个特征与响应变量之间的关系,单变量特征选择能够对每一个特征进行测试,衡量该特征和响应变量之间的关系,根据得分扔掉不好的特征。该方法简单,易于运行,易于理解,通常对于理解数据有较好的效果(但对特征优化、提高泛化能力来说不一定有效);这种方法有许多改进的版本、变种。
(1)Pearson相关系数
(2)互信息和最大信息系数(Mutual information and maximal information coefficient)
如果变量不是独立的,那么我们可以通过考察联合概率分布与边缘概率分布乘积之间的 Kullback-Leibler 散度来判断它们是否“接近”于相互独立。
1)互信息方法
使用前提假设:特征间相互独立、离散型特征
熵H(Y)与条件熵H(Y|X)之间的差称为互信息,互信息与条件熵之间的关系:
其实,这就是ID3决策树的特征选择规则。
互信息法也是评价定性自变量对定性因变量的相关性的,但是并不方便直接用于特征选择:
它不属于度量方式,也没有办法进行归一化,在不同的数据上的结果无法做比较。
只能用于离散型特征的选择,连续型特征需要先进行离散化才能用互信息进行特征选择,而互信息的结果对离散化的方式很敏感(即分段阈值的选择对结果影响较大)。
2)最大信息系数方法
由于互信息法并不方便直接用于特征选择,因此引入了最大信息系数。最大信息数据首先寻找一种最优的离散方式,然后把互信息取值转换成一种度量方式,取值区间为[0,1]。
(3)距离相关系数(Distance correlation)
距离相关系数是为了克服Pearson相关系数只能衡量线性相关性而不能衡量非线性关系的弱点而生的。
1)原理介绍
(5)卡方检验
1)卡方值描述两个事件的独立性或者描述实际观察值与期望值的偏离程度。CHI值越大,说明两个变量越不可能是独立无关的,也就是说CHI值越大,两个变量的相关程度也越高。
a. 对于特征变量x1,x2,…,xn,以及分类变量y。只需要计算CHI(x1,y)、CHI(x2,y)、…、CHI(xn,y),并按照CHI的值从大到小将特征排序。
b. 选择合适的阈值,大于阈值的特征留下,小于阈值的特征删除。这样筛选出一组特征子集就是输入模型训练的特征。
2)局限性:只适用于分类问题中离散型特征筛选,不能用于分类问题中连续型特征的筛选,也不能用于回归问题的特征筛选
#导入sklearn库中的SelectKBest和chi2
from sklearn.feature_selection import SelectKBest ,chi2
#选择相关性最高的前5个特征
X_chi2 = SelectKBest(chi2, k=5).fit_transform(X, y)
X_chi2.shape
输出:(27, 5)
(6)Relief