主成分分析(PCA)详解


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

实现方式与几何解释

主成分分析步骤如下:

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

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

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

举例说明:

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

在这里插入图片描述

那么怎么样才能确定方差最大呢?设坐标系由变量 x 1 x_1 x1 x 2 x_2 x2 表示,三个样本点A、B、C。对坐标轴进行旋转变换得到新的坐标轴 y 1 y_1 y1。样本点A,B,C在 y 1 y_1 y1上投影得到 A ′ , B ′ , C ′ A',B',C' A,B,C

在这里插入图片描述

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

定义

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

假设数据样本矩阵 X X X 如下:
X = [ x 1 x 2 … x n ] = [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯   x m n ] 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} X=[x1x2xn]=x11x21xm1x12x22xm2 x1nx2nxmn
其中, x ⃗ j = ( x 1 j , x 2 j , … , x m j ) \vec x_j =(x_{1j},x_{2j},\ldots,x_{mj}) x j=(x1j,x2j,,xmj) 表示第 j j j 个观测样本(每一列均表示一个样本,一共n个样本,每个样本m个特征)。

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

样本的相关矩阵 R R R 为:
R = [ r i j ] m × m r i j = s i j s i i s j j R = [r_{ij}]_{m\times m} \\ r_{ij} = \frac{s_{ij}}{\sqrt{s_{ii}s_{jj}}} R=[rij]m×mrij=siisjj sij
定义 m 维向量 x = ( x 1 , x 2 … , x m ) T x=(x_1,x_2\ldots,x_m)^T x=(x1,x2,xm)T 到 m 维向量 y = ( y 1 , y 2 , … , y m ) T y=(y_1,y_2,\ldots,y_m)^T y=(y1,y2,,ym)T 的线性变换:
y = A T x \textbf y = A^T \textbf x y=ATx
其中:
A = [ a 1 a 2 … a m ] = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯   a m n ] 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} \\ A=[a1a2am]=a11a21am1a12a22am2 a1na2namn
对于任意一个线性变换:
y i = a i T x = a 1 i x 1 + a 2 i x 2 + … + a m i x m , 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 yi=aiTx=a1ix1+a2ix2++amixm,i=1,2,m
y i y_i yi 是m维向量 y \textbf y y 的第 i i i 个变量,其样本均值为:
y ˉ i = 1 n ∑ j = 1 n a i T x j = a i T x ˉ x ˉ = 1 n ∑ j = 1 n x j \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 yˉi=n1j=1naiTxj=aiTxˉxˉ=n1j=1nxj
y i y_i yi 的样本方差 v a r ( y i ) var(y_i) var(yi) 为:
v a r ( y i ) = 1 n − 1 ∑ j = 1 n ( a i T x j − a i T x ˉ ) 2 = a i T [ 1 n − 1 ∑ j = 1 n ( x j − x ˉ ) ( x j − x ˉ ) T ] a i = a i T S a i \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} var(yi)=n11j=1n(aiTxjaiTxˉ)2=aiT[n11j=1n(xjxˉ)(xjxˉ)T]ai=aiTSai
推广:对任意两个线性变换 y i = α i T x y k = α k T x y_i=\alpha_i^T \textbf x \quad y_k=\alpha_k^T \textbf x yi=αiTxyk=αkTx ,其协方差为:
c o v ( y i , y k ) = a i T S a k cov(y_i, y_k) = a_i^TSa_k cov(yi,yk)=aiTSak

定义

给定样本矩阵 X X X

第一主成分: y 1 = a 1 T x y_1 = a_1^T \textbf x y1=a1Tx 是在 a 1 T a 1 = 1 a_1^Ta_1=1 a1Ta1=1 的条件下,使得 a 1 T x j a_1^T x_j a1Txj 的样本方差 a 1 T S a 1 a_1^TSa_1 a1TSa1 最大的 x \textbf x x 的线性变换。

第二主成分: y 2 = a 2 T x y_2 = a_2^T \textbf x y2=a2Tx 除了要满足 a 2 T a 2 = 1 a_2^Ta_2=1 a2Ta2=1 ,还要满足 a 1 T x j a_1^T x_j a1Txj a 2 T x j a_2^T x_j a2Txj 的协方差 a 1 T S a 2 = 0 a_1^TSa_2=0 a1TSa2=0 的条件下,使得 a 2 T x j a_2^T x_j a2Txj 的样本方差 a 2 T S a 2 a_2^TSa_2 a2TSa2 最大的 x \textbf x x 的线性变换。

推广:第 i i i 主成分: y i = a i T x y_i = a_i^T \textbf x yi=aiTx 是在 a i T a i = 1 a_i^Ta_i=1 aiTai=1 a i T x j a_i^T x_j aiTxj a k T x j a_k^T x_j akTxj 的协方差 a k T S a i = 0 a_k^TSa_i=0 akTSai=0 的条件下,使得 a i T x j a_i^T x_j aiTxj 的样本方差 a i T S a i a_i^TSa_i aiTSai 最大的 x \textbf x x 的线性变换。

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

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

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

(2)计算 X X X 的相关矩阵 R R R (协方差矩阵S)。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值