首页 > 其他 > 详细

主成分分析,白化,主成分分析和白化(无监督学习之前的步骤)【转】

时间:2014-02-21 17:07:24      阅读:560      评论:0      收藏:0      [点我收藏+]

主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法。更重要的是,理解PCA算法,对实现白化算法有很大帮助,很多算法都先用白化算法作预处理步骤。

假设你使用图像来训练算法,因为图像中相邻的像素高度相关,输入数据是有一定冗余的。具体来说,假如我们正在训练的16×16灰度值图像,记为一个256维向量bubuko.com,布布扣,其中特征值bubuko.com,布布扣对应每个像素的亮度值。由于相邻像素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小

在我们的实例中,使用的输入数据集表示为bubuko.com,布布扣,维度bubuko.com,布布扣 即 bubuko.com,布布扣 。假设我们想把数据从2维降到1维。(实际应用中,我们也许需要把数据从156维降到50维;在这里使用低维数据,主要是为了更好地可视化算法的行为)。下图是我们的数据集:

bubuko.com,布布扣

这些数据已经进行了预处理,使得每个特征 bubuko.com,布布扣 和 bubuko.com,布布扣 具有相同的均值(零)和方差

为方便展示,根据 bubuko.com,布布扣 值的大小,我们将每个点分别涂上了三种颜色之一,但改颜色并不用于算法而仅用于图解。

PCA算法将寻找一个低维空间来投射我们的数据。从下图中可以看出, bubuko.com,布布扣 是数据变化的主方向,而 bubuko.com,布布扣 是次方向。

bubuko.com,布布扣

也就是说,数据在 bubuko.com,布布扣 方向上的变化要比在 bubuko.com,布布扣 方向上大。

为更形式化地找出方向 bubuko.com,布布扣 和 bubuko.com,布布扣 ,我们首先计算出矩阵 bubuko.com,布布扣,如下所示:

bubuko.com,布布扣

假设 bubuko.com,布布扣 的均值为零,那么 bubuko.com,布布扣 就是x的协方差矩阵。(符号 bubuko.com,布布扣 ,读"Sigma",是协方差矩阵的标准符号。虽然看起来与求和符号 bubuko.com,布布扣 比较像,但它们其实是两个不同的概念。)

可以证明,数据变化的主方向 bubuko.com,布布扣 就是协方差矩阵 bubuko.com,布布扣 的主特征向量,而 bubuko.com,布布扣 是次特征向量。

你可以通过标准的数值线性代数运算软件求得特征向量(见实现说明).我们先计算出协方差矩阵bubuko.com,布布扣的特征向量,按列排放,而组成矩阵bubuko.com,布布扣

bubuko.com,布布扣

此处, bubuko.com,布布扣 是主特征向量(对应最大的特征值), bubuko.com,布布扣 是次特征向量。以此类推,另记 bubuko.com,布布扣 为相应的特征值。

在本例中,向量 bubuko.com,布布扣 和 bubuko.com,布布扣 构成了一个新基,可以用来表示数据。令 bubuko.com,布布扣 为训练样本,那么 bubuko.com,布布扣 就是样本点 bubuko.com,布布扣 在维度 bubuko.com,布布扣 上的投影的长度(幅值)。同样的, bubuko.com,布布扣 是 bubuko.com,布布扣 投影到 bubuko.com,布布扣 维度上的幅值。

旋转数据

至此,我们可以把 bubuko.com,布布扣 用 bubuko.com,布布扣 基表达为:

bubuko.com,布布扣

