吾本轻狂|主成分分析,PCA( 二 )


Sklearn.decomposition.PCA(n_components=None,*,copy=True,whiten=False,svd_solver='auto',tol=0.0,iterated_power='auto',random_state=None)
PCA:principalcomponentanalysis(PCA)
上述代码中的主成分分析使用的是SVD(singularvaluedecomposition,奇异值分解)方法 。LineardimensionalityreductionusingSingularValueDecompositionofthedatatoprojectittoalowerdimensionalspace.
PCAskipslesssignificantcomponent.Obviously,wecanuseSVDtofindPCAbytruncatingthelessimportantbasisvectorsintheoriginalSVDmatrix.
PCA方法寻找主成分的过程 , 通过采用SVD找到所有的基础向量之后 , 再把不怎么重要的基础向量裁断掉 。 所以这里需要先使用SVD找到矩阵X的基础向量 。
从Sklearn.decomposition.PCA()的原代码中抽出计算基础向量部分:
scipy.linalg.svd(a,full_matrices=True,compute_uv=True,overwrite_a=False,check_finite=True,lapack_driver='gesdd')
SingularValueDecomposition.奇异值分解 。
A:(M,N)array_like,matrixtodecompose , 一个要分解的(m,n)矩阵 。
SVDReturn(返回值):
U:unitarymatrixhavingleftsingularvectors(左奇异矩阵)ascolumns.Ofshape(M,M)or(M,K),dependingonfull_matrices.
S:ndarray,thesingularvalues(奇异值),sortedinnon-increasingorder.Ofshape(K),withK=min(M,N).
Wh:Unitarymatrixhavingrightsingularvectors(右奇异矩阵)asrows.Ofshape(N,N)or(k,N).
任何一个矩阵A都可以拆分成如下的三个矩阵相乘 。
上式中U和V分别是AAT和ATA的正交特征矩阵 , S是拥有r个元素的对角矩阵 , 对角线上的元素的值等于AAT或ATA的正特征值的根 , 其中AAT和ATA拥有同样的正特征值 。
S长下面这样:
Sigma:diagonal(scale) , 对角化(调整比例);
U:(orthogonal)(rotation) , 正交化(旋转) 。
其中U和V为正交矩阵 , 满足如下条件:
假设A矩阵如下:


推荐阅读