第十四章-降维之主成分分析法(PCA) 深度之眼_吴恩达机器学习作业训练营
目录
一,降维
1.1 简介
任何满足一定规律的样本集都有其内在的一致性与差异性,给定m个n维的数据样本,利用数据的内在一致性将数据映射至维度更低的空间中,并尽量保留其差异性的方法即称之为降维。作为无监督学习的一种,其不需要任何数据标签,只根据数据特征的内在联系来进行降维。
1.2 应用
降维算法主要有两种应用形式:数据压缩以及数据可视化。
数据压缩是指:通过降维算法来减少实际存储的文件数据量,从而减少计算机内存和磁盘空间的使用;同时其也能加快学习算法。
数据可视化是指:面对超过3维的事物,人是无法直观的理解的。通过数据降维将高维数据降到3维或以下可使得人能直观的去观察。不过这样则要求人自己去理解降维后新特征的含义。
二,主成分分析法
2.1 基
在线性代数中有个很重要的概念就是基(也称基底),是值向量空间中的一组方向向量,而向量空间中其他向量都可以由基中的方向向量线性表达。具体方法为选定一组基,空间中任何一个点(或向量)都可向基中的各个方向向量方向进行投影,投影的长度即为该点在该方向向量上的坐标,这样的坐标集合即为该点在指定基中的新坐标表达。在N维空间中选定N个线性无关的向量便可作为一组基。
设原向量坐标为,选定基为
,则在该基的表示下,原向量的新坐标为
,具体过程如下:
(公式 14.1)
(公式 14.2)
如图14-1所示,同样是点x,在基为 和
时其坐标可表示为
;而当基为
和
时其坐标可表示为
。其过程如下:
2.2 PCA的直观描述
在了解完基的概念后可知选用不同的基可得到不同的数据表达,但如果只是更换基,则数据量并没有得到减少。而主成分分析法(Principal Component Analysis PCA)的主要思想为:在n维空间中找到k个空间向量,用数据在k个空间向量上投影来表达原数据,并使得数据的投影与原数据之间的差异要尽量小,而不同数据之间的差异尽量不变。这样就达到了见n维数据压缩到k维的目标。
设原n维数据为,现选定n维空间中的一组基,并求出其逆矩阵如下
(公式 14.3)
从中选择除k个方向向量与其逆矩阵中对应的K个向量用于映射,可得:
(公式 14.4)
可直观了将PCA理解为在一组基中选取部分方向向量来表达数据,要求在这部分方向向量的表达下对原数据信息保留最多。
如图14-2中数据而言,如果不经过数据压缩,则需要存储 共10个数。假设采用PCA算法并选择方向向量
为投影方向时,则需要存储方向向量
以及压缩后各个点的坐标
共计7个数,压缩了3个数,但信息完全没有减少。
虽然上述情况过于理想,但一般在具体工程中,可能会有多组人员使用不同的标准和检测方法对数据进行采集,采集到的数据之间会有冗余,通过PCA算法可以消除这种冗余。
2.3 特点
PCA算法的优点如下:
-
在选择投影的方向向量时,可选定一组基,事先计算出所有数据在各个方向向量上投影的损失值。根据损失值进行方向向量排序,最终选择损失值最小的k个方向向量做为投影向量。
-
PCA算法没有任何超参数限制,学习过程完全根据数据求解。
同时其缺点也很明显:
- 由于PCA没有超参数控制,则任何有关数据的先验知识都不能人为的加入到算法中,这使得算法不可控。
- 数据降维后新特征的具体含义不明确,需要人为发觉。
在运用具体的机器学习算法前,有人会使用PCA算法来进行数据降维。虽然能减少特征量加快计算,但由于PCA算法的不可控,有可能将一些有用的特征信息摒弃而留下一些不重要的特征,这将得不偿失。
三,原理推导
本节试图讲解PCA算法的内在原理,不感兴趣可以跳过。
3.1 两个前提
在具体进行PCA算法之前,有两个前提:
-
需要对数据进行均值归一化,使得各个数据特征的均值为0。
-
投影用的方向向量应该具有单位长度,即
。
3.2 优化目标
假设原数据为 ,在方向向量上投影后数据为
,两者之间距离的平方可表示为:
(公式 14.5)
两者之间的距离可表示为投影后信息的损失。要使得信息损失最少 就需要使得
最小。设投影向量组成的投影矩阵为
,则投影后的数据样本的信息损失和表示为:
(公式 14.6)
因为由数据样本确定,要使得信息损失最小,则要使得:
最小。
设由数据样本集组成的样本矩阵X,可得损失函数如下:
(公式 14.7)
即优化目标为找到一个投影矩阵使得损失函数最小化。
3.3 求解
为求解损失函数(公式 14.7)的最优解,需要建立拉格朗日函数:
(公式 14.8)
为求极值,对(公式 14.8)求偏导并令偏导等于0,可得:
(公式 14.9.1)
(公式 14.9.2)
即可知投影矩阵中的向量,即为样本矩阵
的特征向量,而λ为其特征值。特殊的是投影矩阵
是正交矩阵,其逆矩阵就是其本身。
求解特征向量和特征值的算法这里再不赘述,可查找相关资料,也可之间使用相关的库函数求解。
3.4 再理解
了解一个数据的内部差异性可以用方差来进行刻画:
(公式 14.10.1)
而当数据的平均值 为0时,方差可化简为
(公式 14.10.2)
在概率论中协方差来刻画两个特征之间的相关性
(公式 14.11.1)
当数据X和Y的的平均值 均为0时,协方差可化简为
(公式 14.11.2)
现在取出数据样本中的两个特征维度, 两者之间的协方差为:
现在不妨再回顾一下损失函数(公式 14.7)
展开其中的项可得:
(公式 14.12)
即:实际上就是原样本集的协方差矩阵,其对角线上是各个特征的方差,非对角线上是 各特征两两之间的协方差。
最终求解出来的特征向量矩阵U,其实就是可将对角化的矩阵。而对角化的过程就是使得坐标变换后加大各个维度特征差异性,而减小不同维度之间相关性的过程。
特征值就是经过坐标变换后,数据在对应维度投影后的方差。于是我们可以按特征值的大小进行排序,选择较大特征值所对应的方向向量进行投影,从而达到数据降维后尽量保留原始信息的目标。
四,应用细节
4.1 具体应用过程
尽管没有理解算法的具体原理可能没有理解,但只要按部就班的使用便可到达效果,这也是算法的一个魅力所在。总结上述推导过程可得到PCA算法的具体步骤:
第一步,对元素数据样本的各个数据特征进行均值归一化:
第二步,计算数据的协方差矩阵
第三步,求解除协方差矩阵的特征向量组成的矩阵与特征值
第四步,选择前K个特征向量组成投影矩阵,将原数据在特征向量上投影
4.2 解压缩
了解压缩算法,一定要了解解压缩的过程。而PCA算法的解压缩过程非常简单:
(公式 14.13)
具体原理这里不细究,可联系逆矩阵的相关知识来学习。需要注意的是如果不是全部维度都进行利用,则PCA压缩是有损压缩,解压后对数据会有所丢失。
4.3 压缩维度的选择
在实际应用中具体需要压缩多少维有时要依据具体的任务需求而言,这里介绍一个选择标准,即运用PCA计算出特征值后,用特征值之和与选择出的k个方向向量所对应的特征之和的比值:
(公式 14.13)
t 为需要保留的信息比例,令 t = 0.99 即表示 选择 k个投影向量, 使得投影后原数据的信息保留 99%。
4.4 应用建议
在机器学习中一般会这样应用PCA算法:
-
使用PCA压缩数据特征维度。
-
使用学习算法训练。
-
在预测时,需要用由元素数据学习到的投影矩阵
将输入特征映射成指定维度的特征向量,再进行预测。
一种错误的观点是:用PCA来解决过拟合问题。前面提到过PCA算法有可能将一些有用的特征信息摒弃而留下一些不重要的特征,这将使得训练效果更差。过拟合还是用正则化来解决。
另一种错误观点是:将PCA当作训练模型的必要步骤。只有到必要时才能使用PCA来进行降维,否则得不偿失,原因同上。
五,总结
本章主要讲解了以下内容:
-
简介了降维的概念及其应用。
-
用一种直观的方法讲解了PCA算法。
-
详细推导了PCA算法的具体过程。
-
提及了一些PCA算法的应用细节。