(下标“rot”来源于单词“rotation”,意指这是原数据经过旋转(也可以说成映射)后得到的结果

对数据集中的每个样本 bubuko.com,布布扣 分别进行旋转: bubuko.com,布布扣 for every bubuko.com,布布扣 ,然后把变换后的数据 bubuko.com,布布扣 显示在坐标图上,可得:

bubuko.com,布布扣

这就是把训练数据集旋转到 bubuko.com,布布扣bubuko.com,布布扣 基后的结果。一般而言,运算 bubuko.com,布布扣 表示旋转到基 bubuko.com,布布扣,bubuko.com,布布扣, ...,bubuko.com,布布扣 之上的训练数据。矩阵 bubuko.com,布布扣 有正交性,即满足 bubuko.com,布布扣 ,所以若想将旋转后的向量 bubuko.com,布布扣 还原为原始数据 bubuko.com,布布扣 ,将其左乘矩阵bubuko.com,布布扣即可: bubuko.com,布布扣 , 验算一下: bubuko.com,布布扣.

数据降维

数据的主方向就是旋转数据的第一维 bubuko.com,布布扣 。因此,若想把这数据降到一维,可令:

                 bubuko.com,布布扣

更一般的,假如想把数据 bubuko.com,布布扣 降到 bubuko.com,布布扣 维表示 bubuko.com,布布扣(令 bubuko.com,布布扣 ),只需选取 bubuko.com,布布扣 的前 bubuko.com,布布扣 个成分,分别对应前 bubuko.com,布布扣 个数据变化的主方向。

PCA的另外一种解释是:bubuko.com,布布扣 是一个 bubuko.com,布布扣 维向量,其中前几个成分可能比较大(例如,上例中大部分样本第一个成分 bubuko.com,布布扣 的取值相对较大),而后面成分可能会比较小(例如,上例中大部分样本的 bubuko.com,布布扣 较小)。

PCA算法做的其实就是丢弃 bubuko.com,布布扣 中后面(取值较小)的成分,就是将这些成分的值近似为零。具体的说,设 bubuko.com,布布扣 是 bubuko.com,布布扣 的近似表示,那么将 bubuko.com,布布扣 除了前 bubuko.com,布布扣 个成分外,其余全赋值为零,就得到:

bubuko.com,布布扣

在本例中,可得 bubuko.com,布布扣 的点图如下(取 bubuko.com,布布扣 ):

bubuko.com,布布扣

然而,由于上面 bubuko.com,布布扣 的后bubuko.com,布布扣项均为零,没必要把这些零项保留下来。所以,我们仅用前 bubuko.com,布布扣 个(非零)成分来定义 bubuko.com,布布扣维向量 bubuko.com,布布扣 。

这也解释了我们为什么会以 bubuko.com,布布扣 为基来表示数据:要决定保留哪些成分变得很简单,只需取前 bubuko.com,布布扣 个成分即可这时也可以说,我们“保留了前 bubuko.com,布布扣 个PCA(主)成分”

 还原近似数据

现在,我们得到了原始数据bubuko.com,布布扣的低维“压缩”表征量bubuko.com,布布扣,反过来。如果给定bubuko.com,布布扣 ,我们应如何还原原始数据x呢?要转换回来,只需bubuko.com,布布扣 即可。进一步,我们把 bubuko.com,布布扣 看作将 bubuko.com,布布扣 的最后 bubuko.com,布布扣 个元素被置0所得的近似表示,因此如果给定 bubuko.com,布布扣,可以通过在其末尾添加 bubuko.com,布布扣 个0来得到对 bubuko.com,布布扣 的近似,最后,左乘 bubuko.com,布布扣 便可近似还原出原数据 bubuko.com,布布扣 。具体来说,计算如下:

 

bubuko.com,布布扣

 

上面的等式基于先前对U的定义。在实现时,我们实际上并不先给bubuko.com,布布扣 填0然后再左乘 bubuko.com,布布扣 ,因为这意味着大量的乘0运算。我们可用 bubuko.com,布布扣 来与 bubuko.com,布布扣 的前 bubuko.com,布布扣 列相乘,即上式中最右项,来达到同样的目的。将该算法应用于本例中的数据集,可得如下关于重构数据 bubuko.com,布布扣 的点图:

bubuko.com,布布扣

由图可见,我们得到的是对原始数据集的一维近似重构。

在训练自动编码器或其它无监督特征学习算法时,算法运行时间将依赖于输入数据的维数。若用 bubuko.com,布布扣 取代 bubuko.com,布布扣 作为输入数据,那么算法就可使用低维数据进行训练,运行速度将显著加快。对于很多数据集来说,低维表征量 bubuko.com,布布扣 是原数据集的极佳近似,因此在这些场合使用PCA是很合适的,它引入的近似误差的很小,却可显著地提高你算法的运行速度。

选择主成分个数

主成分分析,白化,主成分分析和白化(无监督学习之前的步骤)【转】

原文:http://www.cnblogs.com/rong86/p/3558761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!