其他章节答案请参考我的汇总统计学习方法答案汇总,都是自己写的。
1、对以下样本进行主成分分析: [ 2 3 3 4 5 7 2 4 5 5 6 8 ] \begin{bmatrix}2 & 3 & 3 & 4 & 5& 7\\2 & 4 & 5 & 5 & 6 &8\end{bmatrix} [223435455678]
解:
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_ii
X_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]
2、证明样本协方差矩阵S是总体协方差矩阵方差 Σ \Sigma Σ的无偏估计。
证:计算数学的我直接懵了,看下面这个大佬的解答吧:样本协方差矩阵是总体协方差矩阵的无偏估计,大概是知道了怎么回事,过一段时间自己证明一下。
3、设 X X X为数据样本的规范化矩阵,则主成分等价于求解以下最优化问题: 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,这里 F F F是佛罗贝尼乌斯范数, k k k是主成分的个数。试问为什么?
证:
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−1X′−n−1L′∥∥∥∥∥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 = U\Sigma 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 \| U\Sigma 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是最优解就矛盾,因而到此得证!