一、简介
PCA(Principal Components Analysis)即主成分分析法,是机器学习领域一种常用的降维方法,基本上也是每个初学者接触机器学习之后首先会遇到的一种方法,我本人也正刚刚开始机器学习,之前对PCA只是知道有这么一种算法,拿过来就用,对他的数学原理和程序语句一点思考都没有,导致后期自己要做的东西也没做出来,回想自己的脑子里什么也没掌握,因此才决心对这一些基本的方法进行专门的学习,毕竟只有打好了基础才能进行更深层次的学习。
二、数学原理
我承认我个人的数学水平也就一般,因此在数学原理方面我会尽可能的用通俗易懂的方法来解释,太高深的语言我也讲不出来。
2.1 中心化
对于中心化求均值,这个大家应该都有意识,就是一个标准化步骤,为后边求协方差做准备工作。
2.2 协方差矩阵
为什么要用协方差,可能大家都会考虑这个问题,我一开始也有这样的疑惑。其实,不用太纠结这个问题,我在这里简单说明一下。先列举一下我们在概率统计里学到的一些统计学公式。
我们可以发现,方差和标准差一般用来描述一维数据,但我们遇到的经常是包含了多个属性的多维数据集,要考察两个维度之间的关系,就要用到协方差,要考察多个维度之间关系,那就需要计算多个协方差。
举一个简单的三维的例子,假设数据集有三个维度{x,y,z},则协方差矩阵为
即协方差矩阵是一个对称矩阵,对角线上是个维度的方差。
三、步骤
设 n × m n×m n×m维的矩阵 X X X,此即为待降维的数据矩阵,其中 n n n为采样的个数即样本数, m m m为属性数。PCA的目的就是将 n × m n×m n×m维的矩阵 X X X降维成为 n × k n×k n×k维的矩阵 Y Y Y。
基本步骤:
1、获得数据矩阵X。
2、对矩阵 X n × m X_{n×m} Xn×m的每一列求均值,同时每一列的元素减去自身所在列的均值,此成为中心化,得到矩阵 A n × m A_{n×m} An×m。
3、对 A n × m A_{n×m} An×m求协方差得矩阵 B m × m B_{m×m} Bm×m,
4、求协方差矩阵 B m × m B_{m×m} Bm×m的特征值和特征向量。
5、将特征向量按特征值的降序排列,并提取前 k k k个特征向量,组成矩阵 C m × k C_{m×k} Cm×k。
6、令 Y = X n × m × C m × k Y=X_{n×m}×C_{m×k} Y=Xn×m×Cm×k即为所求降维后的矩阵。
四、公式推导过程
4.1 标准化
首先需要对原始数据按列进行标准化,
X ~ = X i − X ‾ i \tilde{X} = X_i-\overline{X}_i X