龙空技术网

看了这几张图,让你彻底理解特征降维

AI智媒体 611

前言:

如今朋友们对“pca降维数后的数据”大约比较关怀,朋友们都想要分析一些“pca降维数后的数据”的相关内容。那么小编也在网上网罗了一些对于“pca降维数后的数据””的相关内容,希望我们能喜欢,小伙伴们快快来了解一下吧!

导读:本文用图的形式介绍机器学习中特征降维的基本思想和方法。阅读完本篇文章,您将很容易理解PCA降维的基本思想和方法。

一、为什么要进行特征降维?

在机器学习中,一些数据集的特征数量很多,达到几千维甚至几万维。特征数量太多会导致训练模型所花费时间很长。这就需要对特征进行降维,剔除次要特征,保留主要特征。然后使用主要特征训练分类或聚类模型。

二、什么是特征降维?

特征降维实际上就是把N维空间的样本点投影的一个低维的R维空间(R<N). 例如,我们最熟悉的是将三维空间的点投影到二维平面(三维降至二维)或某个坐标轴(三维降至一维),或者将二维平面的点投影到某个坐标轴(二维降至一维). 下面的图展示了一个将二维平面的点投影到x轴的情况,它实现了将二维特征降至一维。

图1 二维空间的点投影到一维坐标轴

三、保留或剔除特征的原则是什么?

那么问题来了,降维时,什么样的特征应该被保留,什么样的特征可以剔除掉?这要看特征被投影后的分散程度。从上面的图可以看出,二维空间的点投影到一维的x轴以后,点不那么分散了。这意味着降维后信息有所丢失。一种极端的情况如下图所示,二维平面的点投影到x轴后完全重合,变成了一个点。

图2 二维平面的点投影到x轴后重合

这导致降维后该特征对样本的区分能力完全丧失,因为所有的样本降维后都变成了相同的点。如同生活中我们很难区分一对双胞胎一样,因为他们的身高、长相、穿衣、发型等特征非常相似,几乎完全一样。

反过来说,如果高维空间的样本点投影到低维空间后仍然比较分散,如同第一张图一样,则降维后的特征仍然具有样本区分能力。因此,我们很自然地想到,如果降维后的某个特征是分散的,则它对区分样本是有用的;降维后的样本点越分散,它的样本区分能力越高。因此,将N维空间的样本投影到R维(R<N)后,需要考察R维特征在各自维度的分散程度。

这个分散程度可以用方差来度量。方差越大,样本越分散;反之则越集中。如果降维后的R维特征在各个维度都比较分散,即方差比较大,则这些特征对样本的区分能力就比较好。这就是一个成功的降维。

四、特征降维的本质是什么?

需要说明的是,特征降维不一定是要把N维空间的点投影到其自身的R个坐标轴组成的低维空间上。看下面两张图,图3是把二维平面的点投影的横轴后统计绘制的直方图。图4是投影到斜率k=2的直线上后统计绘制的直方图。

图3 二维平面内的点在x轴投影的直方图

图4 二维平面内的点投影到斜率为2的直线的直方图

显然,图4中投影到斜率k=2的直线上后,投影点更为分散,意味着它对样本的区分能力比投影到横轴的要高。下面的图5中,绘制了把二维平面的点投影到斜率为k=-0.5的直线上统计计算的直方图。可以看出,投影点更集中了。它是三个图中最集中的一个,它的样本区分能力也就最差。

图5 二维平面内的点投影到斜率为-0.5的直线的直方图

因此,对N维特征降维要考虑的是,如何找到一个R维的坐标系,使得在所有R维坐标系中,该坐标系里的投影点最为分散。

因此,从N维空间到R维空间的特征降维,其实就是寻找一个最优坐标系,使得N维空间的样本点投影到R维空间后,投影点在该R维坐标系里最为分散的过程。这就是PCA降维的思想。

需要说明的是,在大于三维的空间中,我们不好说某两个坐标轴垂直。而用正交表示。所谓正交,表示一个坐标轴上的所有点在另外一个坐标轴的投影点全部重合,其实质还相当于二维或三维空间的垂直。另外,为区分原坐标系坐标轴的概念,把任意R个正交的维度称为正交基。可以认为正交基是一个广义的坐标系概念。

因此,N维特征降至R维的本质就是寻找一组R个最优正交基,使得高维空间的样本投影到该组正交基后,投影点是在所有R维正交基里最为分散的。

五、特征降维如何实现?

幸运的是,寻找最优R维正交基的工作已经有人替我们做了。我们只需要把这些方法拿来用就行。例如机器学习库scikit learn里就提供了PCA()类,用户只需指定要降至的维度R,就可以实现PCA降维。下面图6展示了某数据集的20个特征。图7是将其PCA降维至8维后,各个维度投影点的抖动散点图。

图6 某数据集的20个特征抖动散点图

图7 PCA降至8维后的抖动散点图

可以看出,PCA降维后,将投影后特征按照分散程度(方差)进行排序,保留了前8个最分散的特征,而把其余特征剔除。

六、如何绘制倾斜直方图和抖动散点图?

前文我们使用了倾斜直方图来说明将样本点投影到任意斜率直线后,投影点的分散程度。该倾斜直方图的计算和绘制方法是作者自己开发的。使用了Python和Maplotlib库。抖动散点图的绘制使用了seaborn库,感兴趣的朋友可以私信交流。

如果你觉得这篇文章有用,欢迎评论、点赞,并请转发扩散给更多的人。欢迎关注本头条号:AI与可视化,本号持续聚集于人工智能和可视化领域的热点问题。

标签: #pca降维数后的数据