1.5.数据降维:PCA
主成分分析(Principal Component Analysis,PCA)来实现降维,PCA降维不会出现在数据预处理,而是基于模型的一种降维技术,从这里考虑数据、特征、模型之间的界限会变得模糊。
1. 直观理解
数据降维就是在保留重要信息的同时消除哪些“无信息量的信息”,无信息量有多重定义,而PCA关注的是线性相关性。我们将数据矩阵的列空间描述为所有特征向量的生成空间,如果列空间的秩小于特征总数,那么多数特征就是几个关键特征的线性组合;由于线性相关特征会浪费算力,为了避免这种开销,PCA试图将数据积压到一个维度大大小于原空间的线性子空间。
参考下边图示:

左图中特征线性不相关,而右图中特征可能线性相关——一般彼此完全相同的特征是很罕见的,更可能的情况是非常接近于相同但又不完全相同的特征。
PCA的核心思想就是:使用一些新特征代替冗余特征,这些新特征能恰当地总结初始特征空间中包含的信息。如果只有两个特征,很容易找出新特征,如果有成千上万的维度时,就非常困难了,所以需要一种数学方法找出新特征并且优化。其数学定义是:新的数据点团应该尽量多地保持原数据集中的信息。
2. 数学推导
使用X表示n×d的矩阵:
其中n是数据点的数量
d是特征的数量
x表示单个数据点的列向量(所以x是X中一行的转置)
v是表示新特征的向量(即要找的主成分)
奇异值分解:任意长方形矩阵都可以分解成3个具有特殊形状和性质的矩阵:
X=UΣVT
上述表达式中:
U和V是正交矩阵(UTU=I,VTV=I)
Σ是一个包含X的奇异值的对角阵,奇异值可以是正、负、零
假设X有n行d列,且n≥d
U的形状是:n×d
Σ,V的形状是:d×d
2.1. 线性投影

