奇异值分解(Singular Value Decomposition)
1.奇异值分解是矩阵分解的一种方法
2.特征值和特征向量:Ax=λx.矩阵的乘法最后可以用特征值来代替使用,可以简化很多运算。
①A必须是n×n的方阵;
②正常对方阵进行分解
③分解形式:A = W∑W的转置
3.机器学习中大量数据集的行列不相同,即不是方阵,而是一个m×n的矩阵。SVD可以对矩阵进行分解。
①分解形式:A=UΣV的转置,其中,A是m×n的矩阵,U是m×m的矩阵,Σ是m×n的矩阵,V是n×n的矩阵。
②U称为左奇异变量,根据特征向量的求法,要求U特征向量必须是方阵,所以凑方阵,如下图所示
③V称为左奇异变量,根据特征向量的求法,要求V特征向量必须是方阵,所以凑方阵,如下图所示
④求解Σ特征值矩阵
4.矩阵的奇异值分解有什么意义?
①SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。
5.PCA降维,需要找到样本协方差矩阵XTX的最大的d个特征向量,然后用这最大的d个特征向量张成的矩阵来做低维投影降维。当样本数多样本特征数也多的时候,这个计算量是很大的。而SVD中求解非方阵矩阵,就是要求这个值,有一些SVD的实现算法可以不求先求出协方差矩阵XTX,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。
6.在处理数据集中左右奇异矩阵的作用:左奇异矩阵可以用于行数的压缩。相对的,右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。
7.奇异值分解的优点:SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。
8.奇异值分解的缺点:分解出的矩阵解释性往往不强,有点黑盒子的味道,不过这不影响它的使用.
主成分分析法(PCA)
1.概念:主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA.
2.作用:PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有m个数据(x(1),x(2),...,x(m))(x(1),x(2),...,x(m))。我们希望将这m个数据的维度从n维降到n'维,希望这m个n'维的数据集尽可能的代表原始数据集。我们知道数据从n维降到n'维肯定会有损失,但是我们希望损失尽可能的小
3.基于小于投影距离
4.基于最大投影方差
知识点补充:
1.协方差矩阵度量了两个矩阵之间的相关性多大
2.方差度量了数据集的信息度,方差越大表示信息量越大,数据比较随机,信息熵越大;方差越小表示信息量小,数据比较统一,信息熵小;
3.特征值和特征向量求解方法:
①定义:设A是n阶矩阵,如果数λ和n维非零列向量x使得关系式Ax=λx成立,那么,这样的数λ就称为方阵A的特征值,非零向量x称为A对应于特征值λ的特征向量。
②对关系式进行变换:(A-λE)x=0 其中E为单位矩阵。这是n个未知数n个方程的齐次线性方程组,它有非零解的充要条件是系数行列式为0,即|A-λE|=0。带入具体的数字或者符号,可以看出该式是以λ为未知数的一元n次方程,称为方阵A的特征方程,左端 |A-λE|是λ的n次多项式,也称为方阵A的特征多项式;
参考文献
[2] 主成分分析(PCA)原理总结