降维是机器学习中很重要的一种思想。在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的。基于这些问题,降维思想就出现了。当数据量比较大的时候,可以通过降纬的方式来处理,常见的降纬方法有主成分分析(PCA)、因子分析(factor analysis)、线性判别分析(LDA)、奇异值分解(SVD)。
主成分分析的优缺点:
优点:降低数据的复杂性,识别最重要的多个特征。
缺点:不一定需要,且可能损失有用信息。
适用数据类型:数值型数据。
通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)
使用decomposition库的PCA类选择特征的代码如下:
1 from sklearn.decomposition import PCA 2 #主成分分析法,返回降维后的数据 3 #参数n_components为主成分数目 4 PCA(n_components=2).fit_transform(iris.data)
假设原始数据表示为X,(m*n矩阵,m是维度,n是sample的数量)
既然是线性的,那么就是希望找到映射向量a, 使得 a‘X后的数据点能够保持以下两种性质:
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