(此博文只是自己的学习笔记,不具参考价值)
Principal component analysis (PCA)
PCA算法将高维特征转换成低维特征(非线性相关),同时减小计算量。
原理
- 将原始数据按列组成 m m m行 n n n列矩阵 X X X( m m m个属性, n n n个样本)
- 将 X X X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值,得到 X ′ X' X′
- 求出协方差矩阵 C C C(计算方法见下文)
- 求出协方差矩阵 C C C的特征值及对应的特征向量
- 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k k k行组成矩阵 P P P
-
Y
=
P
×
X
Y = P\times X
Y=P×X即为降维后的数据(
k
k
k个属性,
m
m
m个样本)
([k, n] = [k, m] × \times × [m, n])
关于协方差
协方差的定义:
协方差表示的是两个变量总体误差的期望,如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。反之。
协方差计算公式:
C
o
v
(
x
,
y
)
=
E
[
(
x
−
E
(
x
)
)
(
y
−
E
(
y
)
)
]
Cov(x, y) = E[(x-E(x))(y-E(y))]
Cov(x,y)=E[(x−E(x))(y−E(y))]
协方差矩阵:
C
=
1
/
m
×
X
′
X
′
T
C = 1 / m \times X' X'^{T}
C=1/m×X′X′T(计算每个属性与其他属性的协方差,最后除以样本个数
m
m
m)。可以看到,协方差矩阵是沿对角线对称的。
关于特征值
假设现在求解矩阵
A
A
A的特征值
λ
\lambda
λ:
∣
A
−
λ
E
∣
=
0
|A - \lambda E| = 0
∣A−λE∣=0,求出特征值
λ
t
\lambda_t
λt后,将x代入之前矩阵,用高斯消元法求出它对应的特征向量[
x
1
x_1
x1,
x
2
x_2
x2,
x
3
x_3
x3, …,
x
m
x_m
xm]。