目录
3. 高相关滤波(High Correlation filter)
5. 反向特征消除(Backward Feature Elimination)
6. 前向特征选择(Forward Feature Selection)
数据降维方法:
降维是用于数据压缩,降低噪声,防止运行太慢内存太小;当降到2或3维可以可视化操作,便于数据分析;
不要将降维用于防止过拟合,容易去掉和标签有关的重要特征。
维度越高,你的数据在每个特征维度上的分布就越稀疏,这对机器学习算法基本都是灾难性的。最后导致的可能是每个样本都有自己的特征,无法形成区别是正例还是负例的统一特征。还有另外一个情况当特征多于样本量时,一些分类算法(如SVM)是失效的。
https://blog.csdn.net/sqiu_11/article/details/78391568
降维:
一种能在减少数据集中特征数量的同时,避免丢失太多信息并保持/改进模型性能的方法。
降维的用处:
-
随着数据维度不断降低,数据存储所需的空间也会随之减少。
-
低维数据有助于减少计算/训练用时。
-
一些算法在高维度数据上容易表现不佳,降维可提高算法可用性。
-
降维可以用删除冗余特征解决多重共线性问题。比如我们有两个变量:“一段时间内在跑步机上的耗时”和“卡路里消耗量”。这两个变量高度相关,在跑步机上花的时间越长,燃烧的卡路里自然就越多。因此,同时存储这两个数据意义不大,只需一个就够了。
-
降维有助于数据可视化。如前所述,如果数据维度很高,可视化会变得相当困难,而绘制二维三维数据的图表非常简单。
降维方法思想分类:
-
仅保留原始数据集中最相关的变量(特征选择)。
-
寻找一组较小的新变量,其中每个变量都是输入变量的组合,包含与输入变量基本相同的信息(降维)。
降维方法总览
-
缺失值比率:如果数据集的缺失值太多,我们可以用这种方法减少变量数。
-
低方差滤波:这个方法可以从数据集中识别和删除常量变量,方差小的变量对目标变量影响不大,所以可以放心删去。
-
高相关滤波:具有高相关性的一对变量会增加数据集中的多重共线性,所以用这种方法删去其中一个是有必要的。
-
随机森林:这是最常用的降维方法之一,它会明确算出数据集中每个特征的重要性。
-
前向特征选择和反向特征消除:这两种方法耗时较久,计算成本也都很高,所以只适用于输入变量较少的数据集。
-
因子分析:这种方法适合数据集中存在高度相关的变量集的情况。
-
PCA:这是处理线性数据最广泛使用的技术之一。
-
ICA:我们可以用ICA将数据转换为独立的分量,使用更少的分量来描述数据。
-
ISOMAP:适合非线性数据处理。
-
t-SNE:也适合非线性数据处理,相较上一种方法,这种方法的可视化更直接。
-
UMAP:适用于高维数据,与t-SNE相比,这种方法速度更快。
降维方法详细说明
1. 缺失值比率(Missing Value Ratio)
假设你有一个数据集,你第一步会做什么?在构建模型前,对数据进行探索性分析必不可少。但在浏览数据的过程中,有时候我们会发现其中包含不少缺失值。如果缺失值少,我们可以填补缺失值或直接删除这个变量;如果缺失值过多,你会怎么办呢?
当缺失值在数据集中的占比过高时,一般我会选择直接删除这个变量,因为它包含的信息太少了。但具体删不删、怎么删需要视情况而定,我们可以设置一个阈值,如果缺失值占比高于阈值,删除它所在的列。阈值越高,降维方法越积极。
2. 低方差滤波(Low Variance Filter)
如果我们有一个数据集,其中某列的数值基本一致,也就是它的方差非常低,那么这个变量还有价值吗?和上一种方法的思路一致,我们通常认为低方差变量携带的信息量也很少,所以可以把它直接删除。
放到实践中,就是先计算所有变量的方差大小,然后删去其中最小的几个。需要注意的一点是:方差与数据范围相关的,因此在采用该方法前需要对数据做归一化处理。
3. 高相关滤波(High Correlation filter)
如果两个变量之间是高度相关的,这意味着它们具有相似的趋势并且可能携带类似的信息。同理,这类变量的存在会降低某些模型的性能(例如线性和逻辑回归模型)。为了解决这个问题,我们可以计算独立数值变量之间的相关性。如果相关系数超过某个阈值,就删除其中一个变量。
作为一般准则,我们应该保留那些与目标变量显示相当或高相关性的变量。
如果示例数据集中不存在高相关变量,通常情况下,如果一对变量之间的相关性大于0.5-0.6,那就应该考虑是否要删除一列了。
4. 随机森林(Random Forest)
随机森林是一种广泛使用的特征选择算法,它会自动计算各个特征的重要性,所以无需单独编程。这有助于我们选择较小的特征子集。
在开始降维前,我们先把数据转换成数字格式,因为随机森林只接受数字输入。同时,ID这个变量虽然是数字,但它目前并不重要,所以可以删去。
5. 反向特征消除(Backward Feature Elimination)
以下是反向特征消除的主要步骤:
-
先获取数据集中的全部n个变量,然后用它们训练一个模型。
-
计算模型的性能。
-
在删除每个变量(n次)后计算模型的性能,即我们每次都去掉一个变量,用剩余的n-1个变量训练模型。
-
确定对模型性能影响最小的变量,把它删除。
-
重复此过程,直到不再能删除任何变量。
在构建线性回归或Logistic回归模型时,可以使用这种方法。
6. 前向特征选择(Forward Feature Selection)
前向特征选择其实就是反向特征消除的相反过程,即找到能改善模型性能的最佳特征,而不是删除弱影响特征。它背后的思路如下所述:
-
选择一个特征,用每个特征训练模型n次,得到n个模型。
-
选择模型性能最佳的变量作为初始变量。
-
每次添加一个变量继续训练,重复上一过程,最后保留性能提升最大的变量。
-
一直添加,一直筛选,直到模型性能不再有明显提高。
前向特征选择和反向特征消除耗时较久,计算成本也都很高,所以只适用于输入变量较少的数据集。
7. 因子分析(Factor Analysis)
因子分析是一种常见的统计方法,它能从多个变量中提取共性因子,并得到最优解。假设我们有两个变量:收入和教育。它们可能是高度相关的,因为总体来看,学历高的人一般收入也更高,反之亦然。所以它们可能存在一个潜在的共性因子,比如“能力”。
在因子分析中,我们将变量按其相关性分组,即特定组内所有变量的相关性较高,组间变量的相关性较低。我们把每个组称为一个因子,它是多个变量的组合。和原始数据集的变量相比,这些因子在数量上更少,但携带的信息基本一致。
8. 主成分分析(PCA)
如果说因子分析是假设存在一系列潜在因子,能反映变量携带的信息,那PCA就是通过正交变换将原始的n维数据集变换到一个新的被称做主成分的数据集中,即从现有的大量变量中提取一组新的变量。下面是关于PCA的一些要点:
-
主成分是原始变量的线性组合。
-
第一个主成分具有最大的方差值。
-
第二主成分试图解释数据集中的剩余方差,并且与第一主成分不相关(正交)。
-
第三主成分试图解释前两个主成分等没有解释的方差。
之前的博客介绍 https://blog.csdn.net/qq_28266311/article/details/92839521
9. 独立分量分析(ICA)
独立分量分析(ICA)基于信息理论,是最广泛使用的降维技术之一。PCA和ICA之间的主要区别在于,PCA寻找不相关的因素,而ICA寻找独立因素。
如果两个变量不相关,它们之间就没有线性关系。如果它们是独立的,它们就不依赖于其他变量。例如,一个人的年龄和他吃了什么/看了什么电视无关。
该算法假设给定变量是一些未知潜在变量的线性混合。它还假设这些潜在变量是相互独立的,即它们不依赖于其他变量,因此它们被称为观察数据的独立分量。
下图是ICA和PCA的一个直观比较:
(a)PCA,(b)ICA
PCA的等式是x = Wχ。
这里,
- x是观察结果
- W是混合矩阵
- χ是来源或独立成分
现在我们必须找到一个非混合矩阵,使成分尽可能独立。而测试成分独立性最常用的方法是非高斯性:
- 根据中心极限定理(Central Limit Theorem),多个独立随机变量混合之后会趋向于正态分布(高斯分布)。
-
因此,我们可以寻找所有独立分量中能最大化峰度的分量。
-
一旦峰度被最大化,整个分布会呈现非高斯分布,我们也能得到独立分量。
10.局部线性嵌入(LLE)
Locally linear embedding(LLE)是一种非线性降维算法,它能够使降维后的数据较好地保持原有 流形结构 。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系。
见图1,使用LLE将三维数据(b)映射到二维(c)之后,映射后的数据仍能保持原有的数据流形(红色的点互相接近,蓝色的也互相接近),说明LLE有效地保持了数据原有的流行结构。
但是LLE在有些情况下也并不适用,如果数据分布在整个封闭的球面上,LLE则不能将它映射到二维空间,且不能保持原有的数据流形。那么我们在处理数据中,首先假设数据不是分布在闭合的球面或者椭球面上。
图1 LLE降维算法使用实例
LLE算法认为每一个数据点都可以由其近邻点的线性加权组合构造得到。算法的主要步骤分为三步:(1)寻找每个样本点的k个近邻点;(2)由每个 样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。具体的算法流程如图2所示:
图 2 LLE算法步骤
11拉普拉斯特征映射
Laplacian Eigenmaps看问题的角度和LLE有些相似,也是用局部的角度去构建数据之间的关系。
它的直观思想是希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。Laplacian Eigenmaps可以反映出数据内在的流形结构。
Laplacian Eigenmaps也通过构建相似关系图(对应的矩阵为)来重构数据流形的局部结构特征。Laplacian Eigenmaps算法的主要思想是,如果两个数据实例i和j很相似,那么i和j在降维后目标子空间中应该尽量接近。设数据实例的数目为n,目标子空间的维度为m。定义
大小的矩阵
,其中每一个行向量
是数据实例i在目标m维子空间中的向量表示,Laplacian Eigenmaps要优化的目标函数如下
定义对角矩阵,对角线上
位置元素等于矩阵
的第i行之和,经过线性代数变换,上述优化问题可以用矩阵向量形式表示如下:
其中矩阵是图拉普拉斯矩阵。限制条件
保证优化问题有解,并且保证映射后的数据点不会被“压缩”到一个小于m维的子空间中。使得公式最小化的Y的列向量是以下广义特征值问题的m个最小非0特征值(包括重根)对应的特征向量:
使用时算法具体步骤为:
步骤1:构建图
使用某一种方法来将所有的点构建成一个图,例如使用KNN算法,将每个点最近的K个点连上边。K是一个预先设定的值。
步骤2:确定权重
确定点与点之间的权重大小,例如选用热核函数来确定,如果点i和点j相连,那么它们关系的权重设定为:
步骤3:特征映射
使用最小的m个非零特征值对应的特征向量作为降维后的结果输出。
前面提到过,Laplacian Eigenmap具有区分数据点的特性,可以从下面的例子看出:
图1 Laplacian Eigenmap实验结果
见图1所示,左边的图表示有两类数据点(数据是图片),中间图表示采用Laplacian Eigenmap降维后每个数据点在二维空间中的位置,右边的图表示采用PCA并取前两个主要方向投影后的结果,可以清楚地看到,在此分类问题上,Laplacian Eigenmap的结果明显优于PCA。
图2 roll数据的降维
图2说明的是,高维数据(图中3D)也有可能是具有低维的内在属性的(图中roll实际上是2D的),但是这个低维不是原来坐标表示,例如如果要保持局部关系,蓝色和下面黄色是完全不相关的,但是如果只用任何2D或者3D的距离来描述都是不准确的。
下面三个图是Laplacian Eigenmap在不同参数下的展开结果(降维到2D),可以看到,似乎是要把整个带子拉平了。于是蓝色和黄色差的比较远。
12. IOSMAP
13. t-SNE
14. UMAP
参考