吴恩达机器学习[15]-无监督学习之 降维、主成分分析
降维 Dimensionality Reduction
**降维(Dimensionality Reduction)**属于常见的无监督学习之一。使用它的目标包括:数据压缩(压缩数据,使得数据占用较少的内存;对学习算法进行加速)、数据可视化。
目标1:数据压缩 Data Compression
首先介绍降维(Dimensionality Reduction)是什么。举一个飞行员的问题,下图显示其中的两个特征变量(pilot skill、pilot enjoyment)之间关系。易得两个特征高度相关,但我真正关心的是pilot aptitude(飞行员的能力),即绿线。此时,可以将两个特征通过变化变成特征(pilot aptitude)。

那么将数据从二维降低到一维究竟意味着什么呢?
还是上面的例子,将不同样本用不同颜色标记。所谓“降维”,我所做的是:找出大多数样本所在的线(如图蓝线),并将所有的样本投影到这条线上。通过这样,我能找到每个样本在线上的位置,从而建立新特征
z
1
z_1
z1。只需要一维实数
z
i
z_i
zi,我可以直接表示对应的样本
x
i
x_i
xi所在的位置。此外,这也能使得学习算法运行更快。

上面展示了把二维数据降维为一维,下图展示将三维数据降维为二维(实际中可能存在1000D——>100D的情况)。
原始数据中,样本大概分布在一个平面内。此时可以通过降维,把所有的数据投影到一个二维平面上。为了确定这些点在平面中的位置,建立新特征
z
1
、
z
2
z_1、z_2
z1、z2。

目标2:可视化 Data Visualization
引入:降维的第二个应用为可视化。
大部分国家数据是多维的,如下图。那么如何理解这些数据呢?如何可视化这些数据呢?

相较于用50维的数据表示不同样本(国家),我们可以通过降维用两个特征来概述这50个数字。但此时,新特征可能不再是具有物理意义的特征,因此我们首先得理解特征代表什么。

我们可以在可视化的图中来帮助理解
z
1
、
z
2
z_1、z_2
z1、z2的代表含义。

主成分分析问题规划1 Principal Componet Analysis problem formulation
引入:目前最常用的数据降维方法为:主成分分析方法(Principal Componet Analysis,PCA)。下面将讨论PCA问题的公式描述,也就是用公式更准确地表达PCA的用途。
假设有如图所示数据集,我们希望通过PCA将二维数据集降为一维。PCA所做的是:找一个低维平面(如图的橙色直线),然后将数据投影在上面,使得各个样本点到直线距离的平方和(有时也称投影误差 projection erro)最小。

此外,在应用PCA前,一般会进行均值归一化(Mean normalization)和特征规范化(feature scaling)。下面展示均值归一化和特征规范化的一些细节。
为了对比我刚画好的橙线,可以再画一条可以用于投影的直线(如图品红线)。易得品红线对应的投影误差远大橙线,这就是为什么PCA会找到橙线用于投影。

下图展示更正式的PCA问题描述。

PCA与线性回归之间的关系如何呢?尽管看上去有些相似,PCA与线性回归其实是两种不同的算法。
- 对于线性回归(图左边)。给定某个输入特征量 x x x,我们需要预测出对应变量 y y y的值。因此线性回归需要做的是拟合一条直线来最小化点和直线的平方误差。注意此时的蓝线是垂直于横轴的, x , y x,y x,y是区别对待的( y y y是需要用预测的特殊变量)。
- 对于PCA。它所做的是:找一条直线,然后将数据投影在上面,使得各个样本点到直线距离的平方和最小。此时的蓝线是点到直线的距离,
x
1
,
x
2
x_1,x_2
x1,x2等不存在区别对待。

三维降维为二维中也是如此, x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3等都是平等的。

主成分分析问题规划2
引入:如何找到用于投影的低维平面呢?
- 使用PCA前首先需要做的是进行数据预处理。
下图用一个银行交易的例子,展示均值归一化、特征规范化(特征缩放 , s j s_j sj为极差或者方差)。

- 数据预处理后,使用PCA进行数据降维。
对于图左,PCA需要找到一个向量 u ( 1 ) u^{(1)} u(1),从而构成用于投影的直线;
对于图右,PCA需要找到两个向量 u ( 1 ) u^{(1)} u(1)、 u ( 2 ) u^{(2)} u(2),从而构成用于投影的平面。
那么是什么减少了数据均值的维度呢?比如图左,我们为二维空间的 x ( i ) x^{(i)} x(i)找到了一维空间的 z ( i ) z^{(i)} z(i),它可以用来表示 x ( i ) x^{(i)} x(i)对应的位置。这就实现了数据均值的降维。

