目录
[Google PageRank](#Google PageRank)
一、前言
在学习机器学习、推荐系统、图计算、PCA降维等算法时,经常会遇到一个概念:
特征分解(Eigen Decomposition)
很多人第一次看到时都会被下面这个公式吓到:
A × v = λ × v
感觉像是高等数学中的神秘符号。
实际上,特征分解并没有想象中那么复杂。
如果用一句话来描述:
特征分解的本质,就是寻找一个矩阵作用后"方向不变"的特殊向量。
理解了这句话,你就理解了特征分解最核心的思想。
二、从现实问题开始理解
假设有一张地图。
地图上的每一个点都可以表示为:
(x,y)
现在对地图进行缩放:
横向放大2倍
纵向放大3倍
例如:
(1,1)
变成:
(2,3)
大多数点都会:
位置改变
方向改变
但是有一些特殊方向:
只会被拉伸
不会改变方向
这些特殊方向就是:
特征向量(Eigen Vector)
对应的拉伸倍数就是:
特征值(Eigen Value)
三、什么是特征向量
假设有一个矩阵:
A =
[
2 0
0 3
]
以及一个向量:
v =
[
1
0
]
矩阵乘法:
A × v
=
[
2
0
]
可以发现:
结果方向没有变化
只是长度变成了原来的2倍
因此:
v
就是特征向量。
对应:
λ = 2
就是特征值。
四、特征分解的数学定义
如果存在:
A × v = λ × v
则:
v
称为矩阵:
A
的特征向量。
而:
λ
称为对应的特征值。
其中:
A
矩阵
v
特征向量
λ
特征值
这也是线性代数中最经典的公式之一。
五、为什么需要特征分解
现实中的数据往往非常复杂。
例如:
用户行为数据
商品数据
金融数据
图像数据
这些数据可以组成一个巨大的矩阵。
我们希望知道:
哪些方向最重要
哪些方向信息最多
哪些方向最能代表数据
这时候:
特征分解
就派上用场了。
六、特征分解过程
整体流程:

七、如何求特征值
从公式:
A × v = λ × v
开始。
移项:
A × v - λ × v = 0
提取:
(A - λI) × v = 0
要让:
v ≠ 0
成立。
必须满足:
det(A - λI) = 0
这称为:
特征方程
求解该方程即可得到所有特征值。
八、一个简单例子
矩阵:
A =
[
4 1
2 3
]
计算:
det(A - λI) = 0
得到:
λ² - 7λ + 10 = 0
求解:
λ1 = 5
λ2 = 2
对应可以继续求出:
特征向量1
特征向量2
这样:
矩阵的重要方向
就被找到了。
九、特征分解的本质
很多教材讲了大量公式。
但核心其实很简单:
矩阵代表:
一种变换
例如:
旋转
缩放
拉伸
压缩
而特征分解寻找的是:
变换后方向不变的向量
例如:
普通向量
→ 改变方向
而:
特征向量
→ 保持方向
只改变长度。
长度变化倍数:
就是特征值
十、机器学习中的应用
PCA主成分分析
PCA是特征分解最经典的应用。
目标:
高维数据
↓
低维数据
例如:
100个特征
↓
10个特征
步骤:
计算协方差矩阵
↓
特征分解
↓
选取最大特征值对应方向
↓
完成降维
图像压缩
图片本质:
矩阵
通过特征分解:
保留主要信息
舍弃次要信息
实现压缩。
推荐系统
用户商品矩阵:
用户 × 商品
进行特征分解后:
提取用户兴趣
提取商品特征
用于推荐。
Google PageRank
网页链接关系:
网页 × 网页
形成矩阵。
通过特征分解:
寻找最重要网页
实现搜索排序。
十一、Python实现特征分解
NumPy已经提供了现成方法。
python
import numpy as np
A = np.array([
[4,1],
[2,3]
])
# 特征分解
eigenvalues, eigenvectors = np.linalg.eig(A)
print("特征值:")
print(eigenvalues)
print("特征向量:")
print(eigenvectors)
输出:
特征值:
[5. 2.]
特征向量:
[
[0.7071 -0.4472]
[0.7071 0.8944]
]
说明:
矩阵存在两个特征值
5
2
以及对应特征向量。
十二、特征值大小意味着什么
通常:
特征值越大
代表该方向越重要
例如:
λ1 = 100
λ2 = 5
λ3 = 1
说明:
第一个方向包含绝大部分信息
因此:
优先保留λ1对应特征向量
这也是 PCA 降维的核心思想。
十三、特征分解与奇异值分解(SVD)
很多同学会混淆:
特征分解
Eigen Decomposition
和:
奇异值分解
SVD
区别:
特征分解
要求:
必须是方阵
即:
行数 = 列数
SVD
适用于:
任意矩阵
因此:
应用更广
推荐系统中常用:
SVD
而:
PCA
图分析
PageRank
常使用特征分解。
十四、总结
特征分解是线性代数中极其重要的工具。
核心公式:
A × v = λ × v
含义:
寻找矩阵变换后
方向保持不变的向量
其中:
v
特征向量
λ
特征值
应用场景:
PCA降维
图像压缩
推荐系统
PageRank
图计算
机器学习
可以这样理解:
矩阵描述世界
特征分解寻找世界中最重要的方向
掌握特征分解之后,再学习 PCA、SVD、协方差矩阵、推荐系统矩阵分解等高级算法时,就会轻松许多。