其他章节答案请参考我的汇总统计学习方法答案汇总,都是自己写的。
解:
import numpy as np
def PCA(X):# 下面先对数据进行规范化s = np.shape(X)for i in range(s[0]):mean_i = np.mean(X[i, :])s_ii = np.sqrt(sum((X[i,:] - mean_i) * (X[i,:] - mean_i)) / (s[1] - 1))X[i,:] = (X[i, :] - mean_i) / s_iiX_T = X.T / np.sqrt(s[1] - 1)#下面计算规范化之后的协方差矩阵cov_matrix = np.matmul(X_T.T, X_T)print('协方差矩阵是:', cov_matrix)#下面开始对X_T进行奇异值分解U, char, V = np.linalg.svd(X_T)#下面开始计算因子负荷量for i in range(s[0]):print('第%d个主成分对各个x变量的负荷量:'%(i + 1), char[i] * V[i, :])if __name__ == '__main__':X = np.array([[2,3,3,4,5,7],[2,4,5,5,6,8]], dtype = np.float32)PCA(X)
输出为:
协方差矩阵是:
[[1. 0.9503288][0.9503288 0.9999999]]第1个主成分对各个x变量的负荷量: [0.9875042 0.9875041]
第2个主成分对各个x变量的负荷量: [ 0.157593 -0.15759301]
证:计算数学的我直接懵了,看下面这个大佬的解答吧:样本协方差矩阵是总体协方差矩阵的无偏估计,大概是知道了怎么回事,过一段时间自己证明一下。
证:
1、先证明主成分求解是所给最优化的解。
因为下面两个最优化问题是等价的
m i n L ∥ X − L ∥ F s . t . r a n k ( L ) ≤ k underset{L}{min} left | X-L right | _F\ s.t.quad rank(L)le k Lmin∥X−L∥Fs.t.rank(L)≤k
m i n L ∥ X ′ n − 1 − L ′ n − 1 ∥ F s . t . r a n k ( L ) ≤ K underset{L}{min} left | frac{X^{'}}{sqrt{n-1}}- frac{L^{'}}{sqrt{n-1}} right | _F\ s.t.quad rank(L)le K Lmin∥∥∥∥∥n−1 X′−n−1 L′∥∥∥∥∥Fs.t.rank(L)≤K
之所以给出这个等价的最优化问题,是为了使用主成分分析的奇异值分解方法。我们将下面的最优化问题仍然记为
m i n L ∥ X − L ∥ F s . t . r a n k ( L ) ≤ k (1) underset{L}{min} left | X-L right | _F\ s.t.quad rank(L)le k tag{1} Lmin∥X−L∥Fs.t.rank(L)≤k(1)
这样我们对 X X X进行奇异值分解得到
X = U Σ V T (2) X = USigma V^{T}tag{2} X=UΣVT(2)
将公式(2)带入(1)的目标函数我们得到
∥ X − L ∥ F = ∥ U Σ V T − U U T L V V T ∥ F = ∥ Σ − U T L V ∥ F left | X-L right | _F = left | USigma V^{T}-UU^{T}LVV^{T} right | _F\=left | Sigma -U^{T}LV right | _F ∥X−L∥F=∥∥UΣVT−UUTLVVT∥∥F=∥∥Σ−UTLV∥∥F
其中 Σ = D i a g { λ 1 , λ 2 , . . . , λ n } Sigma=Diag{lambda_{1},lambda_{2},...,lambda_{n}} Σ=Diag{λ1,λ2,...,λn}是一个对角矩阵,因为矩阵 L L L的秩最大为 k k k,结合题目中范数的定义,我们得到当 U T L V U^{T}LV UTLV也是一个对角矩阵的时候,且 U T L V = D i a g { λ 1 , λ 2 , . . . , λ k , 0 , 0 , . . . , 0 } U^{T}LV=Diag{lambda_{1},lambda_{2},...,lambda_{k},0,0,...,0} UTLV=Diag{λ1,λ2,...,λk,0,0,...,0}的时候,求得极小值,也就是
L = U ∗ D i a g { λ 1 , λ 2 , . . . , λ k , 0 , 0 , . . . , 0 } ∗ V T L = U*Diag{lambda_{1},lambda_{2},...,lambda_{k},0,0,...,0} *V^{T} L=U∗Diag{λ1,λ2,...,λk,0,0,...,0}∗VT
因为求主成分就等价于求得 { λ 1 , λ 2 , . . . , λ k , 0 , 0 , . . . , 0 } , U , V {lambda_{1},lambda_{2},...,lambda_{k},0,0,...,0},U,V {λ1,λ2,...,λk,0,0,...,0},U,V,根据这个最优化问题的解L的表达形式,我们可以知道已经将这个优化问题解决了。
2、下面根据最优化问题的解来推出主成分。
假设 L 0 L_{0} L0是上面那个优化问题的最优解,我们对这个矩阵解 L 0 L_{0} L0进行奇异值分解, L 0 = U A V T (3) L_{0} = UAV^{T}tag{3} L0=UAVT(3)
其中 A A A是一个对角阵,我们将公式(3)带入最优化问题(1)的目标函数里面就得到
∥ X − L 0 ∥ F = ∥ U U T X V V T − U A V T ∥ F = ∥ U T X V − A ∥ F left | X-L_{0} right | _F = left | UU^{T}X VV^{T}-UAV^{T} right | _F\=left | U^{T}X V-A right | _F ∥X−L0∥F=∥∥UUTXVVT−UAVT∥∥F=∥∥UTXV−A∥∥F
因为A是对角阵,要使得问题达到最优,要使A的秩尽可能的大,且U,V使得X也是一个对角矩阵。一定可以使得 U T X V U^{T}X V UTXV成为一个对角阵,如果不是,我们对 X X X进行奇异值分解,可以得到另外一个比 L 0 L_{0} L0更优解,这与 L 0 L_{0} L0是最优解就矛盾,因而到此得证!
本文发布于:2024-02-02 13:26:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685156144101.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |