概述
近期学习数字信号处理课程时,被要求了解PCA主成分分析的数学原理,并通过该原理完成人脸识别的代码。学习过程中对于其机理有所理解,将一些思路分享在本帖子中,欢迎大家一起讨论学习,和指正我的一些理解错误的地方。
学习一个技术,我认为需要按照它用来干什么,它是什么,它怎么实现的,我们怎么使用它这样的逻辑进行学习,故在学习PCA之前,首先得知道它用来干什么。
举个例子:对于一个的商品,他可能具有很多属性,包括它的各种性能参数,它的价格,它的售后服务等等。如果这些指标都可以被量化和数字化的话,那一个商品就可以认为是一个包含了很多维度(性能,价格等)的一个数据,那和这个商品同种类的商品我们就可以看做一个很大的数据集。
现在作为顾客我需要从中挑选出一个最好的商品,但是此刻我去进行比较的话,就意味着有太多维度需要对比了,那我就在想能不能用某个指标(比如性价比)这一个维度去进行评判,这样我的工作量就大大减少了嘛。而PCA就是出于这样的目的,所设计的通过数据降维从而便于后续运算或分析的一种数学方法。
PCA数学推导
PCA即主元分析,主要用于数据降维便于后续运算,其核心思想在于用一个新的坐标基来取代当前的坐标基(新坐标基的维度会比原始坐标基维度小),从而实现特征降维。降维必然带来特征的损失,为了确保在降维的过程中,损失的特征尽可能的少,就需要降维后原始数据在新坐标基上的投影尽可能分散。换而言之即降维后某方向上数据点方差尽可能的大。设现在有一维数据集记做 ( X 0 , Y 0 ) (X0,Y0) (X0,Y0),按列解读,可以得到两个向量X0,Y0,此时X0,Y0即可看做是数据集的两个特征
以特征X0为例,其方差可以写作
V a r ( X 0 ) = 1 n ∑ i = 0 n ( X 0 i − X ˉ ) 2 . Var(X0) = \frac{1}{n}\sum\limits_{
{i = 0}}^{
{n}}\left (X0_{i} -\bar{X} \right )^{2}. Var(X0)=n1i=0∑n(X0i−Xˉ)2.
对X0进行中心化操作,即减去均值后的向量记做X,我们有
V a r ( X ) = 1 n ∑ i = 0 n X i 2 Var(X) = \frac{1}{n}\sum\limits_{
{i = 0}}^{
{n}}X_{i}^{2} Var(X)=n