主成分顾名思义就是最主要的成分
主成分分析可以认为是分析哪些成分是最重要,具体的说就是哪些维度最重要
但是什么数据重要什么数据不重要?我们认为变化越大的轴越重要,越没什么变化的轴越不重要.
假设有一组数组,y轴全是1,那么显然他没什么用,属于可以丢掉的维度.
但是实际场景中数据的重要程度未必完全沿着坐标轴,所以说我们需要找出新的坐标系,让数据的重要性按照维度排序,这就叫主成分分析
衡量变化程度的一个好方法就是方差,所以说方差越大的维度越重要,所以主成分分析可以转化成新问题,找出新坐标系,让数据的方差的大小和坐标轴同序,并且沿着坐标轴的方差越大越好
在这之前要先介绍协方差和协方差矩阵的概念:
协方差是
c
o
v
(
X
,
Y
)
=
E
(
X
−
X
‾
)
E
(
Y
−
Y
‾
)
=
E
(
X
Y
)
−
E
(
X
)
E
(
Y
)
cov(X,Y)=E(X-\overline{X})E(Y-\overline{Y})=E(XY)-E(X)E(Y)
cov(X,Y)=E(X−X)E(Y−Y)=E(XY)−E(X)E(Y)
在XY变量独立的时候,
E
(
X
Y
)
=
E
(
X
)
E
(
Y
)
E(XY)=E(X)E(Y)
E(XY)=E(X)E(Y),协方差就会变成0
用
A
A
A表示数据矩阵
行是数据维度,列是数据长度
协方差矩阵C,的
C
i
j
C_{ij}
Cij表示i数据的第i维和第j维的协方差
方差是自身和均值的差异的平方和的均值 ,
第x个维度的方差是
1
/
(
n
−
1
)
∑
[
(
A
x
i
−
A
x
‾
)
∗
(
A
x
i
−
A
x
‾
)
]
1/(n-1)\sum [(A_{xi} - \overline{A_{x}}) * (A_{xi} - \overline{A_{x}})]
1/(n−1)∑[(Axi−Ax)∗(Axi−Ax)]
协方差就是自身和别人共同的方差,把方差中第二项换掉就可以了,
比如说第x维度和第y维度的协方差是
1
/
(
n
−
1
)
∑
[
(
A
x
i
−
A
x
‾
)
∗
(
A
y
i
−
A
y
‾
)
]
1/(n-1)\sum [(A_{xi} - \overline{A_{x}}) * (A_{yi} - \overline{A_{y}})]
1/(n−1)∑[(Axi−Ax)∗(Ayi−Ay)]
矩阵各维度的均值组成的向量m,矩阵A的协方差矩阵可以表示成
(
A
−
m
)
(
A
−
m
)
T
/
(
n
−
1
)
(A-m)(A-m)^T/(n-1)
(A−m)(A−m)T/(n−1)
一般要对数据中心化,那么上面就可以简化成
A
A
T
/
(
n
−
1
)
AA^T/(n-1)
AAT/(n−1)
回到之前的问题,主成分分析就是让协方差矩阵中的方差越大越好
最符合条件的协方差矩阵必然是对角矩阵,对角元素就是方差,并且让它从大到小排序
我们知道变换坐标系在矩阵语言中就是
Q
A
QA
QA, 在新坐标系下协方差就是
Q
T
A
A
T
/
(
n
−
1
)
Q
=
Q
T
C
Q
Q^TAA^T/(n-1)Q=Q^TCQ
QTAAT/(n−1)Q=QTCQ C是新协方差矩阵
C第一行只能是(x,0,0,0,…)的形式,因为旋转不改变向量的长度. 如果把第一行旋转成后面元素非0,那么第一个元素必然是小于x的.因为他们的平方和会等于
x
2
x^2
x2,后面非0元素会压缩第一个元素的值.当第一行确定,其实就是确定了一个维度,剩下的维度一个一个确定,也同样必须是(x,0,0,0,…)的形式,所以最终的协方差矩阵必然是对角矩阵.既然这样问题就简单了
首先
A
A
T
AA^T
AAT是对称矩阵,他可以分解
A
A
T
=
Q
Λ
Q
T
AA^T=Q\Lambda Q^T
AAT=QΛQT
这里的Q是
A
A
T
AA^T
AAT的特征值按列堆叠
显然让这个矩阵变成对角矩阵可以这么做:
Q
T
A
A
T
Q
=
Q
T
Q
Λ
Q
T
Q
=
Λ
Q^TAA^TQ=Q^TQ\Lambda Q^TQ=\Lambda
QTAATQ=QTQΛQTQ=Λ
而
Q
T
A
A
T
Q
=
(
Q
T
A
)
(
Q
T
A
)
T
Q^TAA^TQ=(Q^TA)(Q^TA)^T
QTAATQ=(QTA)(QTA)T,这就很明显了,只需要把原本的数据乘以
Q
T
Q^T
QT就可以让它的协方差矩阵变成对角矩阵
协方差矩阵变成对角矩阵之后还有一个特性,就是维度之间的耦合没了,因为协方差是0可以认为是这两个维度之间没有依赖关系
总结一下就是主成分分析其实就是让原始数据成以 Q T Q^T QT,这里面的Q就是协方差矩阵特征向量堆叠而出的,在实际应用中也可以用SVD求Q.要注意的是,我这里原始数据行是维度,列是数据.最终的Q的特征向量是按行堆叠的
现在说一下用法:
1.数据降维:很显然主成分分析可以找出最次要的维度,删了他们对数据的危害最小
2.点云算法线:第三个主成分小的方向就是法线方向, 法线是垂直于点云平面的, 点云所在的平面显然是最大和次大方向所构成的平面,那么最小方向就是法线方向了
3.直线拟合:直线不消说,变化最大的方向就是直线的方向
4.数据去耦合:新协方差矩阵是对角矩阵,本质上就是维内差异最大化,维间相关最小化.