该笔记主要参考了下面六篇文章:
https://www.matongxue.com/madocs/228/
https://www.matongxue.com/madocs/491/
https://www.matongxue.com/madocs/568/
https://blog.csdn.net/fuming2021118535/article/details/51339881
http://blog.codinglabs.org/articles/pca-tutorial.html
1.线性代数基础知识介绍
1.1对角矩阵
对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。
1.2单位矩阵
对角线上的元素全为1的矩阵称为单位矩阵。记为E。任何矩阵与单位矩阵相乘都等于本身。
1.3逆矩阵
设A是一个n阶矩阵,若存在另一个n阶矩阵B,使得: AB=BA=E ,则称方阵A可逆,并称方阵B是A的逆矩阵。(有点类似于数学运算中一个数的倒数那样)。
1.4相似矩阵
设A,B都是n阶矩阵,若有可逆矩阵P,使,则称B是A的相似矩阵,或说A和B相似。从数学角度上看,相似变换就是进行了坐标转换。 同一个线性变换,不同基下的矩阵,称为相似矩阵。
1.5特征值和特征向量:
设A是n阶矩阵,如果数λ和n维非零向量x使关系式,成立,那么这样的数
称为矩阵A的特征值,非零向量x称为矩阵A的对应于特征值
的特征向量,上面的公式也可以写成.
一个矩阵代表的是一个线性变换规则,矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。
1.6协方差:
协方差用来表示两组数据之间的相关系数,结果为正数,表明是正相关的,结果为负数,表明是负相关的。维数多了之后就要计算多个协方差,于是我们就用协方差矩阵来组织这些数据,以三维为例
由于cov(x,y)=cov(y,x),所以协方差矩阵是一个对称矩阵,对角线上的是各个变量的方差。
2.降维
2.1降维的原理
看几张图:
如果我们单独看某一个维度的话,比如看x1这个维度
可以看到将点投影到x1这个维度上看的话,图1的数据离散性最高,图3较低,图2数据离散性是最低的。数据离散性越大,代表数据在所投影的维度上具有越高的区分度,这个区分度就是信息量。如果我们用方差来形容数据的离散性的话,就是数据方差越大,表示数据的区分度越高,也就是蕴含的信息量是越大的。
基于这个知识,如果我们想对数据进行降维的话,比如图1的两个维度的数据降成一维,我们可以选择保留X1这个维度的数据,因为在这个维度上蕴含的信息量更多。
同理,图2就可以保留x2这个维度的数据。但是,问题来了,图3应该保留哪个维度的数据呢?答案是保留哪个维度都不好,都会丢失较大的信息量。但是,如果我们把图3的坐标轴旋转一下。
比较容易看出,图3在新的坐标轴下就能进行降维了。所以选取正确的坐标轴,然后根据各个维度上的数据方差大小,决定保留哪些维度的数据,这样的做法就是主成分分析的核心思想。
2.2基变换的矩阵表示
从2.1的介绍可以知道,要想降维就要找一个正确的坐标轴,而坐标转换本质上就是找一个矩阵,然后利用这个矩阵乘以向量就达到了坐标转换的目的,然后现在的问题变成了寻找这个变换矩阵,
2.3最大可分性
上面我们讨论了选择不同的基可以对同样一组数据给出不同的表示,如果基的数量少于向量本身的维数,则可以达到降维的效果。
但是我们还没回答一个最关键的问题:如何选择基才是最优的。或者说,如果我们有一组 N 维向量,现在要将其降到 K 维(K 小于 N),那么我们应该如何选择 K 个基才能最大程度保留原有的信息?
一种直观的看法是:希望投影后的投影值尽可能分散,因为如果重叠就会有样本消失。当然这个也可以从熵的角度进行理解,熵越大所含信息越多。
2.3.1方差
2.3.2协方差
2.3.3协方差矩阵
2.3.4矩阵对角化
2.4求解步骤