前言
在前面我们给大家介绍的机器学习算法都是针对监督学习的,在这一章我们将给大家介绍无监督学习算法,首先我们给大家介绍的就是来解决聚类问题的K均值算法。关于K均值算法只是其中一种无监督学习算法,在后面的学习中,我还会给大家介绍其他的算法。
最后,如果有理解不对的地方,希望大家不吝赐教,谢谢!
第十一章 Clustering(聚类)
11.1 介绍无监督学习
在第一章,我们对机器学习分类时,把它分成两类监督学习和无监督学习,我们也简单地对两种方法进行了举例说明,在这里我们将重新对两者进行比较和有一个更好的认识。在前面我们对监督学习进行了详细的介绍,总结一下它的特点就是,我们有一组训练集,每个数据都有一个标签,即我们知道这个数据是输入哪一类的,比如图1所示的两类数据,我们很清楚的知道这是两类数据,他们的训练集是这样的:,我们都很清楚,我们也知道该如何对此进行分类,该如何做出怎样的决策边界是最好的。
图1 监督学习
而我们的无监督学习却是这样的,它的训练数据集是没有标签的,如图2所示,我们不知道这些数据原本是属于哪一类的,它的训练集是这样的:,所以我们只能根据哪些数据聚集在一起,然后把他们分成一类,比如图2所示的数据,我们就可以分成这样的两类,这也就是聚类的含义。
图2 无监督学习
在实际生活中,我们还有很多聚类问题的应用,如图3所示,关于社交网络的分析,天文数据的分析等等,所以聚类问题在生活中还是应用比较广泛的。
图3 关于聚类的一些应用
11.2 K-means algorithm(K均值算法)
在前面我们给大家介绍了关于无监督学习中的聚类问题,那么对于这类问题,我们该如何对数据进行比较好的分类了,下面将给大家介绍一个算法K均值算法,这只是其中一种算法,并不是唯一的,在后面我将给大家介绍其他的算法。下面我们就来看看K均值算法是如何工作的。如图4所示,我们有这样的一组数据,我们任意选择两个标准,即我们想要分成不同的两类,如图5所示,我们选择了两个聚集中心,红色的和蓝色的,接下来我们就需要计算原有的数据和这两个聚集中心的距离,然后进行比较,距离哪一个聚集中心更近,则把它归为这一类,所以我们的数据就会变成这样,如图6所示,然后再重新分别计算两个新的类别里数据的均值,重新定义为两个不同的聚集中心,再又进行计算距离分类,如此重复下去,最终当聚集中心不再改变时,分类就结束了,就成了如图7所示的结果。
图4 一组没有标签的数据
图5 任选两个聚集中心
图6 根据聚集中心对数据进行分类
图7 最终分类的结果
关于K均值算法,上面我们用比较直观的解释让大家清楚了整个的过程,下面我们就算法本身来说说。对于K均值算法,关于它的输入,首先我们会有K种聚集,就是我们要把数据分成几类,第二个输入就是我们的训练集。对于我们前面所说的聚集中心,我们用来表示,这些聚集中心是任意选择的,还有就是我们重复在做的一件事:
Repeat:
{
for i=1 to m
:=index (from 1 to K) of cluster centroid closest to
for k=1 to K
:=average (mean) of points assigned to cluster k
}
以上不是真正的算法,只是一个算法的大致框架,这样只是为了让大家更好的理解。在这个算法中,我们一直更新的就是两个和,即是我们通过计算每个数据和聚集中心的距离,得到最近距离的聚集中心下标。即,这里的k是第k个聚集中心,是1~K其中的任意一个,然后我们的就是根据新的分类计算出新的聚集中心,例如假设有,则,这就是整个算法的实现过程。
在实际问题中,并不是所有的数据一眼就可以看出需要分成几类的,比如图8中,我们有一组这样的数据,我们通过数据的外形看不出来需要分几类,而我们注意这是关于决定T-shirt大小的问题,可以根据我们实际的要求来进行分类,比如我们需要3种大小的T-shirt,S、M、L,这样我们就可以对数据进行分成3类了。
图8 关于T-shirt大小的问题
11.3 优化目标
在前面给大家介绍监督学习时,我们都会有一个目标函数也称为假设函数,还有一个代价函数,那么在K均值中是否也有了?同样的,我们也有优化的目标。我们先再次给大家回顾下K均值中的一些标记,就是训练集距离聚集中心最近的聚集中心下标,就是第k个聚集中心,而我们又定义一个就是我们的训练集经过计算分类后的类别,比如=5,则=。而我们的优化目标就是:,。即我们希望当我们最终分类好了后,每一个聚集类中的数据离对应聚集中心的距离和最小。
我们在前面有给大家介绍到,关于最开始选择聚集中心的方法,就是任意的选择,在这里我们重新给出一个方法,在这里我们的聚集中心虽然也是任意选择,但是选择的范围是在我们的训练集中选择,而且要求K<m,这大家应该可以理解,分类的类别肯定不能超过我们的训练集的个数,如图9所示,我们对此数据分成两类,K=2,在数据中任意选择两处作为我们的聚集中心。
图9 任意选择两个数据作为聚集中心
在这里既然是任意选择,所以对于图9所示的选择,我们可能最后会得到比较好的分类结果,但是我们选择如果是这样的了。如图10所示,这个时候我们的最后分类结果可能就没有之前那个那么理想了。既然是随机选择,不可避免会出现这样的情况,那么我们该如何解决了?这个时候优化目标就派上了用场了,我们需要进行大量的重复计算,根据开始随机选取的不同聚集中心计算每个的优化目标值,我们可以选择计算100次,或者更多也可以,然后再对每个优化目标的值进行比较选取最小的作为最终的结果,这样就可能会避免局部最优解了。
图10 选择了不同两个数据作为训练集中心
11.4 关于K的选择
关于我们最初需要分成几类,我们还没有一个标准,在这里给大家简单地介绍一个方法,这个方法不是万能的,最终结果可能也不是最理想的,但一般情况是这样的,叫Elbow method,如图11所示,我们把J关于K的图像画出来,会发现和我们的肘关节类似,所以也是因此得名,我们常常会选择转折的那个点作为我们的选择,图11中的,我们就会选择K=3。但有时候J关于K的图像不是这样的,是一个平滑的,如图12所示,这个时候,我们可能没有那么容易选择出K。实际上,我们在选择K时很少会用这样的方法来进行选择,既然是解决实际问题,我们更愿意根据实际情况来对K进行选择,比如T-shirt的大小选择,实际中如果我们需要3中size,那么我们就可以对此进行分成3类,S、M、L,如果需要5中size,那么就分成5类,XS、S、M、L、XL,再根据实际贵客的要求和情况进行改进,所以很多情况我们都会根据实际的需求进行分类。
图11 J关于K的图像(1)
图12 J关于K的图像(2)