a)特征空间中的初始数据
b)数据中心化
c)将数据向量X投影到另一个向量v上
d)投影坐标方差最大的方向(等价于XTX的主特征向量)
公式1:投影坐标
z=xTv
当x投影到v上,投影的长度是这两个向量内积的一个比例,即通过v的范数进行了归一化,然后限制v具有单位范数。
公式2:投影坐标向量
z=Xv
尽管x和v是列向量,但z是个标量,因为有很多数据点,所以可构造一个向量z,表示所有数据点在新特征v上的投影,此处X就是数据矩阵。
2.2. 方差和经验方差
下一步是计算投影的方差,方差是与均值之间的距离的平方期望值。
公式3:随机变量Z的方差
Var(Z)=E[Z−E(Z)]2
前边讨论中从来没涉及过均值E(Z),它是自由变量。所以此问题会从数据点中减去均值,从而将其从公式中除掉——这样结果集均值是0,方差就是Z2的期望值;从数学几何角度上考虑,减掉均值就是将数据中心化。一个和方差非常紧密的量是两个随机变量Z1和Z2之间的协方差,可将其视为方差(单随机变量)概念在两个随机变量上的推广。
公式4:两个随机变量Z1和Z2的协方差
Cov(Z1,Z2)=E[(Z1−E(Z1))(Z2−E(Z2))]
若随机变量均值为0时,它们协方差与线性相关度E(Z1Z2)一致。
实际上,我们不可能有真正的数据分布,只有一系列观测到的数据点,z1,...,zn,这称为经验分布,它可以给出方差的经验估计。
公式5:Z的经验方差,基于观测z计算
Varemp(Z)=n−11i=1∑nzi2
2.3. 主成分:第一种表示
结合公式1的定义,可以得到公式6中投影数据方差最大化的数学表示。
公式6:主成分目标函数
maxwi=1∑n(xiTw)2,wTw=1
此处限制条件是w的内积为1,等价于它必须具有单位长度。我们只关心w的方向,不关心大小,它的大小是一个不必要的自由度,所以可以设置成任意值。
2.4. 主城分:矩阵-向量表示
公式6看起来太笨重,所以使用矩阵-向量形式会简洁许多。它的原理是平方和恒等式:多个项的平方和等于由这些项组成的向量的范数的平方,即这个向量和它自己的内积。
公式7:主成分目标函数(矩阵-向量)
maxwwTw,wTw=1
这种表示更加呈现了目标:找到一个能使输出向量的范数最大化的输入方向,实际就是矩阵X的奇异值分解(SVD),最终:
最优的w就是X的主要左奇异向量,也就是XTX的主特征向量。
投影数据就是原始数据的主成分。
2.5. 主成分通用解
这个过程是可重复的,找到了第一个主成分,就可以重新执行公式7:
公式8:第k+1个主成分的目标函数
maxwwTw,其中wTw=1且wTw1=....=wTwk=0
解是X的第k+1个左奇异向量,按奇异值降序排列。
前k个主成分对应于X的前k个左奇异向量。
2.6. 特征转换
找到主成分之后,就可以使用线性投影对特征进行转换。
令X=UΣVT是X的奇异值分解
且Vk是列中包含前k个左奇异向量的矩阵
X的维度是n×d
d是初始特征的数量
Vk的维度是d×k
公式9:PCA投影矩阵
W=Vk
投影坐标矩阵很容易计算,可以通过奇异向量彼此正交的性质进一步简化
公式10:简单PCA转换
Z=XW=XVk=UΣVTVk=UkΣk
所以投影值就是前k个右奇异向量乘以前k个奇异值。
2.7. PCA实现
PCA实现步骤:
数据矩阵中心化:C=X−IμT,其中I是一个全1列向量,μ是由X中每行的平均值组成的列向量。
计算SVD:C=UΣVT
找出主成分,前k个主成分是V的前k列,也就是对应于k个最大奇异值的右奇异向量。
转换数据,转换后的数据就是U的前k列。
3. PCA实战(略)
4. 白化与ZCA
由于目标函数正交限制,PCA转换有一个很好的副作用:转换后的特征都是不相关的——每个特征向量之间的内积都是0。这点可使用奇异向量的正交性质证明:
ZTZ=ΣkUkTUkΣk=Σk2
这个结果是个对角阵,对角线上是奇异值的平方,表示每个特征向量与自己的相关度,也称为l2范数。如果通过归一化把特征长度变成1,这种操作在信号领域称为白化。这种操作可得到一组特征,彼此相关度为0,与自身相关度为1。
公式11:PCA + 白化
Wwhite=VkΣk−1
Zwhite=XVkΣk−1=UΣVTVkΣk−1=Uk
白化和数据降维相互独立,可分别进行,零相位成分分析(Zero-Phase Component Analysis, ZCA)是一种和PCA联系非常金币的白化转换,它不会减少特征数量。
公式12:ZCA
WZCA=VΣ−1VT
ZZCA=XVΣ−1VT=UΣVTVΣ−1=U
简单的PCA投影可以在新的特征空间中以主成分为基生成坐标。这些坐标只表示投影向量的长度而不表示方向。乘以主成分之后,才能得到长度和方向;另一个合理解释是,这次相乘可以将坐标转换回初始特征控件。
5. PCA局限性
使用PCA进行数据降维时,必须确定要使用的主成分的数目(k)。选择k的
一种方法是要求主成分解释一定比例的总方差,投影的方差公式如:
∣∣Xvk∣∣2=∣∣ukσk∣∣2=σk2 这个方差就是X第k大奇异值的平方,奇异值的排序列表称为矩阵的谱(spectrum),所以对矩阵进行谱分析,就可以选定解释足够方差的阈值。
另一种方法涉及数据集的本征维数。如果谱中包含一些非常大的奇异值和一些非常小的奇异值,我们就可以只保留哪些非常大的奇异值,而舍弃其余奇异值。
PCA缺点:
PCA的主要诟病是转换过程太复杂,得到的结果也难解释。
PCA的计算成本也很昂贵,它依赖SVD,SVD是一个对计算能力要求很高的过程。
在流式数据、批量更新或完整的数据抽样中,很难执行PCA操作。
最好不要对原始计数执行PCA。
PCA应用场景:
在时间序列中进行异常检测。
PCA可以用于金融建模中,作为一种因子分析。
在图像学习中,可以在预处理阶段使用PCA。
很多深度模型中使用PCA或ZCA作为预处理的第一步骤。
6. 补充
参考:PCA简化数据
最后更新于