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


from sklearn.decomposition import PCApca=PCA(n_components=2)pca.fit(X)看起来只有三行代码 , 但是相关的计算几乎全在里面了 。
Sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)
PCA: principal component analysis(PCA)
上述代码中的主成分分析使用的是SVD(singular value decomposition,奇异值分解)方法 。Linear dimensionality reduction using Singular Value Decomposition of the data to project it to a lower dimensional space.
PCA skips less significant component. Obviously, we can use SVD to find PCA by truncating the less important basis vectors in the original SVD matrix.
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')
Singular Value Decomposition. 奇异值分解 。
A:(M,N) array_like, matrix to decompose , 一个要分解的(m,n)矩阵 。
SVD Return(返回值):
U: unitary matrix having left singular vectors(左奇异矩阵) as columns. Of shape (M,M) or (M,K), depending on full_matrices.
S: ndarray, the singular values(奇异值), sorted in non-increasing order. Of shape(K), with K=min(M,N).
Wh: Unitary matrix having right singular vectors(右奇异矩阵) as rows. Of shape (N,N) or (k,N).
任何一个矩阵A都可以拆分成如下的三个矩阵相乘 。
吾本轻狂|PCA 主成分分析
吾本轻狂|PCA 主成分分析(读作sigma)符号通常也用S来代替,下文中这两者通用哈 。
上式中U和V分别是AAT和ATA的正交特征矩阵 , S是拥有r个元素的对角矩阵 , 对角线上的元素的值等于AAT或ATA的正特征值的根 , 其中AAT和ATA拥有同样的正特征值 。
S长下面这样:
吾本轻狂|PCA 主成分分析加上维度完整地写出如下形式 。
吾本轻狂|PCA 主成分分析
吾本轻狂|PCA 主成分分析上面拆分过程中 , A矩阵一次性可以做到的变换可以分为U、S、VT三个步骤完成 , 其每个步骤的作用如下图所示:
吾本轻狂|PCA 主成分分析VT: orthogonal(rotation) ,正交化(旋转);
Sigma: diagonal(scale) , 对角化(调整比例);
U:(orthogonal)(rotation) , 正交化(旋转) 。
其中U和V为正交矩阵 , 满足如下条件:
吾本轻狂|PCA 主成分分析已经明了U,V,S大致的计算方法 , 下面使用具体的矩阵来计算体验一下这个过程 , 找点感觉 。