Chapter 14
第16章 主成分分析
第16章 主成分分析
习题16.1
对以下样本数据进行主成分分析:
解答:
解答思路:
- 给出主成分分析算法
- 自编程基于
numpy库实现主成分分析算法
解答步骤:
第1步:主成分分析算法
主成分分析方法主要有两种,可以通过相关矩阵的特征值分解或样本矩阵的奇异值分解进行。
- 相关矩阵的特征值分解算法
根据书中第16.2.2节的相关矩阵的特征值分解算法具体步骤:
> > 其中 > $$ \begin{array}{ll} \displaystyle \bar{x}_i = \frac{1}{n} \sum_{j=1}^n x_{ij}, \quad i = 1,2,\cdots,m \\ \displaystyle s_{ii} = \frac{1}{n-1} \sum_{j=1}^n (x_{ij} - \bar{x}_i)^2, \quad i = 1,2,\cdots,m \end{array}(1)对观测数据按照如下公式进行规范化处理,得到规范化数据矩阵,仍以表示
> > 其中 > > $$ r_{ij} = \frac{1}{n-1} \sum_{l=1}^n x_{il}x_{lj}, \quad i,j=1,2,\cdots,m(2)依据规范化数据矩阵,计算样本相关矩阵
> > 得$R$的$m$个特征值 > > $$ \lambda_1 \geqslant \lambda_2 \geqslant \cdots \geqslant \lambda_m(3)求样本相关矩阵的个特征值和对应的个单位特征向量。 求解的特征方程
> > (4)求$k$个样本主成分 > 以$k$个单位特征向量为系数进行线性变换,求出$k$个样本主成分 > > $$ y_i = a_i^T x, \quad i=1,2,\cdots,k求方差贡献度达到预定值的主成分个数。
求前个特征值对应的单位特征向量
(5)计算个主成分与原变量的相关系数,以及个主成分对原变量的贡献率。
(6)计算个样本的个主成分值
将规范化样本数据带入个主成分式,得到个样本的主成分值。第个样本的第个主成分值是
i = 1,2,\cdots,m, \quad j=1,2,\cdots, n
  根据书中第16章的定义16.2给出了方差贡献率: > **定义16.2** 第$k$主成分$y_k$的方差贡献率定义为$y_k$的方差与所有方差之和的比,记作$\eta_k$ > > $$ \eta_k = \frac{\lambda_k}{\displaystyle \sum_{i=1}^m \lambda_i} \tag{16.30}2. 样本矩阵的奇异值分解算法   根据书中第16章的算法16.1主成分分析算法 > **算法16.1(主成分分析算法)** > 输入:$m \times n$样本矩阵$X$,其每一行元素的均值为零; > 输出:$k \times n$样本主成分矩阵$Y$。 > 参数:主成分个数$k$ > (1)构造新的$n \times m$矩阵 > $$ X' = \frac{1}{\sqrt{n - 1}} X^T个主成分的累计方差贡献率定义为个方差之和与所有方差之和的比
