特征选择

特征选择常用方法

1. 过滤法Filter

按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。

发散性就是去掉那些取值变化小的特征,一般先进行归一化,然后计算方差,删除那些方差比较小的特征。

相关系数法如下

(1). 互信息(Mutual Information)

互信息(Mutual Information)是衡量随机变量之间相互依赖程度的度量。

假设存在一个随机变量 X ,和另外一个随机变量Y,那么它们的互信息是
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) I(X ; Y)=H(X)-H(X | Y) I(X;Y)=H(X)H(XY)
H(X)是X的信息熵, H(X|Y)是已知Y情况下,X带来的信息熵(条件熵)

从概率角度,互信息是由随机变量X,Y的联合概率分布p(x,y)和边缘概率分布p(x),p(y)得出
I ( X ; Y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ ( p ( x , y ) p ( x ) p ( y ) ) \mathrm{I}(X ; Y)=\sum_{y \in \mathcal{Y}} \sum_{x \in \mathcal{X}} p(x, y) \log \left(\frac{p(x, y)}{p(x) p(y)}\right) I(X;Y)=yYxXp(x,y)log(p(x)p(y)p(x,y))

(2).Speraman Rank相关系数

ρ = 1 − 6 ∑ d i 2 n ( n 2 − 1 ) \rho=1-\frac{6 \sum d_{i}^{2}}{n\left(n^{2}-1\right)} ρ=1n(n21)6di2

其中di = xi - yi表示两个秩之间的差值

n:表示样本的大小

可以理解为将Pearson相关系数把数据先排名,之后按照排名计算出其Pearson相关系数就是Spearman Rank Correction

(3). Pearson相关系数

Pearson相关系数的计算公式, 皮尔森相关系数评估两个连续变量之间的线性关系
ρ X , Y = cov ⁡ ( X , Y ) σ X σ Y = E ( ( X − μ X ) ( Y − μ Y ) ) σ X σ Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 ( Y ) \rho_{X, Y}=\frac{\operatorname{cov}(X, Y)}{\sigma_{X} \sigma_{Y}}=\frac{E\left(\left(X-\mu_{X}\right)\left(Y-\mu_{Y}\right)\right)}{\sigma_{X} \sigma_{Y}}=\frac{E(X Y)-E(X) E(Y)}{\sqrt{E\left(X^{2}\right)-E^{2}(X)} \sqrt{E\left(Y^{2}\right)-E^{2}(Y)}} ρX,Y=σXσYcov(X,Y)=σXσYE((XμX)(YμY))=E(X2)E2(X) E(Y2)E2(Y) E(XY)E(X)E(Y)

(4).距离相关系数

距离相关系数是为了克服Pearson相关系数的弱点而生的。 用下面式子定义两变量的相关性。
d ^ c o r r ⁡ ( u , v ) = d ^ cov ⁡ ( u , v ) dcov ⁡ ( u , u ) d cov ⁡ ( v , v ) \operatorname{\hat{d}corr}(u, v)=\frac{\hat{d} \operatorname{cov}(u, v)}{\sqrt{\operatorname{dcov}(u, u) d \operatorname{cov}(v, v)}} d^corr(u,v)=dcov(u,u)dcov(v,v) d^cov(u,v)
d ^ cov ⁡ 2 ( u , v ) = S 1 ^ + S 2 ^ − 2 S 3 ^ \hat{d} \operatorname{cov}^{2}(u, v)=\widehat{S_{1}}+\widehat{S_{2}}-2 \widehat{S_{3}} d^cov2(u,v)=S1 +S2 2S3 , S 1 ^ , S 2 ^ 和 / S 3 \widehat{S_{1}}, \widehat{S_{2}} 和 / \sqrt{S_{3}} S1 ,S2 /S3 分别表示为
S ^ 1 = 1 n 2 ∑ i = 1 n ∑ j = 1 n ∥ u i − u j ∥ d u ∥ v i − v j ∥ d v \widehat{S}_{1}=\frac{1}{n^{2}} \sum_{i=1}^{n} \sum_{j=1}^{n}\left\|u_{i}-u_{j}\right\|_{d_{u}}\left\|v_{i}-v_{j}\right\|_{d_{v}} S 1=n21i=1nj=1nuiujduvivjdv

S 2 ^ = 1 n 2 ∑ i = 1 n ∑ j = 1 n ∥ u i − u j ∥ d u 1 n 2 ∑ i = 1 n ∑ j = 1 n ∥ v i − v j ∥ d v \widehat{S_{2}}=\frac{1}{n^{2}} \sum_{i=1}^{n} \sum_{j=1}^{n}\left\|u_{i}-u_{j}\right\|_{d_{u}} \frac{1}{n^{2}} \sum_{i=1}^{n} \sum_{j=1}^{n}\left\|v_{i}-v_{j}\right\|_{d_{v}} S2 =n21i=1nj=1nuiujdun21i=1nj=1nvivjdv

S 3 ^ = 1 n 3 ∑ i = 1 n ∑ j = 1 n ∑ l = 1 n ∥ u i − u l ∥ d u ∥ v j − v l ∥ d v \widehat{S_{3}}=\frac{1}{n^{3}} \sum_{i=1}^{n} \sum_{j=1}^{n} \sum_{l=1}^{n}\left\|u_{i}-u_{l}\right\|_{d_{u}}\left\|v_{j}-v_{l}\right\|_{d_{v}} S3 =n31i=1nj=1nl=1nuiulduvjvldv

同理计算 d ^ cov ⁡ ( u , u ) \hat{d} \operatorname{cov}(u, u) d^cov(u,u)

kendall相关系数

相关系数法综合的一些想法

一般可以多选取几类相关系数,将它们用Rank-sum ratio(数学建模现学现用。。)综合一下。

2. 包裹法(Wrapper)

递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练。

sklearn官方解释:对特征含有权重的预测模型(例如,线性模型对应参数coefficients),RFE通过递归减少考察的特征集规模来选择特征。首先,预测模型在原始特征上训练,每个特征指定一个权重。之后,那些拥有最小绝对值权重的特征被踢出特征集。如此往复递归,直至剩余的特征数量达到所需的特征数量。

RFECV 通过交叉验证的方式执行RFE,以此来选择最佳数量的特征:对于一个数量为d的feature的集合,他的所有的子集的个数是2的d次方减1(包含空集)。指定一个外部的学习算法,比如SVM之类的。通过该算法计算所有子集的validation error。选择error最小的那个子集作为所挑选的特征

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression

#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_select为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

3.嵌入法(Embedding)

先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。

单变量特征选择方法独立的衡量每个特征与响应变量之间的关系,另一种主流的特征选择方法是基于机器学习模型的方法。有些机器学习方法本身就具有对特征进行打分的机制,或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。其实Pearson相关系数等价于线性回归里的标准化回归系数。

比如GBDT中的Lgb,自动可以计算出各个因素对于最终要预测值的贡献程度,贡献程度越高,该因素越重要。

Attention:选取的特征可能不是普适的,存在只适用于该模型的可能,比如用lgb选取的特征可能不是对于线性回归的最优特征。

参考

机器学习:特征选择(feature selection)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值