神经网络

吴恩达机器学习—降维

2019-01-22  本文已影响588人  魏清宇

目标:数据压缩

如果数据特征过多,可能会产生冗余,你也会不太清楚自己到底有哪些特征,需要哪些特征。

数据压缩2D-1D

建立一条线,使每个点都投射到这条线上,然后建立新的特征z_{1} .

数据压缩3D-2D

将3维数据投影到一个平面上,就得到了二维数据点。然后用一个二维数据z_{i} \in R^2来表示。

目标二:数据可视化

多维数据 将多维数据转化为2维数据

多维数据可视化困难,转化成二维数据便于可视化,二维数据的坐标可能没有准确的物理意义

二维数据可视化

主成分分析—PCA

数据降维最常用的方法就是PCA算法:PCA算法建立一个低维平面,如下图红色线,然后将数据点投影在这个平面上,使投影误差最小。在进行PCA算法之前,首先要进行均值归一化和特征规范化,使特征均值为0,且在可比较的范围内。

投影平面的选择

由上图可以看出,红色的线比紫色的线投影误差较小,更适合作为投影平面。

PCA的正规表示

对于2D-1D,相当于找到一个向量,将点投影到该向量上,使得投影误差最小;对于高维数据,相当于找到多个向量。

PCA与线性回归

上面左图是线性回归,右图是PCA,两图计算距离的方式不同:线性回归是计算每个x对应的实际y值与拟合线的距离,因此,在计算距离的时候,距离线的方向是垂直于x轴的,表示同一个x对应的距离差。而PCA计算的是点到线的投影距离,是点到线的最短距离,即正交距离。另一方面,线性回归中是给定x的值预测y,而在PCA中,每一个x值拥有相同的权重。

均值归一化

在数据处理时,首先进行均值归一化:求出所有数据点的均值,再用每一个数据减去均值,得到归一化的样本点,使数据都处于可比较的范围内。

数据投影

在进行降维的时候,要找到合适的一个或多个向量进行投影,那么这些向量是如何得到的呢?

将N-维数据降维k维数据

首先建立一个相关系数矩阵,这里的\Sigma 表示的是相关系数矩阵,他是一个n*n的矩阵,对矩阵进行SVD计算,即奇异值分解,求得一个N*N的矩阵U,则根据需要,取U的前k列向量作为我们的投影向量。

降维计算

得到k个向量以后,转置得到k*n的矩阵,与样本X的N*N的矩阵相乘,得到k*1新的矩阵,则投影完毕。

PCA算法总流程

总的来说,PCA算法如下:先进行特征缩放,然后计算sigma函数求得一个n*n的矩阵;对求出的矩阵进行SVD分解,取前k个向量作为投影向量Ureduce;转置的投影矩阵右乘样本x完成降维。

主成分数量的选择

主成分数量的选择

计算两个指标,Average squared projection error和Total variation in the data,然后根据上述公式计算指标,选择对应最小指标的向量个数k.99%通常表示新形成的特征保留了原有数据99%的信息。x_{approx} 指将映射后的数据压缩重现后得到的近似值,压缩重现方法见后文。

K的选择

进行向量数目选择的时候,首先设定一个k值,然后计算指标,然后改变k值在计算一次,选择指标最小的k的数目。在实际计算中有较为简便的方法:SVD分解的时候求得的S是一个对角阵,通过对角阵上的数据计算指标,这样就不用重复设置k值进行计算和比较,只用根据s矩阵进行计算即可。

k选择的流程

先进行SVD分解,然后根据S矩阵计算指标,然后进行选择。

压缩重现

在之前的计算中都是对数据进行压缩降维,那么压缩的数据怎么还原成原来的高维数据呢?

数据压缩重现

PCA的使用建议

监督学习的降维

在有标签的数据中,可以先忽略标签,对样本进行PCA计算,先对样本进行特征缩放和均值归一化处理,然后求sigma函数和SVD分解,找到投影向量,根据投影向量求得新的特征向量。但是PCA这一过程即特征选择必须在训练集上进行,求得的投影向量可以用于验证集和测试集。上例中,我们假设将10000维的数据降到了1000维,这其实是不切实际的,通常降维处理只能将数据维度降维1/5或1/10,保留大部分的方差从而几乎不影响性能,如分类精度和准确度。

PCA的应用

PCA可以压缩数据,从而可以降低数据占据的存储空间,提高学习算法的效率,这一过程通过根据信息保留指标的大小来选择合适的k值来实现,通常指标大小为99%。另一方面,PCA可以帮助实现可视化,将数据讲到2维或3维。

不能用PCA来防止过拟合

PCA算法不能用来防止过拟合!因为PCA在进行降维的时候只考虑到了输入x的信息,而不管对应的标签y,在进行降维时会丢失很多信息。即使其信息保留程度达到了99%,其效果也不会比正则化防止过拟合更好。

PCA的使用误区

PCA在适当的时候使用是很有效的,但是,在建立学习系统之前,不要急着使用PCA,现在原始数据上进行试验,除非你真的确定进行不下去或者计算太复杂,存储空间不够的情况下,在使用PCA,很多情况下直接使用原始数据效果可能更好。

上一篇 下一篇

猜你喜欢

热点阅读