如上图左,PCA需要做的是:找到向量
u
(
1
)
u^{(1)}
u(1),以及样本
x
(
i
)
x^{(i)}
x(i)在向量
u
(
1
)
u^{(1)}
u(1)的“位置”
z
(
i
)
z^{(i)}
z(i)。那么如何找到这些量呢?下图将进行解释。
假设我们希望将数据从
n
n
n维降维到
k
k
k维,需要计算协方差矩阵(covariance matrix, 用
Σ
\Sigma
Σ表示,如公式左边,右边表示求和)。
使用obtave实现PCA,可用svd公式。此时U为我们实际需要的结果,降维意味着取前k个向量。

降维,因此取矩阵U的前k列,获得一个nk矩阵。
Z
Z
Z可以通过上述矩阵的转置乘以
x
x
x得到,为k1矩阵。

在octave中的实现如下。

主成分数量选择
PCA做的是最小化投影误差。定义数据的总变数(total variation)如图。
那么一般来说,选择k时需要满足:
1
m
∑
i
=
1
m
∣
∣
x
(
i
)
−
x
a
p
p
r
o
x
(
i
)
∣
∣
2
1
m
∑
i
=
1
m
∣
∣
x
(
i
)
∣
∣
2
≤
0.01
\frac{\frac1m \sum^m_{i=1} ||x^{(i)} -x^{(i)}_{approx}||^2}{\frac1m \sum^m_{i=1} ||x^{(i)} ||^2} \le 0.01
m1∑i=1m∣∣x(i)∣∣2m1∑i=1m∣∣x(i)−xapprox(i)∣∣2≤0.01这意味着99%的变量信息(方差)都保留了。一般来说保留99%或95%的特征信息时,数据集就已经降维许多了,学习效率就会有很大改善,因为特征变量很多时候存在高线性相关性。

下图左展示选择k的算法,选择满足条件的最小k。图右展示在octave的实现

综上,使用octave选择k的步骤如下图:

压缩重现 Reconstruction from compressed repressentation
引入:在之前的视频中,我们一直把PCA当做做一个压缩算法讨论。那么,如果这是一个压缩算法,它就应该有办法从压缩后的数据回到原来的高维数据的近似表现。下面展示这个过程如何实现。
以下图为例,如何从
z
1
z_1
z1恢复到
x
x
x呢?
x
x
x在向量
u
u
u上的投影
x
a
p
p
r
o
x
=
U
r
e
d
u
c
e
z
x_{approx}=U_{reduce} z
xapprox=Ureducez,即图右。因此,在投影误差不是太大时,我们可以找到原样本在直线上的投影点,然后用这些点近似表示原样本。

应用PCA的建议
引入:之前提到过,PCA可以加快学习算法的执行效率,下面将解释这是如何实现的。并且也会给出使用PCA的相关建议。
下面将介绍使用PCA加速算法的方法。
假设有一个监督学习的例子,数据样本用
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)},y^{(i)})
(x(i),y(i))表示,
x
(
i
)
x^{(i)}
x(i)为高维(10000维)。
使用PCA的过程如下图。将PCA降维后的
z
(
i
)
z^{(i)}
z(i)代替
(
x
(
i
)
)
(x^{(i)})
(x(i)),从而训练得到模型。对于新样本,根据之前
x
x
x到
z
z
z的映射进行变换,然后再输入模型进行预测。
需要注意的是:
x
(
i
)
x^{(i)}
x(i)到
z
(
i
)
z^{(i)}
z(i)的映射只能通过训练集得到。测试集、交叉验证集使用模型前,先得用训练集得到的映射关系对
x
x
x进行转换。

总之,PCA应用范围如下图。

PCA的一个常见的误用是:防止过拟合。
虽然这种方式可能对防止过拟合有一定效果,但过拟合最佳解决办法还是正则化。因为PCA总会丢失掉一些有价值的信息,而正则化则不会。

另一个常见的误用是:设计机器学习系统时直接把PCA过程包含在内,而不考虑
PCA对问题的实际作用如何。为此,使用PCA算法前,首先得考虑不用PCA时学习算法运行结果是否已经满足期待。只有有强有力的证据表明确实需要数据压缩时,才真正去使用PCA算法。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)