在之前的BLOG里,我们学习了无监督学习的聚类算法。在之后的几篇BLOG中,我们将学习第二种无监督学习问题——降维(dimensionality reduction),顾名思义就是降低我们数据集的维度。这篇BLOG,就让我们来看看看看降维吧。

降维

首先先让我们通过一个例子来具体看看什么是降维。

假如我们有一个有很多很多很多特征变量的数据集:

MV1.png

其中有两个特征量,一个某个物体的长度以厘米为单位(下取整),另一个 x2 是它以英寸为单位的长度(下取整)。 我们可以看到这是一个非常冗余的数据,用两个特征变量 x1 和 x2 来表示好像非常浪费,因为它们都是测量到的长度。或许我们应该把这个数据降到一维,就像下图这样它们几乎都在一条直线上:

MV2.png

这样一来我们只用一个长度相关的变量就可以表示这组数据了。让我们再详细看看从二维也就是 2D 降到一维也就是 1D 到底意味着什么。让我们给这些样本涂上不同的颜色:

MV3.png

在这个例子中降低维度的意思是,我们希望找到一条直线,让基本所有点都落在条直线上。然后我们把所有的数据映射到这条线上,这样做之后我们就可以直接测量这条线上每个样本的位置,并把这条型的直线称为一个新特征,叫做 z1:

MV4.png

要确定每个点的位置,通过我们新的特征 z1,我们只需要一个数字。也就是说新特征变量 z1 能够在一维的数据下表示这条蓝线上每一个点的位置。即如果我们之前有一个样本 x(1),为了表示原本的 x(1) 我需要一个二维数字或者一个二维特征向量,但是现在我可以表示为 z(1) 我可以只用 z(1) 来表示我的第一个样本,它就是一个实数。这样就完成了降维,减少了一半的内存需求或者硬盘需求。

接下来我们再看看把数据从三维 3D 降到二维 2D 的例子。 顺便说一下在更典型的维数约减例子中,我们可一般是从 n 维减小到 k 维,至于如何操作会在之后的BLOG中着重学习。下图中我们有这样一个数据集,每个样本都是一个三维实数的点:

MV5.png

那么降维在这儿怎么用呢。降维的作用就是把所有数据投影到一个二维平面上。首先我们旋转视图,发现从某个角度看过去,所有的点仿佛都落在同一个平面上:

MV6.png

我们用 z1 和 z2 两个向量长成这个平面,然后将所有点投影到平面上:

MV7.png

现在让我们来再理解一下降维的操作。我们是从一个3D 点云开始,它的坐标轴是 x1 x2 x3。然后我们大部分数据差不多都落在某个 2D 平面上,或者说距离某个 2D 平面不远,所以我们可以做的是把全部数据都投影到那个 2D 平面上。这就是把数据从三维降到二维的过程,降维不仅能让数据占用更少的计算机内存和硬盘空间,还能给算法提速。

数据可视化

在上一部分中,我们讲到数据降维的降维算法,并且运用降维来进行数据压缩。在本一部分中,我们会将会看到另一种数据降维的应用,就是可视化数据。对于大多数的机器学习 应用,降维真的可以帮助我们来开发高效的学习算法,前提是我们能更好地理解数据。如果有某种将数据可视化更好的办法,那就是维度降低。

让我们从一个例子开始,假如我们已经收集了大量的有关全世界不同国家经济的统计数据集:

MV8.png

其中第一个特征 x1 是国内生产总值,x2 是一个 每人占有的GDP,x3 是人类发展指数, x4 是预期寿命,还有 x5 x6 等其它特征……我们也许会有大量的数据集,比如对于每个国家可能有50个特征,那么显然我们没办法绘制出50维的图标来帮助我们能更好地来理解数据,那我们能如何将这些数据可视化呢?

没错我们可以选择降维。使用降维的方法我们可以提出一种不同的特征表示方法,比如我们可以使用一个二维的向量 z来代替五十维的向量 x ,在这种情况下我们可以使用一对数字 z1 和 z2 来表示数据:

MV9.png

从某种程度来说,这2个数的向量 z 总结了50个数的向量 x 。也许我们可以使用这两个数来绘制出这些国家的二维图,使用这样的方法尝试去理解二维空间下不同国家在不同特征的差异:

MV10.png

所以我们通过降维将数据降维从50维度的数据降维到2维度,这样我们就可以轻易绘制出2D的图像了。当我们这么做时,我们会发现如果,降维算法的输出结果通常不能赋予我们想要的这些二维新特征一个物理含义。但如果我们绘制出这些特征也许会发现,在这里每个国家用一个点z(i)表示,其中z(i)是一个二维数据。所以我们或许会发现那条水平轴即z1轴大致对应了国家总面积或者一个国家的总体经济活动情况更进一步说大致代表了一个国家的整体经济规模,而纵轴的数据或许对应着人均GDP或是人均幸福感或是人均经济活动之类的。我们也许能发现有了这50个特征到最后主要是这2个维度的特征来进行表示,让我们对国家来分析看看。

右上角蓝色的点对应的是美国,其大致有着相当大的总GDP 以及相对的高人均GDP,像左边的灰色点代表的是新加坡这样的国家,其也有很高的人均GDP,但由于新加坡是一个非常小的国家,所以其国家整体经济规模比美国要小得多。同时在下面的红色点,我们可以看到一些发展中国家经济总量很大,但是由于人口较多导致人均GDP不是很大。

通过这些,我们或许能发现只通过观察z1和z2轴,我们就可以大致捕捉到两个维度的变量变化情况,在这些不同的国家中比如说国家的整体经济活动映射着国家整体经济的规模,同时也映射了个人的幸福感;我们可以通过测算人均GDP,人均卫生保健等其它类似的指标进行测算。

这就是降维在数据可视化上的应用

结语

相信通过这篇BLOG,你已经对降维有了一点改了了解,在之后的BLOG中,我们将会开始开发一种特别的算法,来帮助我们进行降维运算。最后希望你喜欢这篇BLOG!

Last modification:March 4th, 2021 at 03:48 am
If you think my article is useful to you, please feel free to appreciate