PCA与线性代数的关系
这篇博客记录一下今天花了几个小时复习线性代数以理解PCA原理的过程,内容比较粗浅,但是大致知道原理了,公式在这里就不多提了,最多扯一下矩阵和各个概念的涵义。
PCA
用处
吴恩达说这玩意儿可以用来做可视化(高维降维成2维)和特征压缩,这个没什么异议。
可视化没啥可说的,主要从降维来说说原理吧。
原理
其数学原理,主要就是从m*n
的矩阵(m
个样本,每个样本有n
个特征)中选区分度最高的k
个特征出来。
这里特别提一下https://www.bilibili.com/video/BV1ys411472E?t=915&p=14,讲线性代数的含义讲的是真的好,把我考研时死记硬背的一小部分东西解释的很清晰了。主要收获是这些地方:
-
矩阵:可以看作是线性变换,例如:把原本的二维笛卡尔坐标系(就是中学数学常说的直角坐标系,在这里可以视为单位矩阵
I
)左乘一个变换矩阵A
,把x、y轴的基变成了别的向量 -
行列式的值:如果不为0,代表这个方阵把原来的基变成了统一维度下的另一组基;如果行列式的值为0,那么就要看他的秩(
rank
),秩的大小决定了他把原来的基压缩到了多少维,如果增广矩阵和矩阵的秩相等,此时有无穷解,否则无解 -
特征值与特征向量:特征向量代表了作为线性变化的矩阵(就是前面第一点说的左乘的矩阵A),在原始的基变换到新的基的过程中,方向没有发生改变的那些向量,
比如从原始的基左乘了矩阵,对于x轴而言,他只做了拉伸(绿色表示x
(1, 0)
变成了(3, 0)
),这就是其中一个特征向量,因为他方向没有发生变化,而他拉伸的程度就等于特征值。
回到PCA
在特征选择的过程中,我们数据里的特征存在两个问题:
-
噪声
这个主要来源于,各个特征之间有着或多或少千丝万缕的联系造成的(从概率上讲就是不独立)
-
冗余
有些特征可能不仅仅是会干扰其他特征,甚至可能变成向量中的线性相关的情况,这就导致可能退化成一个特征了;甚至说,有可能所有的样本在这个特征上的值都基本上一样,这个特征不能够反应出样本间的多样性,对于PCA,主要是后面的这个情况。
对于噪声问题,协方差可以得到各个特征之间的关联程度,其意义是:度量各个维度偏离其均值的程度。协方差的值如果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),结果为负值就说明负相关的,如果为0,也是就是统计上说的“相互独立”。
求得协方差矩阵后,虽然他的规模是n*n
大小,但有可能其是个非对称阵。
我们知道,实对称阵一定可以正交分解为A = QΣQT
(转置),其中Σ
是对角矩阵(只有对角线元素存在不为0的值,其余地方都为0,其对角线上元素的值就是特征值),这个分解表示A可以转化成特征向量矩阵和特征值矩阵(对角矩阵)的乘积,其新的基就可由特征向量矩阵Q
表示,Σ
表示了在新的基的各个向量下的拉伸程度,在PCA这里可以理解为分布更广、区分度更高,也就是方差更大;对角阵的特征值反映了各个特征自己的方差
那么对于非对称阵,可以用SVD奇异分解,达到类似的效果,得到一个对角阵(由于不同特征值的特征向量之间线性无关,所以已经可以近似得到一定数量的完全消除噪声的特征了)。
对于冗余问题,我们选取其中特征值最大的K个特征,作为压缩后的新特征(这个过程是可逆的,也就是可以还原回原来的m*n
规模),这样就完成了降维。
例如,把原始的x、y轴下的特征,做了基变换,找到了新的特征向量作为基,同样,以前的那些特征也要做相应的基变换才能消除噪声。
最后,把选取的k个特征变换到上述特征向量的基即可得到新的一组降维后的特征。