主成分分析 不但是多元统计分析的重要部分,而且在日常的数据分析工作中也发挥着重要作用。以下详细介绍主成分分析的原理和R语言实践。
PCA有什么用?
主成分分析 (principal component analysis) 简称 PCA,主要通过变量的降维,将复杂问题简单化,方便理解现状及进一步分析。降维的思想很常见,以 均值 为例,由于我们无法理解较多数字的含义,用一个均值来表达较多数字的信息,这就是很朴素的降维思想。
举个例子,以下是几个学生各科的成绩。我们很容易得出 学生成绩的好坏主要由数学和物理决定 的结论。其实这个结论已经蕴含了主成分分析的思想,将4个变量简化为2个,复杂的问题变的简单
学生 | 语文 | 数学 | 英语 | 物理 |
---|---|---|---|---|
A | 90 | 100 | 110 | 80 |
B | 90 | 90 | 110 | 90 |
C | 90 | 140 | 110 | 100 |
D | 90 | 150 | 110 | 85 |
E | 90 | 70 | 110 | 65 |
F | 90 | 65 | 110 | 75 |
G | 90 | 105 | 110 | 85 |
H | 90 | 125 | 110 | 95 |
但是各科成绩变为以下数据,结论还能轻易得出吗?
学生 | 语文 | 数学 | 英语 | 物理 |
---|---|---|---|---|
A | 55 | 100 | 110 | 80 |
B | 65 | 90 | 100 | 90 |
C | 95 | 140 | 90 | 100 |
D | 120 | 150 | 75 | 85 |
E | 140 | 70 | 130 | 65 |
F | 80 | 65 | 99 | 75 |
G | 99 | 105 | 105 | 85 |
H | 95 | 125 | 110 | 95 |
现在就能体现主成分分析的价值了,主成分与指标的关系如下:
- 主成分是原始变量的线性组合
- 主成分的个数要小于原始变量的个数
- 主成分保留了原始变量的大部分信息
- 各个主成分互不相关
PCA的原理
PCA的几何原理
要描述如下的原始数据,需要x和y两个指标,如果将坐标轴做个旋转,保留长轴信息舍弃短轴信息,那么就可以用一个指标描述原始数据,在尽量保留信息的情况下,简化了指标。
主成分分析的本质就是进行坐标系的旋转,各个主成分就是新坐标系和原坐标系的转换关系。
PCA的统计学原理
统计学求解主成分,一般用 最大方差法 ,很容易理解,我们原始数据的投影能尽量包含原始数据的信息,这就要求投影分散的最开,反映到公式上就是方差最大。
有 $p$ 维随机向量 $\textbf{X} = {\left ( X_{1},X_{2},\cdot \cdot \cdot ,X_{p} \right )}’$ ,随机向量 $\textbf{X}$ 的协方差矩阵为 $\Sigma$
对 $\textbf{X}$ 进行线性变换,形成新的综合变量,用 $\textbf{Y}$ 来表示,即
目标是 $Y_{i} = \textbf u_{i}’ \textbf X$ 的方差尽可能大,且各 $Y_{i}$ 之间互不相关
由于 $var(Y_{i}) = var(\textbf u_{i}’ \textbf X) = \textbf u_{i}’ \Sigma \textbf u_{i}$ 可以任意大,问题变的没有意义。所以增加约束条件 $\textbf u_{i}’ \textbf u_{i} = 1 $
问题变为:
引入拉格朗日乘子,将求最大方差问题变为求 $f$ 的平稳点
对 $f$ 求偏导,得
得
很神奇的是,问题变为求 $\Sigma $ 的特征值
且 ${u}’ \Sigma u = {u}’ \lambda u = \lambda {u}’ u = \lambda$
求最大方差变成了求最大特征值
note: 以上是从协方差阵出发,还有从相关阵出发的情况,可以证明原始数据的相关阵就是对原始数据标准化后的协方差阵
特征值求解见附录
PCA的R语言实践
USJudgeRatings
数据集记录了律师对美国高等法院法官的评分,包括12个维度,数据如下:
1 | > head(USJudgeRatings) |
目标是把12个维度综合成几个主成分,在尽量保留信息的前提下实现降维
1 | # 判断主成分的个数 |
从蓝线看出,在2->3时,特征值变化放缓;从红线看出,红线以上的特征值对应的主成分是1。所以此例选择1个或2个主成分都是合理的,这里我们选2个主成分
从以下结果看出:
- R基于相关阵计算主成分
- 2个主成分解释了94%的方差
- h2列为主成分对单个变量的解释程度,本例的解释程度都很强
- PC1和PC2的系数是主成分载荷(loadings),指主成分和变量的相关系数
- SS loadings为特征值
- Cumulative Var为主成分对数据的解释程度
1 | > pc = principal(USJudgeRatings, |
以下是主成分得分的系数
1 | > pc$weights |
PC1 = -0.0009660187CONT + 0.0906447029INTG +…+ 0.0973168144RTEN
PC2 = ……
附录
特征值求解示例
原始矩阵如下,用初等行列变换,求解特征值
第一步,$\lambda $ 减去对角线元素,其余元素变负
第二步,第1列和第3列互换
第三步,第1列乘 $\lambda - 2$ 加到第3列
第四步,第1列加到第2列
第五步,第2列乘-1加到第3列
第六步,对角线元素乘积等于0
特征值 $\lambda_{1} = \lambda_{2} = 2 ,\lambda_{3} = 4$