主成分分析(PCA)详解


主成分分析(PCA)是一种常用的无监督学习方法,利用正交变换把由线性相关变量表示的观测数据转换为几个由线性无关变量表示的数据。线性无关的变量称为主成分。主成分的个数通常小于原始变量的个数,所以PCA是一种降维算法。

实现方式与几何解释

主成分分析步骤如下:

(1)对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1。

(2)对数据进行正交变换,原来由线性相关变量表示的数据,通过正交变换变成由若干个线性无关的新变量表示的数据。

新变量是可能的正交变换中变量的方差的和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量依次称为第一主成分、第二主成分等。

举例说明:

设数据在原坐标系由变量x1x_1x2x_2 表示,如图(a)。PCA对数据进行正交变换(对原坐标系进行旋转变换),通过正交变换后,在新坐标系里,由变量y1y_1y2y_2表示。主成分分析选择方差最大的方向(第一主成分)作为新坐标系的第一坐标轴,即y1y_1 。之后选择与第一坐标轴y1y_1 正交,且方差次之的方向(第二主成分)作为新坐标系的第二坐标轴,即y2y_2 轴,如图(b)。在新坐标系里,数据中的变量y1y_1y2y_2 是线性无关的。

主成分分析(PCA)详解

那么怎么样才能确定方差最大呢?设坐标系由变量x1x_1x2x_2 表示,三个样本点A、B、C。对坐标轴进行旋转变换得到新的坐标轴y1y_1。样本点A,B,C在y1y_1上投影得到A,B,CA',B',C'

主成分分析(PCA)详解

坐标值的平方和OA2+OB2+OC2OA'^2+OB'^2+OC'^2 ,表示样本在变量y1y_1 上的方差和。主成分分析旨在选取正交变换中方差最大的变量作为第一主成分,也就是旋转变换中坐标值的平方和最大的值轴。在旋转变换中样本点到原点的距离的平方和OA2+OB2+OC2OA^2+OB^2+OC^2 保持不变。由勾股定理可知: 坐标值的平方和OA2+OB2+OC2OA'^2+OB'^2+OC'^2 最大等价于样本到y1y_1 轴的距离的平方和AA2+BB2+CC2AA'^2+BB'^2+CC'^2 最小。所以,第一主成分是指在旋转变换中选取离样本点的距离平方和最小的轴。第二主成分的选取要保证与已选坐标轴正交的条件下,类似进行。

定义

线性变换的协方差(相关)矩阵

假设数据样本矩阵XX 如下:
X=[x1x2xn]=[x11x12x1nx21x22x2nxm1xm2 xmn] X=[\textbf x_1\quad \textbf x_2 \quad \ldots \textbf x_n]=\begin{bmatrix}x_{11} & x_{12} & \cdots & x_{1n} \\x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\x_{m1} & x_{m2} & \cdots\ & x_{mn} \\\end{bmatrix}
其中,xj=(x1j,x2j,,xmj)\vec x_j =(x_{1j},x_{2j},\ldots,x_{mj}) 表示第jj 个观测样本(每一列均表示一个样本,一共n个样本,每个样本m个特征)。

样本均值为:
xˉ=1nj=1nxj \bar{\textbf x}=\frac{1}{n}\sum\limits_{j=1}^n \textbf x_j
样本的协方差矩阵SS
S=[sij]m×msij=1n1k=1n(xikxˉi)(xjkxˉj)i,j=1,2,,m S = [s_{ij}]_{m\times m}\\ 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,\ldots,m
其中,xˉi=1nk=1nxik\bar x_i = \frac{1}{n} \sum_{k=1}^n x_{ik}

