特征选择 Filter
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
notion image
 
  • 最简单的方法是方差筛选。方差越大的特征,可以认为它是比较有用的。如果方差较小,比如小于1,那么这个特征可能对算法作用没有那么大。最极端的,如果某个特征方差为0,即所有的样本该特征的取值都是一样的,那么它对模型训练没有任何作用,可以直接舍弃。
  • 相关系数,这个主要用于输出连续值的监督学习算法中。分别计算所有训练集中各个特征与输出值之间的相关系数,设定一个阈值,选择相关系数较大的部分特征。
  • 假设检验,比如卡方检验。卡方检验可以检验某个特征分布和输出值分布之间的相关性。比粗暴的方差法好用。在sklearn中,可以使用chi2这个类来做卡方检验得到所有特征的卡方值与显著性水平P临界值,可以给定卡方值阈值, 选择卡方值较大的部分特征。除了卡方检验,还可以使用F检验和t检验,它们都是使用假设检验的方法,只是使用的统计分布不是卡方分布,而是F分布和t分布而已。在sklearn中,有F检验的函数f_classiff_regression,分别在分类和回归特征选择时使用。
  • 互信息,即从信息熵的角度分析各个特征和输出值之间的关系评分。互信息值越大,该特征和输出值之间的相关性越大,越需要保留。在sklearn中可以使用mutual_info_classif(分类)和mutual_info_regression(回归)来计算各个输入特征和输出值之间的互信息。
在没有什么思路的时候,可以优先使用卡方检验和互信息来做特征选择

方差选择法

使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征:
特征选择 Wrapper
type
status
date
slug
summary
tags
category
icon
password
Property
notion image
 
包装法的解决思路没有过滤法这么直接,它会选择一个目标函数来一步步的筛选特征。
最常用的包装法是递归消除特征法(recursive feature elimination,RFE),递归消除特征法使用一个机器学习模型来进行多轮训练,每轮训练后,消除若干权值系数的对应的特征,再基于新的特征集进行下一轮训练。
以经典的SVM-RFE算法来讨论这个特征选择的思路:这个算法以支持向量机来做RFE的机器学习模型选择特征。它在第一轮训练的时候,会选择所有的特征来训练,得到了分类的超平面 后,如果有 个特征,那么RFE-SVM会选择出 中分量的平方值最小的那个序号对应的特征,将其排除,在第二类的时候,特征数就剩下 个了,继续用这个特征和输出值来训练SVM,同样的,去掉最小的那个序号对应的特征。以此类推,直到剩下的特征数满足需求为止。

稳定选择(Stability selection)

稳定性选择是一种基于二次抽样和选择算法相结合较新的方法, 选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复, 最终汇总特征选择结果。比如可以统计某个特征被认为是重要特征的频率 (被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下, 重要特征的得分会接近 ,稍微弱一点的特征得分会是非0的数, 而最无用的特征得分将会接近于0 。
 

递归特征消除法 (RFE)

递归特征消除的主要思想是反复的构建模型(如SVM或者回归模型)然后选出最差的(或者最好的)的特征(可以根据系数来选),把选出来的特征放到一边,然后在剩余的特征上重复这个过程,直到所有特征都遍历了。这个过程中特征被消除的次序就是特征的排序。因此,这是一种寻找最优特征子集的贪心算法。
步骤:
特征选择 Embedded
type
status
date
slug
summary
tags
category
icon
password
Property
 
notion image
 
嵌入法也是用机器学习的方法来选择特征,但是它和RFE的区别是它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。在sklearn中,使用SelectFromModel函数来选择特征。
最常用的是使用L1正则化和L2正则化来选择特征。正则化惩罚项越大,那么模型的系数就会越小。当正则化惩罚项大到一定的程度的时候,部分特征系数会变成0,当正则化惩罚项继续增大到一定程度时,所有的特征系数都会趋于0。 一部分特征系数会更容易先变成0,这部分系数就是可以筛掉的,也就是说选择特征系数较大的特征。常用的L1正则化和L2正则化来选择特征的基学习器是逻辑回归。
此外也可以使用决策树或者GBDT。是不是所有的机器学习方法都可以作为嵌入法的基学习器呢?也不是,一般来说,可以得到特征系数coef或者可以得到特征重要度(feature importances)的算法才可以做为嵌入法的基学习器。

基于惩罚项的特征选择法

查看线性回归的特征重要性

可以在回归数据集上拟合一个线性回归模型,并检索包含为每个输入变量找到的系数的coeff_属性,这些系数可以为粗略的特征重要性评分提供基础。
notion image
 
特征抽取 奇异值分解SVD
type
status
date
slug
summary
tags
category
icon
password
Property

原理

特征值和特征向量

SVD

SVD几何解释

 

SVD计算举例

SVD的一些性质

SVD用于PCA

 
 
 

代码

特征抽取 主成分分析PCA
type
status
date
slug
summary
tags
category
icon
password
Property

原理

PCA的思想

基于最小投影距离

基于最大投影方差

PCA算法流程

实例

优缺点

核主成分分析KPCA

代码

从零实现PCA

 

调库实现PCA

特征抽取 因子分析FA
type
status
date
slug
summary
tags
category
icon
password
Property

原理

主成分分析和因子分析区别

主成分分析试图在力保数据信息丢失最少的原则下,对多个变量进行最佳综合简化,即对高维变量空间进行降维处理。
假设原来有个变量(或称指标),通常的做法是将原来p个变量(指标)作线性组合,以此新的综合变量(指标)代替原来个指标进行统计分析。如果将选取的第一个线性组合,即第一个综合变量(指标),记为,则自然希望尽可能多地反映原有变量(指标)的信息。
 
如何衡量信息的含量,经典的做法就是采用“方差”来表示。的方差越大,所包含的信息就越多。这样, 的选取方法是,在所有的原来 个变量(指标)的线性组合中,选取方差最大的线性组合作为 ,称为第一主成分。如第一主成分不足于代表原来 个变量(指标)的信息,则考虑选取第二主成分 。为有效反映原信息, 已有的信息不需要再现在中,即要求的协方差为零,即。依此下去,可以构造出第三、第四、…、第个主成分。在主成分之间,不仅不相关,而且方差依次递减。在实际经济工作中,往往选取前面几个较大的主成分。虽然损失一部分信息,但抓住了原来个变量的大部分信息(一般要求超过85%),分析的结果应该是可靠的、可信的。
notion image
主成分是原来变量的线性组合,在这个线性组合中,各变量的系数有大有小,有正有负,有的大小相当,因而不能简单地认为这个主成分是某个原变量的属性的作用

数学原理

 

代码

特征抽取 线性判别式分析LDA
type
status
date
slug
summary
tags
category
icon
password
Property

原理

LDA思想

瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)

