机器学习系列(8):主成分分析(PCA)及白化(ZCA)

来源:互联网 发布:linux 文件夹权限介绍 编辑:程序博客网 时间:2024/04/29 20:28

主成分分析(PCA)是一种数据降维算法。白化主要是降低输入特征的冗余性。

假设X 是m*n的矩阵,由n个样本(m维特征)组成。现要对X 进行线性变换为另一个矩阵Y,使得Y消除了X各特征的相关性,即Y的协方差矩阵为对角矩阵(YY'为对角矩阵)

X变换到Y的线性变换公式为:

  Y=PX    (1)

则,

YY’=PX(PX)’=PXX’P’   (2)

 

对XX’进行特征值分解,则

XX’=QDQ-1              (3)

(Q为XX’的特征矩阵,D为特征值对角矩阵)

然而(XX’)’=XX’,则

XX’是对称矩阵,且Q为正交矩阵,即Q’= Q-1,或者QQ’=E

综合:

YY’=PQDQ’P’=PQD(PQ)’

If P=Q-1

PQ=E

则 YY’=D

 

总之,

Y=Q-1X=Q’X

 

如果对Y进行白化操作,则Y的协方差矩阵就为单位矩阵。

例如,特征值λ1 ,λ2…λn , 白化操作即相当1/λi  (i=1-n).

function [V,E,D] = pca(X)% do PCA on image patches%% INPUT variables:% X                  matrix with image patches as columns%% OUTPUT variables:% V                  whitening matrix% E                  principal component transformation (orthogonal)% D                  variances of the principal components% Calculate the eigenvalues and eigenvectors of the new covariance matrix.covarianceMatrix = X*X'/size(X,2);[E, D] = eig(covarianceMatrix);% Sort the eigenvalues  and recompute matrices[dummy,order] = sort(diag(-D));E = E(:,order);d = diag(D); dsqrtinv = real(d.^(-0.5));Dsqrtinv = diag(dsqrtinv(order));D = diag(d(order));V = Dsqrtinv*E';



参考:

1. UFLDL之PCA

2. UFLDL之ZCA

3. 协方差矩阵 以及 百科协方差

4. 特征值分解

5. tornadomeet之PCA(简单,清晰)

6. Alex 的博文,科普PCA,角度很新颖 (值得看!)

 

0 0