样本的相关矩阵RR 为:
R=[rij]m×mrij=sijsiisjj R = [r_{ij}]_{m\times m} \\ r_{ij} = \frac{s_{ij}}{\sqrt{s_{ii}s_{jj}}}
定义 m 维向量x=(x1,x2,xm)Tx=(x_1,x_2\ldots,x_m)^T 到 m 维向量y=(y1,y2,,ym)Ty=(y_1,y_2,\ldots,y_m)^T 的线性变换:
y=ATx \textbf y = A^T \textbf x
其中:
A=[a1a2am]=[a11a12a1na21a22a2nam1am2 amn] A = [a_1 \quad a_2 \ldots a_m] = \begin{bmatrix}a_{11} & a_{12} & \cdots & a_{1n} \\a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\a_{m1} & a_{m2} & \cdots\ & a_{mn} \\\end{bmatrix} \\
对于任意一个线性变换:
yi=aiTx=a1ix1+a2ix2++amixm,i=1,2,m y_i = a_i^T \textbf x = a_{1i}x_1+a_{2i}x_2+ \ldots + a_{mi}x_m, \quad i=1,2\ldots,m
yiy_i 是m维向量y\textbf y 的第ii 个变量,其样本均值为:
yˉi=1nj=1naiTxj=aiTxˉxˉ=1nj=1nxj \bar y_i = \frac{1}{n} \sum_{j=1}^n a_i^T \textbf x_j = a_i^T \bar{\textbf x} \\ \bar{\textbf x}=\frac{1}{n}\sum\limits_{j=1}^n \textbf x_j
yiy_i 的样本方差var(yi)var(y_i) 为:
var(yi)=1n1j=1n(aiTxjaiTxˉ)2=aiT[1n1j=1n(xjxˉ)(xjxˉ)T]ai=aiTSai \begin{aligned} var(y_i) &= \frac{1}{n-1} \sum_{j=1}^n(a_i^T \textbf x_j - a_i^T \bar {\textbf x} )^2 \\ &= a_i^T \left[ \frac{1}{n-1} \sum_{j=1}^n(\textbf x_j - \bar{\textbf x})(\textbf x_j - \bar{\textbf x})^T \right] a_i \\ &=a_i^TSa_i \end{aligned}
推广:对任意两个线性变换yi=αiTxyk=αkTxy_i=\alpha_i^T \textbf x \quad y_k=\alpha_k^T \textbf x ,其协方差为:
cov(yi,yk)=aiTSak cov(y_i, y_k) = a_i^TSa_k

定义

给定样本矩阵XX

第一主成分: y1=a1Txy_1 = a_1^T \textbf x 是在a1Ta1=1a_1^Ta_1=1 的条件下,使得a1Txja_1^T x_j 的样本方差a1TSa1a_1^TSa_1 最大的 x\textbf x 的线性变换。

第二主成分:y2=a2Txy_2 = a_2^T \textbf x 除了要满足 a2Ta2=1a_2^Ta_2=1 ,还要满足a1Txja_1^T x_ja2Txja_2^T x_j 的协方差a1TSa2=0a_1^TSa_2=0 的条件下,使得a2Txja_2^T x_j 的样本方差a2TSa2a_2^TSa_2 最大的 x\textbf x 的线性变换。

推广:第ii 主成分:yi=aiTxy_i = a_i^T \textbf x 是在aiTai=1a_i^Ta_i=1aiTxja_i^T x_jakTxja_k^T x_j 的协方差akTSai=0a_k^TSa_i=0 的条件下,使得aiTxja_i^T x_j 的样本方差aiTSaia_i^TSa_i 最大的 x\textbf x 的线性变换。

使用主成分分析时,要先对数据进行规范化,即:
xij=xijxiˉsii x_{ij} = \frac{x_{ij} - \bar{x_i}}{\sqrt{s_{ii}}}
此时,样本的协方差矩阵S 就是样本的相关矩阵 R:
R=1n1XXT R = \frac{1}{n-1} X X^T

相关矩阵的特征值分解算法

(1)先对数据进行规范化处理,得到规范化矩阵XX

(2)计算XX 的相关矩阵RR (协方差矩阵S)。

(3)求样本相关矩阵 R 的 kk 个特征值:λ1λ2λm\lambda_1 \ge \lambda_2 \ge \ldots \ge \lambda_m 和对应的kk 个单位特征向量:a1,a2,ama_1,a_2,\ldots a_m

(4)求样本主成分:
y=ATx \textbf y = A^T \textbf x
其中A=[a1a2am]A = [a_1 \quad a_2 \ldots a_m]

(5)计算第kk主成分的方差贡献率:
ηk=λki=1mλi \eta_k = \frac{\lambda_k}{\sum_{i=1}^m \lambda_i}