降维方法总结

article/2025/9/14 3:28:10

 

目录

数据降维方法:       

降维:

降维的用处:

降维方法思想分类:

降维方法总览

降维方法详细说明

1. 缺失值比率(Missing Value Ratio)

2. 低方差滤波(Low Variance Filter)

3. 高相关滤波(High Correlation filter)

4. 随机森林(Random Forest)

5. 反向特征消除(Backward Feature Elimination)

6. 前向特征选择(Forward Feature Selection)

7. 因子分析(Factor Analysis)

8. 主成分分析(PCA)

9. 独立分量分析(ICA)

10.局部线性嵌入(LLE)

12. IOSMAP

13. t-SNE

14. UMAP


数据降维方法:       

                               è¿éåå¾çæè¿°

降维是用于数据压缩,降低噪声,防止运行太慢内存太小;当降到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算法步骤

å大æºå¨å­¦ä¹ éç»´ç®æ³ï¼PCAãLDAãLLEãLaplacian Eigenmaps

11拉普拉斯特征映射

Laplacian Eigenmaps看问题的角度和LLE有些相似,也是用局部的角度去构建数据之间的关系。

它的直观思想是希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。Laplacian Eigenmaps可以反映出数据内在的流形结构。

Laplacian Eigenmaps也通过构建相似关系图(对应的矩阵为clip_image002)来重构数据流形的局部结构特征。Laplacian Eigenmaps算法的主要思想是,如果两个数据实例i和j很相似,那么i和j在降维后目标子空间中应该尽量接近。设数据实例的数目为n,目标子空间的维度为m。定义clip_image006大小的矩阵clip_image008,其中每一个行向量clip_image010是数据实例i在目标m维子空间中的向量表示,Laplacian Eigenmaps要优化的目标函数如下

clip_image012(2.11)

定义对角矩阵clip_image014,对角线上clip_image016位置元素等于矩阵clip_image002[1]的第i行之和,经过线性代数变换,上述优化问题可以用矩阵向量形式表示如下:

clip_image018(2.12)

其中矩阵clip_image020是图拉普拉斯矩阵。限制条件clip_image022保证优化问题有解,并且保证映射后的数据点不会被“压缩”到一个小于m维的子空间中。使得公式最小化的Y的列向量是以下广义特征值问题的m个最小非0特征值(包括重根)对应的特征向量:

                                                                clip_image024(2.13)

使用时算法具体步骤为:

步骤1:构建图

使用某一种方法来将所有的点构建成一个图,例如使用KNN算法,将每个点最近的K个点连上边。K是一个预先设定的值。

步骤2:确定权重

确定点与点之间的权重大小,例如选用热核函数来确定,如果点i和点j相连,那么它们关系的权重设定为:

                                                             clip_image026(2.14)

另外一种可选的简化设定是clip_image028如果点i,j相连,否则clip_image030

步骤3:特征映射

计算拉普拉斯矩阵L的特征向量与特征值:clip_image032

其中D是对角矩阵,满足clip_image034clip_image036

使用最小的m个非零特征值对应的特征向量作为降维后的结果输出。

前面提到过,Laplacian Eigenmap具有区分数据点的特性,可以从下面的例子看出:

                             clip_image038

                                                 图1 Laplacian Eigenmap实验结果

见图1所示,左边的图表示有两类数据点(数据是图片),中间图表示采用Laplacian Eigenmap降维后每个数据点在二维空间中的位置,右边的图表示采用PCA并取前两个主要方向投影后的结果,可以清楚地看到,在此分类问题上,Laplacian Eigenmap的结果明显优于PCA。

 

                                            image

                                                                              图2 roll数据的降维

图2说明的是,高维数据(图中3D)也有可能是具有低维的内在属性的(图中roll实际上是2D的),但是这个低维不是原来坐标表示,例如如果要保持局部关系,蓝色和下面黄色是完全不相关的,但是如果只用任何2D或者3D的距离来描述都是不准确的。

下面三个图是Laplacian Eigenmap在不同参数下的展开结果(降维到2D),可以看到,似乎是要把整个带子拉平了。于是蓝色和黄色差的比较远。

12. IOSMAP

13. t-SNE

14. UMAP

 

参考

https://www.jqr.com/article/000439


http://chatgpt.dhexx.cn/article/OCMKUGIE.shtml

相关文章

数据分析七种降维方法

近来由于数据记录和属性规模的急剧增长,大数据处理平台和并行数据分析算法也随之出现。于此同时,这也推动了数据降维处理的应用。实际上,数据量有时过犹不及。有时在数据分析应用中大量的数据反而会产生更坏的性能。 最新的一个例子是采用 20…

12种降维方法及python实现

你遇到过特征超过1000个的数据集吗?超过5万个的呢?我遇到过。降维是一个非常具有挑战性的任务,尤其是当你不知道该从哪里开始的时候。拥有这么多变量既是一个恩惠——数据量越大,分析结果越可信;也是一种诅咒——你真的…

特征降维方法

关于降维的学习主要分为五类:PCA、LDA、LLE、tSNE、ISOMAP (一)降维的基本知识点总结 1、降维方法分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。 (1)线性降维:PCA、…

四大降维方法

