特征选择与降维

特征选择与降维

【直接从word复制过来的...格式真是惨不忍睹....阿西吧以后再改吧...o(╥﹏╥)o】

参考资料:

  1. 西瓜书《机器学习》
  2. Sklearn官方文档(中文版:https://www.cnblogs.com/stevenlk/p/6543628.html

博客

https://www.cnblogs.com/stevenlk/p/6543628.html

官网

http://scikit-learn.org/stable/modules/feature_selection.html#feature-selection

知乎

https://www.zhihu.com/question/28641663/answer/110165221

文章

http://dataunion.org/14072.html

周志华《机器学习》

 

 

一、目的

  1. 在高维情形下出现数据样本稀疏、距离计算困难等维数灾难问题,需要降维(减少过拟合)
  2. 去除不相关的特征,可以降低学习任务的难度、速度,增强对特征和特征值之间的理解。(可解释性)

 

二、分析

  1. 多余特征

·冗余特征:包含信息能从其他信息中推演出来(长,宽与面积)

·无关特征:对模型训练没有效果(与标签无关)

 

--------《机器学习》

·假定初始的特征集合包含了所有的重要信息(可能有冗余信息),我们需要找出最好的的特征子集,(对所有子集排列组合是不可取的)那么需要考虑的问题就是:

  1. 如何评价子集的好坏------“子集评价”。例:信息熵,将训练数据集根据特征子集进行划分 VS 样本标记信息对训练数据集进行划分
  2. 如何根据评价结果,获取下一个候选子集----“子集搜索”。例:前向搜索(逐渐增加特征),后向搜索(逐渐减少无关特征)

 

--------- 《sklearn官方文档》

·选择有意义的特征

(1)特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。

(2)特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除移除低方差法外,其他方法均从相关性考虑。

 

三、方法论

1   Filter:过滤法

先对特征集进行特征选择,然后再训练学习器

 

·特点:特征选择过程与后续学习器无关,直接“过滤”特征

·方法:对各个特征进行评分,设定阈值或者待选择阈值的个数,来选择特征

 

1.1 移除低方差的特征 (Removing features with low variance):

·假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。

·当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用。

·可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。

·与标签无关

 

1.2 单变量特征选择 (Univariate feature selection)

·单变量特征选择的原理是分别单独的计算每个变量的某个统计指标,根据该指标来判断哪些指标重要,剔除那些不重要的指标。(与标签有关的指标)

·对于分类问题(y离散),可采用:

    卡方检验,f_classif, mutual_info_classif,互信息

·对于回归问题(y连续),可采用:

    皮尔森相关系数,f_regression, mutual_info_regression,最大信息系数

  • 卡方(Chi2)检验:卡方检验是检验定性自变量对定性因变量的相关性
  • F检验:用于评估两个随机变量的线性相关性
  • Pearson相关系数 (Pearson Correlation):衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关,+1表示完全的正相关,0表示没有线性相关
  • 互信息和最大信息系数 (Mutual information and maximal information coefficient (MIC)
  • 距离相关系数 (Distance Correlation):对P系数的改良
  • 基于模型的特征排序 (Model based ranking):直接针对每个单独的特征和标签基于机器学习算法建立预测模型,交叉验证计算
  • Relief方法(机器学习书):给定训练集,对每个特征,同类的“猜中近邻”↓与不同类的“猜错近邻”↑,∑计算其“相关统计量”,设定阈值,从大到小选取“相关统计量”(和大于阈值)

 

2 Wrapper:包裹式选择

直接把最终将要使用的学习器的性能作为特征子集的评价准则,选择的是“量身定做”的特征子集

·特点:多个特征联合评价,对子集进行模型训练和评价

  • LVW(拉斯维加斯方法):随机产生特征子集,使用交叉验证来估计学习器的误差,当在新特征子集上表现的误差更小,或者误差相当但包含的特征更少,就将新特征子集保留下来。
  • 递归特征消除 (Recursive Feature Elimination):使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练。

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

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

 

3  Embedded:嵌入法

 

·特点:前两种方法,是将“子集评价”与“子集选择”分开的,而嵌入法将两者融为一体,在同一个优化过程中完成,在学习训练的过程中,自动进行了特征选择

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

 

-------《机器学习》

对给定样本与标签,考虑最简单的线性回归模型,以平方误差∑(y-WTX)2为损失函数,那目标就是最优化平方误差!min∑(y-WTX)2

为了防止过拟合,会引入正则化项:

L2范数:min∑(y-WTX)2 +C||W||22

L1范数:min∑(y-WTX)2 +C||W||1

 

------- 《sklearn》

有些机器学习方法本身就具有对特征进行打分的机制,或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。其实Pearson相关系数等价于线性回归里的标准化回归系数。

 

SelectFromModel 作为meta-transformer,能够用于拟合后任何拥有coef_或feature_importances_ 属性的预测模型。 如果特征对应的coef_ 或 feature_importances_ 值低于设定的阈值threshold,那么这些特征将被移除。除了手动设置阈值,也可通过字符串参数调用内置的启发式算法(heuristics)来设置阈值,包括:平均值(“mean”), 中位数(“median”)以及他们与浮点数的乘积,如”0.1*mean”。

 

------ 理解就是:设定一个最优化目标,得到满足此目标的W解,对特征按w从大到小排列; 当使用L1范数时,得到稀疏解,即含有w为0项

 

3.1基于L1(L2)的特征选择 (L1-based feature selection)

使用L1范数作为惩罚项的线性模型(Linear models)会得到稀疏解:大部分特征对应的系数为0。

当你希望减少特征的维度以用于其它分类器时,可以通过 feature_selection.SelectFromModel 来选择不为0的系数。特别指出,常用于此目的的稀疏预测模型有

linear_model.Lasso(回归),

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso

linear_model.LogisticRegression :

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

svm.LinearSVC(分类):

http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html#sklearn.svm.LinearSVC

对于SVM和LogisticRegression,参数C控制稀疏性:C越小,被选中的特征越少。

对于Lasso,参数alpha越大,被选中的特征越少

实际上,L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。故,可结合L2惩罚项来优化。具体操作为:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值。

L1恢复和压缩感知 (L1-recovery and compressive sensing):

对于一个好的alpha值,在满足特定条件下, Lasso 仅使用少量观测值就能够完全恢复出非零的系数。特别地,样本的数量需要“足够大”,否则L1模型的表现会充满随机性,所谓“足够大”取决于非零系数的数量,特征数量的对数,噪声的数量,非零系数的最小绝对值以及设计矩阵X的结构。此外,设计矩阵必须拥有特定的属性,比如不能太过相关(correlated)。 对于非零系数的恢复,还没有一个选择alpha值的通用规则 。alpha值可以通过交叉验证来设置(LassoCV or LassoLarsCV),尽管这也许会导致模型欠惩罚(under-penalized):引入少量非相关变量不会影响分数预测。相反BIC (LassoLarsIC) 更倾向于设置较大的alpha值。

3.2随机稀疏模型 (Randomized sparse models)

基于L1的稀疏模型的局限在于,当面对一组互相关的特征时,它们只会选择其中一项特征。为了减轻该问题的影响可以使用随机化技术,通过多次重新估计稀疏模型来扰乱设计矩阵,或通过多次下采样数据来统计一个给定的回归量被选中的次数。

==稳定性选择 (Stability Selection)==RandomizedLasso 实现了使用这项策略的Lasso,RandomizedLogisticRegression 使用逻辑回归,适用于分类任务。要得到整个迭代过程的稳定分数,你可以使用 lasso_stability_path。

注意到对于非零特征的检测,要使随机稀疏模型比标准F统计量更有效, 那么模型的参考标准需要是稀疏的,换句话说,非零特征应当只占一小部分

3.3基于树的特征选择 (Tree-based feature selection)

基于树的预测模型(见 sklearn.tree 模块,森林见 sklearn.ensemble 模块)能够用来计算特征的重要程度,因此能用来去除不相关的特征

树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型。

 

四、总结

Filter:过滤法——单独对各个特征进行评分,最快

Wrapper:包装法——随机选取子集,交叉检验根据预测效果

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

 

五、其他

  1. 稀疏表示与字典学习

·适当的稀疏便于存储、便于训练、使大多数问题变得线性可分

·将数据变得恰当稀疏----这种稀疏不是表现为某一列或某一行全为0

·例如文档分类中的词频统计

------ 那就是对每个样本只选取字典里的项进行统计,可能有的有这项特征,有的没有;感觉大部分特征矩阵本身就是稀疏表示的,字典维度的减小实际也是选特征降维的过程(公式跟Embedded有点像,只是权重表达为0和1)

 

    2. 压缩感知

·奈奎斯特采样,以少量信号恢复全部信号

·采样矩阵Y,原始矩阵X,Y=QX,Q为观测矩阵----例:图像压缩

·例:客户对书的喜好程度评分,有空白值

------ 基于部分信息恢复全部信息--矩阵补全技术(最小化核范数);是不是可以用于空白值补全;与相似性假设(用户相似度)有没有关系?

 

    3. 评价准则

Dash等人在总结Ben-Bassat等人、Doak等人的工作后将评价准则分为五类:距离度量(Distance Measure)、信息增益度量(Information Gain Measure)、依赖性度量(Dependence Measure)、一致性度量(Consistency Measure)和分类器错误率度量(Classifier Error Rate Measure)。

(1)距离度量:距离度量一般认为是差异性或者分离性的度量,常用的距离度量方法有欧式距离等。对于一个二元分类问题,对于两个特征f1f1和f2f2,如果特征f1f1引起的两类条件概率差异大于特征f2f2,则认为特征f1f1优于特征f2f2。

(2)信息增益度量:特征f的信息增益定义为使用特征f的先验不确定性与期望的后验不确性之间的差异。若特征f1f1的信息增益大于特征f2f2的信息增益,则认为特征f1f1优于特征f2f2。

(3)依赖性度量:依赖性度量又称为相关性度量(Correlation Measure)、通常可采用皮尔逊相关系数(Pearson correlation coefficient)来计算特征f与类别C之间的相关度,若特征f1f1与类别C之间的相关性大于特征f2f2与类别C之间的相关性,则认为特征f1f1优于特征f2f2。同样也可以计算得到属性与属性之间的相关度,属性与属性之间的相关性越低越好。

(4)一致性度量:假定两个样本,若它们的特征值相同,且所属类别也相同,则认为它们是一致的:否则,则称它们不一致。一致性常用不一致率来衡量,其尝试找出与原始特征集具有一样辨别能力的最小的属性子集。

(5)分类器错误率度量:该度量使用学习器的性能作为最终的评价阈值。它倾向于选择那些在分类器上表现较好的子集。

以上5种度量方法中,距离度量(Distance Measure)、信息增益度量(Information Gain Measure)、依赖性度量(Dependence Measure)、一致性度量(Consistency Measure)常用于过滤式(filter);

分类器错误率度量(Classifier Error Rate Measure)则用于包裹式(wrapper)

猜你喜欢

转载自blog.csdn.net/whether_you/article/details/81080281