博主从事机器学习相关的工作已经四五年了,在实践中很多次用到主成分分析这个方法,我也会去查很多资料,但是我们在网上看到的主成分分析资料大多是从数学角度谈这个算法。
今天博主从自己实践主成分分析那么多次的角度谈谈这个算法。
(1)第一点,我认为主成分分析在使用之前,我们需要对自己的任务先要有着清晰的理解,主成分分析它的作用是固定的,为什么说主成分分析作用是固定的,因为这个算法有着固定的计算方法,如果我们想要去改进,往往需要有着很深厚的数学功底,所以往往人们都采用主成分分析的原型算法去使用,所以,他并不是灵活多变的,在使用这个算法之前,我们需要深刻了解这个算法,并知道这个算法是否真的对我们的任务有着益处。
(2)那么我们就来看看主成分分析这个算法的实现过程:
假设我们现在有着一个个的样本:
x
1
,
x
2
,
.
.
.
x
n
,
我们用
X
表示
X
=
[
x
1
,
x
2
,
.
.
.
x
n
]
x_1,x_2,...x_n,我们用X表示X=[x_1,x_2,...x_n]
x1,x2,...xn,我们用X表示X=[x1,x2,...xn]
这是我们想要对
x
1
,
x
2
,
.
.
.
x
n
x_1,x_2,...x_n
x1,x2,...xn降维,因为我们认为
x
i
x_i
xi的维度太大了,且有很多冗余的信息,所以我们想要降维,但是我们又想要考虑
x
1
,
x
2
,
.
.
.
x
n
x_1,x_2,...x_n
x1,x2,...xn整体信息不丢失,于是我们考虑对
x
i
x_i
xi进行特征空间映射。
注:
x
i
x_i
xi为一个多维向量。
怎么做呢?
我们通过方向向量投影的方式降维。如果此时有一个方向向量
w
w
w,且取
∣
w
∣
|w|
∣w∣=1,即其模长为1,我们通过
w
T
x
i
w^Tx_i
wTxi就可以将
x
i
x_i
xi映射成
w
w
w方向上的一个值。
那么我们为了信息尽量少的流失,所以我们选择:
映射之后
x
1
,
x
2
,
.
.
.
x
n
x_1,x_2,...x_n
x1,x2,...xn方差最大:
于是想找到一个
w
w
w,使得映射之后的
w
T
x
1
,
w
T
x
2
,
w
T
x
3
.
.
.
w
T
x
n
w^Tx_1,w^Tx_2,w^Tx_3...w^Tx_n
wTx1,wTx2,wTx3...wTxn方差最大。
于是有了如下优化数学公式
a
r
g
m
a
x
w
1
N
(
w
T
X
−
w
T
X
‾
)
(
w
T
X
−
w
T
X
‾
)
T
argmax_{w}\frac{1}{N}(w^TX-w^T \overline{X})(w^TX-w^T \overline{X})^T
argmaxwN1(wTX−wTX)(wTX−wTX)T
∣
w
∣
|w|
∣w∣=1
上式又等价于:
a
r
g
m
a
x
w
w
T
∑
w
argmax_{w}w^T\sum w
argmaxwwT∑w
∣
w
∣
|w|
∣w∣=1
∑
\sum
∑为X的协方差矩阵,大家稍微一推到就可以得到这个。
所以最终通过拉格朗日乘子法可以得到无约束优化问题:
a
r
g
m
a
x
w
w
T
∑
w
+
λ
(
1
−
w
T
w
)
argmax_{w} w^T\sum w+\lambda(1-w^Tw)
argmaxwwT∑w+λ(1−wTw)
对
w
w
w求导得:
∑
w
=
λ
w
\sum w =\lambda w
∑w=λw
可以发现,
w
是
X
的协方差矩阵的特征向量,
λ
为特征值,
λ
也是投影后样本的方差
w是X的协方差矩阵的特征向量,\lambda为特征值,\lambda也是投影后样本的方差
w是X的协方差矩阵的特征向量,λ为特征值,λ也是投影后样本的方差。
到此就证明完毕了,所以,X的协方差矩阵对应特征值越大的特征向量,就是我们想要的投影向量
w
w
w。
(3)从上面的数学推导,我们可以发现,其实主成分分析算法所做的就是,根据总体样本的空间分布,根据这个分布中无数个投影方向所含有的信息量的大小(等价于该投影方向投影之后样本方差的大小),来选择信息量最大的投影方向作为最终的投影方向。所以,最终选择了多个投影方向,那么最后的映射的维度也为选择投影方向的个数。
(4)所以一个很清楚的问题摆在我们面前,我们的任务是否可以接受这种特征转换,是否可以接受该方法导致的少量信息缺失。且我们的数据在量纲上是否可以接受该方法,事实上该方法,多应该是在各个特征量纲较为一致,且各个特征之间重要性较为一致的时候用起来效果较好。