> 有$k$个奇异值、奇异向量。矩阵$V$的前$k$列构成$k$个样本主成分。 > (3)求$k \times n$样本主成分矩阵 > $$ Y = V^T X每一列的均值为零。
(2)对矩阵进行截断奇异值分解,得到
第2步:自编程基于numpy库实现主成分分析算法
import numpy as np
def pca_svd(X, k):
"""
样本矩阵的奇异值分解的主成分分析算法
:param X: 样本矩阵X
:param k: 主成分个数k
:return: 特征向量V,样本主成分矩阵Y
"""
n_samples = X.shape[1]
# 构造新的n×m矩阵
T = X.T / np.sqrt(n_samples - 1)
# 对矩阵T进行截断奇异值分解
U, S, V = np.linalg.svd(T)
V = V[:, :k]
# 求k×n的样本主成分矩阵
return V, np.dot(V.T, X)X = np.array([[2, 3, 3, 4, 5, 7],
[2, 4, 5, 5, 6, 8]])
X = X.astype("float64")
# 规范化变量
avg = np.average(X, axis=1)
var = np.var(X, axis=1)
for i in range(X.shape[0]):
X[i] = (X[i, :] - avg[i]) / np.sqrt(var[i])
# 设置精度为3
np.set_printoptions(precision=3, suppress=True)
V, vnk = pca_svd(X, 2)
print("正交矩阵V:")
print(V)
print("样本主成分矩阵Y:")
print(vnk)正交矩阵V:
[[ 0.707 0.707]
[ 0.707 -0.707]]
样本主成分矩阵Y:
[[-2.028 -0.82 -0.433 0. 0.82 2.461]
[ 0.296 -0.046 -0.433 0. 0.046 0.137]]习题16.2
证明样本协方差矩阵是总体协方差矩阵的无偏估计。
解答:
解答思路:
- 给出总体协方差矩阵
- 给出样本协方差矩阵
- 给出无偏估计的定义
- 证明样本协方差矩阵是总体协方差矩阵的无偏估计
解答步骤:
第1步:总体协方差矩阵
根据书中第16章的定理16.1:
> $x$的第$k$主成分的方差是 > $$ \text{var}(y_k) = \alpha_k^T \Sigma \alpha_k = \lambda_k, \quad k = 1, 2, \cdots, m定理16.1 设是维随机变量,是的协方差矩阵,的特征值分别是,特征值对应的单位特征向量分别是,则的第个主成分是
即协方差矩阵的第个特征值。
根据书中第16章的本章概要的总体主成分的性质:
**第2步:样本协方差矩阵$S$**   根据书中第16.2.1的样本协方差矩阵定义: >   给定样本矩阵$X$,可以估计样本均值,以及样本协方差。样本均值向量$\bar{x}$为 > $$ \bar{x} = \frac{1}{n} \sum_{j=1}^n x_j \tag{16.40}主成分的协方差矩阵是对角矩阵
样本协方差矩阵为
S = [s_{ij}]{m \times m} \ \displaystyle s{ij} = \frac{1}{n - 1} \sum_{k=1}^n (x_{ik} - \bar{x}i)(x{jk} - \bar{x}_j), \quad i,j=1,2,\cdots,m \end{array} \tag{16.41}
**第3步:无偏估计的定义**   根据《实用多元统计分析》(方开泰,1989年9月第一版)中第88~89页的无偏性: > 如果参数$\theta$的某个估计$\hat{\theta}$满足$E(\hat{\theta})=\theta$,则称$\hat{\theta}$是无偏的。······引理3.4还指出: > > $$ \hat{\Sigma} = \frac{1}{n} A^d = \frac{1}{n}\sum_{\alpha=1}^{n-1}z_{\alpha} z'_{\alpha}> > $\hat{\Sigma}$不是$\Sigma$的无偏估计,但可修正一下使之为无偏估计。令 > > $$ S = \frac{1}{n-1}A独立同分布于,于是
则是的无偏估计。在实用中普遍采用来估计。
无偏估计是用样本统计量来估计总体参数的一种无偏推断。估计量的期望等于被估计参数的真实值,则称此估计量为被估计参数的无偏估计,即具有无偏性。表示在多次重复下,它们的平均数接近所估计的参数真值。
第4步:证明样本协方差矩阵是总体协方差矩阵的无偏估计
由样本协方差矩阵定义:
令:
根据无偏估计的定义,证明样本协方差矩阵是总体协方差矩阵的无偏估计,即证明样本协方差矩阵的期望等于总体协方差矩阵:
即证明:
参考《应用多元统计分析 第五版》(王学民,2017年8月第5版)书中第51页的无偏性一节的推导
> 于是 > $$ \begin{aligned} E(\hat{\Sigma}) &= \frac{1}{n} E\Big[ \sum_{i=1}^n (x_i - \bar{x}) (x_i - \bar{x})' \Big] \\ &= \frac{1}{n} E\Big \{ \sum_{i=1}^n \big[ (x_i - \mu) - (\bar{x} - \mu) \big ] \big[ (x_i - \mu ) - (\bar{x} - \mu) \big ]' \Big \} \\ &= \frac{1}{n} E \big [ \sum_{i=1}^n (x_i - \mu)(x_i - \mu)' - n(\bar{x} - u)(\bar{x} - u)' \big ] \\ &= \frac{1}{n} \big[ \sum_{i=1}^n V(x_i) - nV(\bar{x}) \big] \\ &= \frac{1}{n} \left(n \Sigma - n \cdot \frac{1}{n} \Sigma \right) \\ &= \frac{n-1}{n} \Sigma \end{aligned}依(2.2.14)式
因此,样本协方差矩阵是总体协方差矩阵的无偏估计。
习题16.3
设为数据规范化样本矩阵,则主成分等价于求解以下最优化问题:
其中,是弗罗贝尼乌斯范数,是主成分个数。试问为什么?
解答:
解答思路:
- 给出弗罗贝尼乌斯范数的定义
- 给出矩阵的最优近似
- 证明主成分是该最优化问题的最优解,该最优化问题的最优解是的主成分
解答步骤:
第1步:弗罗贝尼乌斯范数
根据书中第15章的定义15.4的弗罗贝尼乌斯范数:
**第2步:矩阵的最优近似**   根据书中第15.3.2节的定理15.3: >   **定理15.3** 设矩阵$A \in R^{m \times n}$,矩阵的秩$\text{rank}(A) = r$,有奇异值分解$A=U \Sigma V^T$,并设$\mathcal{M}$为$R^{m \times n}$中所有秩不超过$k$的矩阵的集合,$0 < k < r$,若秩为$k$的矩阵$X \in \mathcal{M}$满足 > $$ \big \| A - X \big \|_F = \min_{S \in \mathcal{M}} \big \| A - S \big \|_F定义15.4(弗罗贝尼乌斯范数) 设矩阵,,定义矩阵的弗罗贝尼乌斯范数为
> 特别地,若$A'=U\Sigma' V^T$,其中 > $$ \Sigma' = \left [ \begin{array}{cccccc} \sigma_1 & & & & & \\ & \ddots & & & 0 & \\ & & \sigma_{k} & & & \\ & & & 0 & & \\ & 0 & & & \ddots & \\ & & & & & 0 \end{array} \right] = \left[ \begin{array}{cc} \Sigma_k & 0 \\ 0 & 0 \end{array} \right]则
**第3步:证明命题**   根据样本矩阵的奇异值分解算法(主成分分析算法),针对$m \times n$样本矩阵$X$,需要表示为则
X' = \frac{1}{\sqrt{n-1}}X^T
\begin{array}{cl} \min \limits_L &\displaystyle \left |\frac{1}{\sqrt{n-1}} X^T - \frac{1}{\sqrt{n-1}} L^T \right |_F \ \text{s.t.} & \text{rank}(L) \leqslant k \end{array}
  令X' = \frac{1}{\sqrt{n-1}}X^T, L' = \frac{1}{\sqrt{n-1}}L^T
  则原最优化问题等价于\begin{array}{cl} \min \limits_L & |X' - L' |_F \ \text{s.t.} & \text{rank}(L) \leqslant k \ & \displaystyle X' = \frac{1}{\sqrt{n-1}}X^T \ & \displaystyle L' = \frac{1}{\sqrt{n-1}}L^T \end{array}
  对$X'$进行奇异值分解,根据已知主成分个数为$k$,$X'$的主成分个数也为$k$个,则X' = U' \Sigma' V'^T
  结合第2步,可知变换后的最优化问题和定理15.3类似,形如:A \sim X' \ S \sim L'
  可找到 $\Sigma' = \text{diag} (\lambda'_1, \lambda'_2, \cdots, \lambda'_k, 0, 0, \cdots, 0)$ 使得变换后的目标函数取最小值,即存在矩阵满足主成分条件。 ## 参考文献 【1】方开泰. 实用多元统计分析[M]. 1989-09:88-89 【2】王学民. 应用多元统计分析 第五版[M]. 2017-08:51