1 PCA简介
PCA是常用的无监督降维技术。
我们在用多个特征描述对象时,特征之间可能是相关的,这导致了信息冗余。应该存在这样一组特征,使得特征数尽可能少并且丢失的信息尽可能少,PCA就是用于寻找这样一组特征的算法。
PCA算法并不是简单地从已有特征中选择一组特征,而是构建一组新特征,并且每个新的特征是原始特征的线性组合,也就是说,对于原始特征空间中的实例 x∈Rd ,其新特征为 zi=wTix,i=1,2,⋯,k ,每个特征对应一个向量 wi 。于是PCA需要解决的问题转换成了求解矩阵 W=(w1,w2,⋯,wk)∈Rd×k 。由于 wTix 是向 wi 方向上的投影操作,所以称 W 为投影矩阵。在求出W之后,通过表达式
2 PCA算法流程
给定N个训练实例 { x1,x2,⋯,xN} ,每个实例用 Rd 空间中的一个向量表示。我们定义矩阵 X∈RN×d ,它的每一行代表一个实例。
2.1 训练过程
PCA根据训练实例得到投影矩阵 W 的过程包含以下步骤。
1、数据预处理
首先需要对训练实例进行中心化的操作。
计算均值向量并保存:
对每个实例,减去均值向量:
即每个特征要减去该特征的均值。
中心化操作相当于把训练实例的中心点移动到原点。
目前看到的所有资料中,都强调了中心化,但是至于为什么并没有介绍。思考了一下,应该是因为方便计算协方差矩阵。
至于方差归一化,阅读的PCA资料中很多并没有做这一操作。但这里也介绍一下方差归一化的方法。在求出每个特征的均值之后,计算该特征的标准差,然后用中心化处理后的特征除以对应的标准差。
2、计算协方差矩阵
得到中心化后的实例矩阵 X 后,根据公式
3、求协方差矩阵的特征值和特征向量
计算协方差矩阵 C