PCA和LDA之间的区别 从主观的理解上,主成分分析到底是什么?它其实是对数据在高维空间下的一个投影转换,通过一定的投影规则将原来从一个角度看到的多个维度映射成较少的维度。到底什么是映射,下面的图就可以很好地解释这个问题—…

数据降维方法小结

数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种从高维特征空间向低纬特征空间映射的…

12种降维方法终极指南

来源:Analytics Vidhya 编译:Bot 授权自 论智 你遇到过特征超过1000个的数据集吗?超过5万个的呢?我遇到过。降维是一个非常具有挑战性的任务,尤其是当你不知道该从哪里开始的时候。拥有这么多变量既是一个恩惠——数据…

12种降维方法终极指南(含Python代码)

12种降维方法终极指南(含Python代码) 你遇到过特征超过1000个的数据集吗?超过5万个的呢?我遇到过。降维是一个非常具有挑战性的任务,尤其是当你不知道该从哪里开始的时候。拥有这么多变量既是一个恩惠——数据量越大&…

七种降维方法

近来由于数据记录和属性规模的急剧增长,大数据处理平台和并行数据分析算法也随之出现。于此同时,这也推动了数据降维处理的应用。实际上,数据量有时过犹不及。有时在数据分析应用中大量的数据反而会产生更坏的性能。 最新的一个例子是采用 20…

【数据降维】数据降维方法分类

数据降维基本原理是将样本点从输入空间通过线性或非线性变换映射到一个低维空间,从而获得一个关于原数据集紧致的低维表示。 数据降维工具箱drtoolbox中众多算法,这里简单做个分类。 因为很多并没有仔细了解,在此次只对八种方法做分类&…

机器学习之降维方法总结

降维方法分为线性降维方法和非线性降维方法,看下表:本文结构如下: 线性降维方法主成分分析法线性判别法奇异值分解法因子分析法非线性降维方法~~流形学习简介 说到维度,其目的是用来进行特征选择和特征提取…

常见的降维方法(PCA,SVD)

1、PCA降维(主成分分析) PCA降维就是去除线性相关,使得最后剩余的属性维度全都线性无关。 其实:PCA降维不仅是去除先线性无关,还可以过滤掉小特征值对应的特征向量。因为特征值变化小,对应的特征向量变化…

看!数据分析领域中最为人称道的七种降维方法

http://dataunion.org/20803.html 感谢王穆荣的投稿,转载请注明出处:数盟社区 近来由于数据记录和属性规模的急剧增长,大数据处理平台和并行数据分析算法也随之出现。于此同时,这也推动了数据降维处理的应用。实际上&#xff0…

数据降维的几种常见方法(PCA;FA;LDA;ICA等)

文章目录 数据降维方式简述PCA与ICA、FA、LDA的区别与联系1.PCA与ICA的联系与区别2.PCA与LDA的联系与区别3.PCA与FA的联系与区别 总结 数据降维方式简述 在学习ICA算法的过程中,了解到常常需要对数据进行降维,如PCA,FA等,以达到数…

大整数的乘法

大整数的乘法 (这里主要讨论的是两个较大的数相乘的效率问题,实际上并不是真正意义上的大数相乘。在java中有个BigInteger类已经可以储存大数,并提供了大数相乘的方法了。) 【分析】 首先,当两个整数X、Y&#xff0…

实验一:大整数乘法

1.实验目的 掌握分治算法的基本思想、技巧和效率分析方法。熟练掌握用递归设计分治算法的基本步骤。学会利用分治算法解决实际问题。 2.实验内容 大整数乘法 采用分治算法实现两个n位二进制(或者十进制)大整数的乘法。 3.实验要求 根据实验内容构思…

分治法的经典问题——大整数相乘

分治法的原理 讨论问题时,先来了解一下什么是分治法。 分治法的意思就是,分而治之,也就是把一个问题,拆分成几个小问题,最后再汇总解决的方法 通过大整数相乘问题来了解分治法 假如现在我们要求两个大整数相乘的乘积…

大整数乘法(分治法)

大整数乘法(分治法) 题目描述:设X和Y都是n位的十进制整数,计算它们的乘积X*Y。 如果按照我们日常的计算方法,应该就是将两个数逐位相乘,最后加起来得到最终的结果,时间复杂度为O(n2&…

大整数相乘算法

一 转换为二进制求,推导出的公式适合十进制计算 设X和Y都是n位的二进制整数,现在要计算它们的乘积XY。我们可以用小学所学的方法来设计一个计算乘积XY的算法,但是这样做计算步骤太多,显得效率较低。如果将每2个1位数的乘法或加法看…

【大整数乘法】

问题 2.伪代码 理想情况下&#xff0c;XY位数相同 Mul(long long x,long long y,int num){Fh<--(x*y>0)?1:-1;x<--|x|; y<--|y|;if(num 0)then return 0;else if(num1) then return fh*x*y;else{x_high<--x/10^(num/2);x_low<--x mod 10^(num/2);y_high…

大整数乘法(大整数乘int型)

算法思想&#xff1a; 1.将大整数倒序储存到数组中&#xff08;方便进位&#xff09; 2.对同位相乘后的数取模10&#xff0c;推入结果数组中 3.对同位相乘后的数除以10&#xff0c;作为进位 5.去除可能出现的前导零 4.完成乘法后倒序输出 补充知识&#xff1a; 1、vector相关用…