1. 主成分基本思想
主成分基本思想:在主成分分析中,首先对给定数据进行规范化,使得数据每一个变量的平均值维0,方差为1,之后对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成由若干个线性无关的新变量表示的数据。新变量是可能的正交变换中变量的方差的和最大的,方差表示了新变量上信息的大小,将新变量依次称为第一主成分,第二主成分等
通过主成分分析,可以利用主成分近似地表示原始数据,这可理解为发现数据的'基本结构',也可以把数据由少数主成分表示,这可理解为数据降维
2. 总体主成分定义
(假设X = {(x_1,x_2,x_3,...,x_m)}^T是m维随机变量,其均值向量为mu),$$mu = E(X) = {(mu_1,mu_2,...,mu_m)}^T$$
(协方差矩阵是xi),$$xi = cov(x_i,x_j) = E[(x_i-mu){(x_j-mu)}^T]$$
(考虑由m维随机变量x到m维随机变量y = {(y_1,y_2,...,y_m)}^T的线性变换)
其中(a_i^T = (a_{1i},a_{2i},...,a_{mi}))
由随机变量的性质可以知道:
下面给出总体主成分的定义
定义(总体主成分):给定一个上面(y_i = a_i^TX = a_{1i}x_1+a_{2i}x_2+...+a_{mi}x_m)的线性变换,如果满足下列条件:
- (1)系数向量(a_i^T是单位向量,即a_i^T a_i = 1)
- (2)(变量y_i与y_j互不相关,即它们的协方差为0)
- (3)(变量y_1是X的所有线性变换中方差最大的;y_2是与y_1不相关的X的所有线性变换中方差最大的;) (一般地y_i是与y_1,y_2,...,y_{i-1}都不相关的X的所有线性变换中方差最大的;) (这时分别称y_1,y_2,...,y_m为X的第一主成分、第二主成分、...、第m主成分)
3. 样本均值和方差
假设对m维随机变量(X={(x_1,x_2,...,x_m)}^T)进行n次独立观测,(x_1,x_2,...,x_n)表示观测样本,其中(x_j={(x_{1j},x_{2j},...,x_{mj})}^T)表示第j个观测样本,(x_{ij}表示第j个观测样本的第i个变量)
给定样本矩阵X,可以估计样本均值,以及样本协方差,样本均值向量$$ ilde x = frac{1}{n}sum_{j=1}^nx_j$$
样本方差$$S = frac{1}{n-1}sum_{j=1}^n(x_{ik} - ilde x_i)(x_{jk}- ilde j)$$
3.1 样本方差推导
样本方差公式$$S = frac{1}{n-1}sum_{i=1}^n(x_i-mu_i)^2$$
扩展开来得到$$S = frac{1}{n-1}[(X-frac{1}{n}X^TI_nI_n^T)^T(X-frac{1}{n}X^TI_nI_n^T)]$$
令(H = I_n - frac{1}{n}I_nI_n^T)得$$S = frac{1}{n-1}X^THX$$
其中H为等幂矩阵HH=H和中心矩阵(H_n*I_n = 0)
4. PCA求解流程
- (1)数据归一化,均值为0,方差为1
- (2)计算协方差矩阵
- (3)计算协方差矩阵的特征值和特征向量
- (4)将特征值从大到小排序
- (5)保留最上面的N个特征向量
- (6)将数据转换到上述N个特征向量构建的新空间中
4.1 python实现PCA
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals) #sort, sort goes smallest to largest
eigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensions
redEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallest
lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat
5. PCA最小平方误差理论推导
PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面。
理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小
假设(x_k)表示p维空间的k个点,(z_k)表示(x_k)在超平面D上的投影向量,(W = {w_1,w_2,...,w_d})为D维空间的标准正交基,即PCA最小平方误差理论转换为如下优化问题$$z_k = sum_{i=1}^d (w_i^T x_k)w_i---(1)$$
注:(w_i^Tx_k)为x_k在w_i基向量的投影长度,(w_i^Tx_kw_i)为w_i基向量的坐标值
求解:
(L = (x_k - z_k)^T(x_k-z_k))
(L= x_k^Tx_k - x_k^Tz_k - z_k^Tx_k + z_k^Tz_k)
由于向量内积性质(x_k^Tz_k = z_k^Tx_k)
(L = x_k^Tx_k - 2x_k^Tz_k + z_k^Tz_k)
将(1)带入得$$x_k^Tz_k = sum_{i=1}^dw_i^Tx_kx_k^Tw_i$$
根据约束条件s.t.得$$z_k^Tz_k = sum_{i=1}^dw_i^Tx_k^Tx_kw_i$$
根据奇异值分解$$sum_{i=1}^dw_i^Tx_kx_k^Tw_i = tr(W^Tx_k^Tx_kW)$$
等价于带约束得优化问题:$$argmaxtr(W^TXX^TW)$$
最佳超平面W与最大方差法求解的最佳投影方向一致,即协方差矩阵的最大特征值所对应的特征向量,差别仅是协方差矩阵(xi)的一个倍数
5.1 定理
注:X为(n,p),Z为(n,q),q < p,w为(p,q)
该定理表达的意思也就是平方差理论,将降维后的矩阵通过W^T投影回去,再与X计算最小平方差,值越小说明信息损失越少
(phi)目标函数最小时,W为X的前q个特征向量矩阵且(Z=W^TX)
以上优化可以通过拉格朗日对偶问题求得,最终也会得到$$argmaxtr(W^TXX^TW)$$
6. 核PCA推导
核函数:设X是输入空间((R^n)的子集或离散子集),又F为特征空间(希尔伯特空间),如果存在一个从X到F的隐射$$phi (X):X -> F$$使得对所有x,zin X,函数K(x,z)满足条件$$K(x,z) = phi (x)ullet phi (z)$$
下面推导F投影到的主成分定义的平面,根据F样本方差的特征值分解得(为推导方便去掉前面的((frac{1}{n-1}))$$F^THFV_i = lambda _i V_i$$由于H为等逆矩阵,则$$F^THHFV_i = lambda _i V_i$$
由于想得到F很难,我们换一种思路将求F转移求K上,根据AA^T与A^TA的关系:非零特质值相同,得到$$HFF^THU_i = lambda _iU_i $$
两边同时乘以(F^TH)得到$$F^THHFF^THU_i = lambda _iF^THU_i$$
从上式可以得到(F^THU_i)为(F^THHF)的特征向量
将(F^THU_i)进行归一化$$U_{normal} = frac{F^THU_i}{{||U_i^THFF^THU_i||}_2}$$
由于(HFF^TH = HKH = lambda _i),则$$U_{normal} = lambda ^{-frac{1}{2}}F^THU_i$$
F投影到(U_normal)定义的平面$$P = F_{center} U_{normal}$$
附:奇异值分解
奇异值分解是一个能适用于任意矩阵的一种分解方法:$$A = Uxi{V}^T$$
假设A是一个MN的矩阵,那么U就是MM的方阵(里面的向量是正交的,U里面向量为左奇异向量),(xi)为MN的实数对角矩阵(对角线以外的元素都是0,对角线上的元素为奇异值),
(V^T)是一个NN的矩阵(里面的向量是正交的,V里面的向量称为右奇异向量)
再结合特征值分解:$$(A^Tullet{A})ullet{V_i} = lambda{_i}ullet{V_i}$$
上面得到的(V_i)就是奇异值分解种的右奇异向量,(lambda{_i})为特征值
此外我们还可以得到:$$sigma{_i} = sqrt{lambda{_i}}u_i=frac{1}{sigma{_i}}AV_i$$
上面的(sigma{_i}为奇异值),(u_i)为左奇异向量
常见的做法是将奇异值由大到小排列,在大多数情况下,前10%甚至1%的奇异值的和就占了全部奇异值和的99%以上,也就是说我们可以用前r大的奇异值来近似描述矩阵
r是一个远小于m,n的数
参考资料:
- (1)李航老师的<统计学习方法>
- (2)<机器学习实战基于Scikit-Learn和TensorFlow>
- (3)<百面机器学习>