博客:https://www.cnblogs.com/enhaofrank/,公众号:生信AI区块链科技前沿,github:https://github.com/enhaofrank

功不唐捐 玉汝于成

机器学习算法——降维

降维是机器学习中很重要的一种思想。在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的。基于这些问题,降维思想就出现了。当数据量比较大的时候,可以通过降纬的方式来处理,常见的降纬方法有主成分分析(PCA)、因子分析(factor analysis)、线性判别分析(LDA)、奇异值分解(SVD)。

主成分分析的优缺点:

优点:降低数据的复杂性,识别最重要的多个特征。

缺点:不一定需要,且可能损失有用信息。

适用数据类型:数值型数据。

Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)  
使用decomposition库的PCA类选择特征的代码如下:
1 from sklearn.decomposition import PCA
2 #主成分分析法,返回降维后的数据
3 #参数n_components为主成分数目
4 PCA(n_components=2).fit_transform(iris.data)
PCA追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上的数据方差的大小来衡量该方向的重要性。但是这样投影以后对数据的区分作用并不大,反而可能使得数据点揉杂在一起无法区分。这也是PCA存在的最大一个问题,这导致使用PCA在很多情况下的分类效果并不好。

Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法。与PCA保持数据信息不同,LDA是为了使得降维后的数据点尽可能地容易被区分!
假设原始数据表示为X,(m*n矩阵,m是维度,n是sample的数量)
既然是线性的,那么就是希望找到映射向量a, 使得 a‘X后的数据点能够保持以下两种性质:
1、同类的数据点尽可能的接近(within class)
2、不同类的数据点尽可能的分开(between class)
使用lda库的LDA类选择特征的代码如下:
1 from sklearn.lda import LDA
2 #线性判别分析法,返回降维后的数据
3 #参数n_components为降维后的维数
4 LDA(n_components=2).fit_transform(iris.data, iris.target)

 

参考资料:

1、https://www.cnblogs.com/jiangxinyang/p/9291741.html

2、https://www.jianshu.com/p/6a9db201cb13

3、https://zhuanlan.zhihu.com/p/44258470

4、https://baijiahao.baidu.com/s?id=1664419210560925668&wfr=spider&for=pc

5、https://www.cnblogs.com/pinard/p/6239403.html

6、https://www.cnblogs.com/pinard/p/6243025.html

7、https://zhuanlan.zhihu.com/p/68754729

8、https://blog.csdn.net/taojiea1014/article/details/82825715

9、https://www.cnblogs.com/hellojamest/p/10908052.html

posted on 2021-12-23 20:35  enhaofrank  阅读(573)  评论(0编辑  收藏  举报

导航