Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
前面对半监督学习部分作了简单的介绍,这里开始了解有关无监督学习的部分,无监督学习内容稍微较多,本节主要介绍无监督学习中的PCA降维的基本原理和实现。
PCA
0.无监督学习简介
相较于有监督学习和半监督学习,无监督学习就是从没有标签的数据中进行知识发现的过程。
更具体地说,无监督学习可以分成两个方面,一:称之为化繁为简,二称之为无中生有。
所谓化繁为简,就是将比较复杂的数据进行“简单化”,此时将数据作为输入,输出则是从数据中所发现更为“简单”的内容,如下图所示:
图片数据中各种各样的树,经过function后,被“概括”为统一的“树”表示,此时就是一个化繁为简的过程。
而所谓无中生有,则是与上面的过程相反,给定一个“简单”的输入,将输出复杂的数据(这个复杂的数据就是原数据)的过程,如图所示:
假设这个“简单”的数字,经过function之后,则生成一系列的图片的过程,这个过程称之为无中生有。
上面两个方面,原数据均是没有标签的,不同的是一个是将数据作为“输入”,一个是将数据作为“输出”(这里输入输出是相对的,在训练中其实都是输入),
这个找出function的过程就是无监督学习的过程,这些经过function之后(之前)的简单的数据,就是从数据中所发现的知识。
在理解了化繁为简之后,那么就可以轻易想到常见的无监督学习中,聚类、降维就属于这一类。
而无中生有中,则包括了一些深度自编码(AutoEncoder)和深度生成模型。
下面我们对上面的内容一一进行介绍,前面已经对聚类进行过总结,本节主要是降维算法中最著名的PCA。
1.降维的简单介绍
降维是机器学习中一种常见的方法,说到降维,其原理大概可以用下图描述:
一个高维的数据,经过function之后,变成一个低维的数据,而这个低维的数据仍能保留原数据的信息。那么为什么数据要进行降维呢?先看两组图片:
图1中,一个3D的图经过降维转化为2D之后,变得更容易分类;
而图2中,假设原数据全是不同角度的“3”,那么在进行这组数据时,我们不必再用28*28表示每一条数据,只需要用一个角度来描述每一条数据即可。
因此,我们希望找到这样一个function使得高维数据降到低维数据后还能保持原来数据的信息。
可以说,降维就是将数据从一个高维坐标系降到一个新的低维的坐标系的过程(不属于同一坐标系),而在新的坐标系中,这些数据也能够用来描述原数据。
除了找出function之外,降维还有一种简单的方法,就是直接选择特征,如下图:
如上图所示,假设二维数据像上面那样子的分布情况,则在图中可以看到,只有在x2维有关,因此此时可以直接选择x2维作为降维后的数据。
但是当数据维度过大,且维度之间无法直接观察出来时,就无法直接进行特征的选择。
下面介绍另一种降维方法,也是本节的主要内容PCA。
2.PCA基本原理
2.1 PCA基本原理的一般描述
前面说到要找一个function对数据进行降维,并且降维后的数据还能保存原来的信息。假设变换前的数据为X,变换后的数据为Z,并且假设这个function是线性的,那么:
Z表示降维后的数据,X表示降维前的数据,高维数据通过线性变换之后得到低维数据。
PCA的任务就是找到一个W,对原数据进行降维,并尽可能保留更多的信息。那么这个W是如何找到呢?
现在首先假设原数据X为二维的,我们希望降维后数据Z降到一维,原数据如下图:
图中蓝色的点是原数据,现在我们想要找到一个新的坐标系,将数据降到一维,也就是说,找一个一维的坐标系,把这些数据放到新的坐标系中,有尽可能保留原数据中的信息。
假设任意两个一维坐标系①和②,分别将原来的数据投影到①和②上,那么投影到上面之后,究竟①和②哪一个能够更好地描述原来的数据信息呢?
显然②对于原数据的信息保留的更多,因为当把这么数据投影到①上之后,会有更多的数据会发生重合,导致数据的辨识度不高。
当