《吴恩达机器学习》14 降维(PCA算法)

前言

这一章节开始介绍第二种非监督学习的算法——降维。所谓的降维顾名思义就是将多维数据降到低维数据的算法,降维方法分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。 线性降维的方法有PCA、ICA、LDA等,非线性降维方法有基于核函数的方法也有基于特征值的方法。本节讨论的是 主成分分析(PCA) 线性降维的算法。

一、算法应用

1、数据压缩

降维的应用场景之一就是为了数据压缩,因而使用较少的计算机内存或磁盘空间,但它也让我们加快我们的学习算法。如下图所示设我们未知两个的特征: x1(厘米表示); x2(英寸表示)来描述同一物体的长度。所以,这两个基本的长度度量就可以做的是减少数据到一维,即只有一个数测量这个长度。
在这里插入图片描述

2、数据可视化

降维也可以应用到数据可视化中,我们知道当特征值超出2个之后我们很难用图像来可视化数据。如下面一些国家的各项数据我们很难直观的衡量他们的之间的关系,这个时候我们就可以通过降维将多个特征压缩至1~2个来可视化我们的数据。
在这里插入图片描述

二、主成分分析(PCA)

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

1、问题

主成分分析(PCA)是最常见的降维算法。在 PCA 中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。这个问题看起来和线性回归的模型很像,但实际上是有些不同的,线性回归的误差(垂直于x轴投影),主要成分分析的误差(垂直于红线投影)
在这里插入图片描述

2、算法

介绍PCA算法直线先来学习下协方差矩阵的概念

协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

asd
看完上面的公式,我们来看下PCA的算法步骤。
在这里插入图片描述
我们可以利用奇异值分解(singular value decomposition)来求解, [U, S,V]= svd(sigma),对于一个 n × n 维度的矩阵,下面式中的 U 是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从n 维降至 k 维,我们只需要从 U 中选取前 k 个向量,获得一个n × k维度的矩阵,我们用Ureduse表示,然后通过如下计算获得要求的新特征向量z(i)
z(i) = UreduseT ∗ x(i)
在这里插入图片描述

三、应用建议

1、选择主成分的数量

主要成分分析是减少投射的平均均方误差,我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的K值。如果我们希望这个比例小于 1%,就意味着原本数据的偏差有 99%都保留下来了,如果我们选择保留 95%的偏差,便能非常显著地降低模型中特征的维度了。上面的SVD(奇异值分解)[U, S, V] = svd(sigma)。其中的S是一个n × n的矩阵,只有对角线上有值,而其它单元都是 0,我们可以使用这个矩阵来计算平均均方误差与训练集方差的比例:
在这里插入图片描述在这里插入图片描述

2、数据压缩还原

如下示我们可能有一个这样的样本。如图中样本x(1),x(2)。把这些样本投射到图中这个一维平面。然后现在我们需要只使用一个实数,比如z(1),这么把数据还原回去呢?根据公式
z(i) = UreduseT ∗ x(i)
只要做以下的转换即可:
x(i) = Ureduse ∗ z
在这里插入图片描述

3、应用

假使我们正在针对一张 100×100 像素的图片进行某个计算机视觉的机器学习,即总共有 10000 个特征。

  1. 第一步是运用主要成分分析将数据压缩至 1000 个特征
  2. 然后对训练集运行学习算法。
  3. 在预测时,采用之前学习而来的Ureduse将输入的特征x转换成特征向量z,然后再进
    行预测

错误的主要成分分析情况:一个常见错误使用主要成分分析的情况是,将其用于减少过拟合(减少了特征的数量)。这样做非常不好,不如尝试正则化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征。然而当我们进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。
另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。

总结

以上就是《吴恩达机器学习》系列视频 降维 的内容笔记,以便后续学习和查阅。

猜你喜欢

转载自blog.csdn.net/qq8993174/article/details/87856982