机器学习day13——降维

第二种类型的无监督学习问题,称为降维。
在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的,为了减少冗余或者数据空间需求 ,我们要对特征进行降维。

动机①:数据压缩

将数据从三维降至二维: 这个例子中我们要将一个三维的特征向量降至一个二维的特征向量。
我们将三维向量投射到一个二维的平面上,强迫使得所有的数据都在同一个平面上,降至二维的特征向量。
在这里插入图片描述
这样的处理过程可以被用于把任何维度的数据降到任何想要的维度,例如将 1000 维的特征降至 100 维。

数据可视化

在许多及其学习问题中,如果我们能将数据可视化,我们便能寻找到一个更好的解决方案,降维可以帮助我们。

假使我们有有关于许多不同国家的数据,每一个特征向量都有 50 个特征(如 GDP,人均 GDP,平均寿命等)。如果要将这个 50 维的数据可视化是不可能的。使用降维的方法将其降至 2 维,我们便可以将其可视化了。
在这里插入图片描述
降维之后的二维向量的Z1、Z2没有实际的物理意义。降维的算法只负责减少维数,新产生的特征的意义就必须由我们自
己去发现了。
例如,在下图二维图像中,每个点代表一个国家z1表示国家GDP,z2表示人均GDP。
在这里插入图片描述

降维算法——主成分分析方法PCA

在 PCA 中,我们要做的是找到一个方向向量(Vector direction),把数据投射到该向量上时,我们希望最小化投影误差
方向向量是一个经过原点的向量,而** 是从特征向量向该方向向量作垂线的长度。
在这里插入图片描述
PCA想做的就是将数据从二维降到一维,试着找一个向量,属于Rn空间中的向量,数据投影在该向量后,能够
**。
问题是要将𝑛维数据降至𝑘维,目标是找到向量𝑢(1) ,𝑢(2) ,…,𝑢(𝑘)使得总的投射误差最小。(k个方向向量)

主成分分析与线性回归的比较

PCA最小化的是投射误差,而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。
在这里插入图片描述
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)

算法过程

PCA 减少𝑛维到𝑘维

  1. 数据预处理。均值标准化过程与特征缩放。首先计算每个特征的均值,用减去它的均值的值取代每个特征X,使每个特征的均值正好为0。
  2. 均值归一化。我们需要计算出所有特征的均值,然后令 𝑥𝑗 = 𝑥𝑗 − 𝜇𝑗。如果特征是在不同的数量级上,我们还需要将其除以标准差 𝜎2。
  3. 计算协方差矩阵在这里插入图片描述
  4. 计算协方差矩阵𝛴的特征向量(eigenvectors):在 Octave 里我们可以利用奇异值分解(SVD)来求解。 SVD算法不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。
    SVD算法输出的是一个n*n的矩阵。
    𝑈
    由此,我们将得n个方向向量,如果我们希望将数据从𝑛维降至𝑘维,我们只需要从𝑈中选取前𝑘个向量,获得一个𝑛 × 𝑘维度的矩阵,我们用U𝑟𝑒𝑑𝑢𝑐𝑒表示。
    U𝑟𝑒𝑑𝑢𝑐𝑒
    下一步:是获取我们的原始实数域数据集X(∈Rn)投影到一个低维的表示Z(∈Rk)。
    通过如下计算获得要求的新特征向量:𝑧(𝑖) = U𝑟𝑒𝑑𝑢𝑐𝑒ᵀ∗ 𝑥(𝑖)
    在这里插入图片描述
    PCA 将𝑛个特征降维到𝑘个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA要保证降维后,还要保证数据的特性损失最小。
    PCA 技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
    PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
    但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

主成分数量的选择

主要成分分析是减少投射的平均均方误差:
在这里插入图片描述

训练集的方差为:在这里插入图片描述
我们希望在平均均方误差与训练集方差的比例尽可能小的情况下选择尽可能小的𝑘值。这个比例叫做方差保留比

如果我们希望这个比例小于 1%,就意味着原本数据的偏差有 99%都保留下来了,如果我们选择保留 95%的偏差,便能非常显著地降低模型中特征的维度了。

我们可以先令𝑘 = 1,然后进行主要成分分析,获得𝑈𝑟𝑒𝑑𝑢𝑐𝑒和𝑧,然后计算比例是否小于1%。如果不是的话再令𝑘 = 2,如此类推,直到找到可以使得比例小于 1%的最小𝑘 值(原因是各个特征之间通常情况存在某种相关性)。

压缩重现

PCA 作为压缩算法,可以把 1000 维的数据压缩100 维特征,或具有三维数据压缩到一二维表示。所以,给定的𝑧(𝑖)是100 维,怎么回到你原来的表示𝑥(𝑖)1000 维的数组?

如图中样本𝑥(1),𝑥(2)。我们把这些样本x(i)投射到图中这个一维平面z。然后现在给定一个点𝑧(1),我们怎么能回去这个原始的二维空间呢?
在这里插入图片描述
𝑥为 2 维,z 为 1 维,Z = U𝑟𝑒𝑑𝑢𝑐𝑒ᵀ 𝑥,相反的方程为:X𝑎𝑝𝑝𝑜𝑥 = U𝑟𝑒𝑑𝑢𝑐𝑒 ⋅ Z,X𝑎𝑝𝑝𝑜𝑥 ≈ 𝑥。
X𝑎𝑝𝑝𝑜𝑥与原始数据X相当相似,所以,这就是从低维表示𝑧回到未压缩的表示X,也把这个过程称为重建原始数据

PCA的应用

应用

除了用来压缩数据,PCA还可以
提高学习算法的效率
当数据集的维度很高时,运行一些学习算法会变得速度低下,而使用PCA算法可以减少数据维度,从而提高算法运行速度。

  1. 检查已经被标记的训练集,并抽取输入,我们抽取出这些x得到一个无标签的训练集
  2. 接着使用PCA得到原始数据的低维表示,这就给了我们一个新的训练集
  3. 对训练集运行学习算法
  4. 在预测时,采用之前学习而来的U𝑟𝑒𝑑𝑢𝑐𝑒将输入的特征𝑥转换成特征向量𝑧,然后再进
    行预测
    :如果我们有交叉验证集合和测试集,PCA也只对训练集学习而得到𝑈𝑟𝑒𝑑𝑢𝑐𝑒。

PCA还可以用在可视化数据中,此时的K一般选择2或者3。

误用

将其用于减少过拟合(减少了特征的数量),这样做非常不好,不如尝试正则化处理。
原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量Y有关的信息,因此可能会丢失非常重要的特征。然而当我们进行正则化处理时,会考虑到结果变量Y ,不会丢掉重要的数据。

另一个常见的错误是,默认地将主要成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值