二类LDA原理

多类LDA原理

 

LDA算法流程

 

优缺点

 
 

代码

特征抽取 独立成分分析ICA
type
status
date
slug
summary
tags
category
icon
password
Property

问题引入

鸡尾酒宴会问题
宴会有n个客人,同时说话,不同位置有n个麦克风,请分离每人说话额信号。
鸡尾酒宴会问题属于盲源分离问题

数学描述

个信号源
是未知的混合矩阵,用来叠加信号,
是按时间取样的 组样,
问题:仅知道,如何求

问题分析

信号最多有一个分量是高斯分布
假设 ,那么也服从多元正态分布
特征抽取 典型关联分析CCA
type
status
date
slug
summary
tags
category
icon
password
Property
 
如果有两组数据,第一组是人身高和体重的数据,第二组是对应的跑步能力和跳远能力的数据。那么能不能说这两组数据是相关的呢?CCA可以帮助分析这个问题。

CCA

假设有两组一维的数据集,相关系数的定义为:
的协方差,而分别是 的方差。相关系数 的取值为 , 的绝对值越接近于1,则X和Y的线性相关性越高。越接近于0,则X和Y的线性相关性越低。
虽然相关系数可以很好的分析一维数据的相关性,但是对于高维数据就不能直接使用了。如果 是包括人身高和体重两个维度的数据,而 是包括跑步能力和跳远能力两个维度的数据,就不能直接使用相关系数的方法。
能不能变通一下呢?
CCA使用的方法是将多维的 都用线性变换为1维的,然后再使用相关系数来看 的相关性。将数据从多维变到1维,也可以理解为CCA是在进行降维,将高维数据降到1维,然后再用相关系数进行相关性的分析。
 

CCA的算法思想

CCA是将高维的两组数据分别降维到1维,然后用相关系数分析相关性。但是有一个问题是,降维的标准是如何选择的呢?PCA降维的原则是投影方差最大;LDA降维的原则是同类的投影方差小,异类间的投影方差大。对于CCA,它选择的投影标准是降维到1维后,两组数据的相关系数最大
特征抽取 多维尺度分析MDS
type
status
date
slug
summary
tags
category
icon
password
Property

原理

MDS基本原理

基本的最优化理论

柯西-施瓦茨不等式

Basic SMACOF methodology

 

代码

notion image
notion image
特征抽取 等距离映射Isomap
type
status
date
slug
summary
tags
category
icon
password
Property
 
它所采用的核心算法和MDS是一致的,区别在于原始空间中的距离矩阵的计算上。很多数据是非线性结构,不适合直接采用PCA算法和MDS算法。在非线性数据结构中,流形上距离很远(测地线距离)的两个数据点,在高维空间中的距离(欧式距离)可能非常近,如下图所示:
notion image
蓝色虚线为两个点的欧式距离,蓝色实线为两个点的测地线距离。但是测地线距离也不好测量,因此采用另一种路径近似代表测地线距离。
构建一个连通图,其中每个点只和距离这个点最近的 个点直接连接,和其他的点不直接连接。这样可以构建邻接矩阵,进而求出图中任意两个点的最短路径,代替测地线距离。蓝色点代表两个点之间的测地线距离,红色线代表图中两点的最短路径,两者距离相近,因此我们使用后者替代前者。进而引出isomap算法。
 
Isomap算法总共分为三步:
  1. 为每个数据点确定邻居,有两种方式,一种是把最近的个作为邻居,一种是把半 内的所有点作为邻居。可以得到加权图,边上的权重表示两点之间的输入空间距离
  1. 对任意两个点对,计算最短路径距离为测地线距离的估计,可以采用Dijkstra算法计算最短路径
  1. 把根据最短路径确定的距离矩阵作为MDS算法的输入,得到低维空间中最好地保留流形的本质结构的数据表示。
 
在计算近邻时,如果邻域范围指定得较大,那么距离较远的点可能被认为是近邻,造成“短路”问题;如果邻域范围指定的小,那么图中某些区域可能和其他区域不连通,出现“断路”问题。短路或者断路都会给后面计算最短路径造成误导。
特征抽取 局部线性嵌入LLE
type
status
date
slug
summary
tags
category
icon
password
Property

原理

流形学习概述

 

LLE思想

 

LLE推导

算法流程

 

LLE的改进算法

 
 

代码