主成分分析(PCA)模型

字数 2243阅读 3738

经过两天的挣扎,在浅薄的线性代数知识基础上,尝试着理解了一下主成分分析法。

一 算法流程

求样本x(i)的n'的主成分其实是求样本集的协方差矩阵 XXT 的前n'个特征值对应特征向量矩阵W,然后对于每个样本x(i)做如下变换 z(i)=WTx(i) ,即达到降维的PCA目的。

具体算法流程:
输入:n维样本集D=(x(1),x(2),...,x(m)), 要降维到维数n’。
输出:降维后的样本集D’

1)对所有的样本进行中心化。
2)计算样本的协方差矩阵XXT
3)对矩阵XXT进行特征值分解
4)取出最大值n'个特征值对应的特征向量(w1,w2,...,wn'),将所有的特征向量标准化后,组成特征向量矩阵矩阵W。
5)对样本集中的每一个样本x(i),转化为新的样本z(i)=WTx(i)
6)得到输出样本D’ = (z(1),z(2),...,z(m)

有时候,我们不指定降维后n'的值,而是换种方式,制定一个降维到主成分比重阈值t。这个t在(0,1]之间。加入我们有n个特征值λ1>=λ2>=...>=λn,则n'可以通过下式得到:

主成分分析(PCA)原理总结——刘建平Pinard

二 个人的理解

[18.11.23更新]PCA和LDA都是对数据进行降维,其中PCA是无监督的,LDA是有监督的。所以PCA是不考虑类别的,只用特征信息,而LDA要考虑类别,他们之间降维的差异于是有了这个图:

我理解,PCA是采用了投影最小的方法,在图中表现出来就是点与投影点之间的距离和最小,那保留最多的原始信息怎么理解呢?那就是我们去掉某一个“方向”(这是一个抽象的“方向”,或者说朝超平面进行了投影),两个点之间的“距离”保持没变。而LDA因为有了“标签”的限制,其投影的方式产生了变化,所以他的选择的是分类最好的方向。

1.对样本进行中心化的原因

1.1 做中心化的意义

原始数据 中心化数据 标准化数据

中心化其实是一个平移的过程,平移后所有数据的中心是(0,0)

在PCA中,中心化后的数据有助于后续在求协方差的步骤中减少计算量,同时中心化后的数据才能比较好地“概括”原来的数据(如下图)。

其实,中心化及标准化在不同的应用场景都有不同的意义——比如在训练神经网络的过程中,通过将数据标准化,能够加速权重参数的收敛。

数据什么时候需要做中心化和标准化处理?——知乎

1.2 做中心化的方法


即 样本的每一个维度的数值减去该维度所有样本的均值(通过均值的意义或者画图很容易理解)。

2.选用协方差的原因

2.1协方差的定义

1)协方差的定义

X,Y是两个随机变量,X,Y的协方差cov(X,Y)定义为:

其中:E(X) = μx、E(Y) = μy

2)协方差矩阵的定义
按照一般标准,即每一行的表示一个样本,每一列表示相应的维度。

协方差矩阵为:

注:协方差矩阵的维度等于样本的维度数(随机变量的个数)。至于这里为什么是m-1,我相信与概率论中求样本方差的时候所谓无偏估计和有偏估计有关吧(为什么样本方差(sample variance)的分母是 n-1?——知乎 然而我又不会,真是惨兮兮)

例子(协方差矩阵计算方法——GodStephen) 我发现博主在计算的过程中其实就就进行了我们所谓的中心化。

2.2 协方差在这里的图形化意义

我们选取协方差的特征向量,一句话概括就是找到方差在该方向上投影最大的那些方向。

我们在应用PCA的时候,都默认数据符合高斯分布(即正态分布:期望为 μ,方差为σ^2 的正态分布,记为N(μ,σ^2)——然而我还是不懂,概率论不会真的惨兮兮x2),所以能产生下图

嗯,没错,这是由图左边的矩阵作为协方差矩阵产生的高斯分布样本,当我们做出一个椭圆过后,可以很轻易地猜想,若从二维降低到一维,那么一定选择黑色的长轴作为投影空间,然后,惊讶地发现这个长轴就是最大特征值对应的特征向量(0.707,0.707)。所以我从直观上接受了做协方差的特征向量作为投影空间。

2.3 协方差在这里的一种理论推导

如何通俗易懂地讲解什么是 PCA 主成分分析?——知乎

距离

我们一般有两种常用的距离:欧氏距离和余弦距离。

欧氏距离,即使直线距离,可以在我们向量中,可以通过勾股定理,或者点积来计算

余弦距离:表示关系的距离。即两个向量的夹角,可以通过点积和模长计算。

注意:在余弦距离之中,我们要将向量定义为有正有负的状态,否则会出现距离明显不同但计算结果相同的情况,如

协方差和相关系数

因为一开始我们已经对数据做了中心化,所以可以有如下表示:

