机器学习AI算法工程  公众号:datayx



特征选择方法初识:

1、为什么要做特征选择

主要有三种方法:


1、Filter方法

其主要思想是:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。

主要的方法有:

  • Chi-squared test(卡方检验)
  • information gain(信息增益)
  • correlation coefficient scores(相关系数)


2、Wrapper方法

其主要思想是:将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题,这里有很多的优化算法可以解决,尤其是一些启发式的优化算法,如GA,PSO,DE,ABC等。

主要方法有:(递归特征消除算法)

3、Embedded方法

其主要思想是:在模型既定的情况下学习出对提高模型准确性最好的属性。这句话并不是很好理解,其实是讲在确定模型的过程中,挑选出那些对模型的训练有重要意义的属性。

简单易学的机器学习算法——岭回归(Ridge Regression)”,岭回归就是在基本线性回归的过程中加入了正则项

总结以及注意点

这篇文章中最后提到了一点就是用特征选择的一点Trap。个人的理解是这样的,特征选择不同于特征提取,特征和模型是分不开,选择不同的特征训练出的模型是不同的。在机器学习=模型+策略+算法的框架下,特征选择就是模型选择的一部分,是分不开的。这样文章最后提到的特征选择和交叉验证就好理解了,是先进行分组还是先进行特征选择。

答案是当然是先进行分组,因为交叉验证的目的是做模型选择,既然特征选择是模型选择的一部分,那么理所应当是先进行分组。如果先进行特征选择,即在整个数据集中挑选择机,这样挑选的子集就具有随机性。

我们可以拿正则化来举例,正则化是对权重约束,这样的约束参数是在模型训练的过程中确定的,而不是事先定好然后再进行交叉验证的。

特征选择代码地址

关注微信公众号 datayx  然后回复 特征选择  即可获取。

AI项目体验地址 https://loveai.tech

特征选择方法具体分细节总结:

1 去掉取值变化小的特征 Removing features with low variance

2 单变量特征选择 Univariate feature selection卡方检验等方式对特征进行测试。

2.1 Pearson相关系数 Pearson Correlation

2.2 互信息和最大信息系数 Mutual information and maximal information coefficient (MIC)

2.3 距离相关系数 (Distance correlation)

2.4 基于学习模型的特征排序 (Model based ranking)决策树、随机森林)、或者扩展的线性模型等。基于树的方法比较易于使用,因为他们对非线性关系的建模比较好,并且不需要太多的调试。但要注意过拟合问题,因此树的深度最好不要太大,再就是运用交叉验证

3 线性模型和正则化

正则化就是把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提高泛化能力。损失函数由原来的E(X,Y)变为E(X,Y)+alpha||w||,w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),||·||一般是L1或者L2范数,alpha是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge。

3.2 L1正则化/Lasso

3.3 L2正则化/Ridge regression

4 随机森林

4.1 平均不纯度减少 mean decrease impurity基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。当训练决策树的时候,可以计算出每个特征减少了多少树的不纯度。对于一个决策树森林来说,可以算出每个特征平均减少了多少不纯度,并把它平均减少的不纯度作为特征选择的值。

4.2 平均精确率减少 Mean decrease accuracy直接度量每个特征对模型精确率的影响。主要思路是打乱每个特征的特征值顺序,并且度量顺序变动对模型的精确率的影响。很明显,对于不重要的变量来说,打乱顺序对模型的精确率影响不会太大,但是对于重要的变量来说,打乱顺序就会降低模型的精确率。

5 两种顶层特征选择算法回归和SVM,在不同的子集上建立模型,然后汇总最终确定特征得分。

5.1 稳定性选择 Stability selection

5.2 递归特征消除 Recursive feature elimination (RFE)

互信息Mutual Informantion

 yj对xi的互信息定义为后验概率与先验概率比值的对数。

互信息越大,表明yj对于确定xi的取值的贡献度越大。

实际上,互信息衡量的是xi与y的独立性,如果他俩独立,则互信息发值为零,则xi与y不相关,则可以剔除xi,反之,如果互信息发值越大则他们的相关性越大

基于期望交叉熵的特征项选择

教你如何做特征选择_正则化

1初始化特征集F为空

2扫描i从1到n,

  如果第i个特征不再F中,那么将特征i和F放到一起Fi在只使用Fi中特征的情况下,利用交叉验证来得到Fi的错误率。

3从上步中得到的n个Fi中选择出错误率最小的Fi,更新F为Fi

  如果F中的特征数达到n或者预设定的阈值(如果有),那么输出整个搜索过程中最好的F,没达到转到2


教你如何做特征选择_特征选择_02


阅读过本文的人还看了以下:

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

教你如何做特征选择_互信息_03

长按图片,识别二维码,点关注