我们知道,样本方差的公式是:
若通过向量表示即为:
所以方差的形式其实非常类似于欧式距离。

同样,我们知道协方差公式:

同样,通过向量可以表示为:
这岂不就是点积的形式咯,即余弦距离。

具体的推导和理解参考下面的链接。
【蒟蒻还需要增加对知识的原始积累才能在数学层面上理解啊
如何理解协方差、相关系数和点积?——马同学

3.特征值和对应特征向量的意义

特征值和特征向量有非常深的现实内涵。

1.3Blue1Brown中的理解

在3Blue1Brown中,将方阵作为对基的一种线性变换。(将以二阶行列式为例)

i-hat和j-hat是向量空间的一组基。

比如
表示我们常用的基本坐标系
这个方阵表示的是没有经过任何变换的坐标系,第一列为i-hat,第二列为j-hat。

当我们的方阵不是I方阵时,相当于我们对坐标系进行了旋转和剪切。

绿色(向右)为i-hat,红色为j-hat,蓝色线条为变换后的新坐标系,白色为原坐标系
可以轻易看出,i-hat拉伸了三倍/移动到了(3,0),j-hat移动到了(1,2)。

当我们对一个向量做这个矩阵乘法时,就相当于是对向量随这个矩阵表示的线性变换变化,输出就是经过此变化后的向量在原坐标系中的坐标。

紫色的两个箭头即是特征向量的方向
当我们对该矩阵求解在matlab中求解eig时,可以知道,特征值为2的特征向量为[-1,1]T,特征值为3的特征向量为[1,0]T

其实从我们刚才做出的乘法可以看到,方向在[-1,1]T的向量经过线性变换后向量的方向并没有变,只是相对大小有了变化。所以,我们可以猜想:

※特征向量即为经过线性变换后方向没有变化的向量,特征值即为向量变化后的倍数。

其实3b1b中有线性代数篇有很多有意思的理解,比如基变换等,挖坑。

【官方双语/合集】线性代数的本质 - 系列合集(14p)

2.知乎的理解

总的来说,矩阵相乘就是对点(用向量的终点表示整个向量)进行拉扯。

※特征值是运动的速度,特征向量是运动的方向。

我尝试了一下,矩阵A为[3,0;2,1],此方阵的特征值为1的特征向量为[0,1]T(橙色),特征值为3的特征向量为[0.7071,0.7071]T(蓝色)
方向向量为[0.5,-0.2]T,在下图中即为橙色的点。

本图做了四次矩阵乘法,描点做出了如图所示。可能在图中并不是靠近特征向量并不是特别明显,不过我将贴出8次的数据,能明显看出,与特征值差距越来越小。
p1=[0.5;-0.2] ; p2=[1.5;0.8]; p3=[4.5,3.8]; p4=[13.5,12.8];
p5=[40.5;39.8]; p6=[121.5;120.8]; p7=[364.5;363.8]; p8=[1093.5;1092.8];

因为这个矩阵比较特殊,所以我又做了一个特征值相近的矩阵。
矩阵A为[2.5 0.5;0.5 2.5],此方阵的特征值为2的特征向量为[-0.7071,0.7071]T,特征值为3的特征向量为[0.7071,0.7071]T
方向向量为[1,0]T

可以看得出来,随着矩阵相乘,方向向量始终向特征值较大的方向靠拢,但是由于两个特征值相近,所以之间“拉扯”现象。

A = [2.5,0.5;0.5 2.5];

x = (-50:50);
y = (-50:50);
plot(x,y);
grid on;
hold on;
y = (50:-1:-50);
plot(x,y);
hold on;
t = [1,0]';
for i = 1:5
    plot(t(1,1),t(2,1),'*');
    t = A*t
end

补1.投影

补2.奇异分解

U和V为一组规范正交基,表示A矩阵的作用是将一个向量从U这组正交基向量的空间旋转到V这组正交基向量空间,并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果V的维度比U哒,则表示还进行了投影。可以说奇异值分解就是将一个矩阵原本混在一起的三种效果分解出来。

矩阵的奇异值与特征值有什么相似之处与区别之处?——知乎

奇异分解是对特征值分解的一种拓展。特征值倾向于找到一个方向,使得线性变换对这个方向的向量仅起到长度的变化;奇异分解则是希望找到一组标准正交基,使得线性变换作用在这组基之后能够得到正交的新基——当然这组基不一定是标准的,(二维)在标准基选择360度后,新基能做出一个椭圆,其中奇异值就是分别是长半轴和短半轴的长度。

eigshow, week 3中第一个图,绿色的表示我们原始的基,蓝色的分别表示矩阵A作用在x方向和y方向上向量的效果,当我们对绿色进行旋转的时候,蓝色会对应开始旋转,当绿色旋转到某一角度的时候,蓝色正交,此时绿色即为我们想要的那一组。我只能暂时理解为矩阵将向量从绿色的正交基变换到蓝色的正交基后的结果。

补3.正定矩阵

推荐阅读更多精彩内容