这节介绍一下机器学习中的无监督学习中的经典方法,聚类。因为是无监督学习,数据没有标签,要想对他们进行分类,最好的办法就是看他们的分布。
比如上面这个图,我们自然而然就想着把点分成三个类,因为他们分别聚集在一起,这就是聚类方法的核心思想。当然除了看位置,还有看形状和密度。
K-means
就如学感知机首先必学PLA算法,学聚类就首先必学K-means算法。
它跟KNN一样,都是为了分类,能变的只有参数K和算距离的公式(一般都算欧式距离),但是这俩有本质不同,一个是监督学习一个是无监督学习。
我们先看看用了K-means是什么效果:
最左边的图是原始的无标签数据,使用K-means算法,我们想要分3类,所以确定参数K=3,然后K-means算法会不断地迭代计算,直到获得三个合适中心,三个中心分别代表三个类(图中的三个红叉),然后每个数据点的类别就由离它最近的中心决定。
它很喜欢球状分布的数据集。
算法步骤
- 随机确定K个中心;(最好靠近数据且相互有一定距离)
- 分别计算所有数据点到K个中心的距离,然后确定每个数据的类别;
- 分别找K个类的中心位置(计算K个类中数据的均值),重新确定为新的中心;
- 不断重复2、3步,直到K个中心的位置基本不变。(搞定!)(就是不断算中心,归类,算中心,归类…直到稳定了,K个类就确定了。)
那K选什么值合适?理论上K越大效果越好,误差越小,但是模型的复杂度会相应上升,其中有个tradeoff。可以看到下图的模型选K=6效益最高。
GMM
除了K-means,聚类方法还有高斯混合模型(GMM),它把数据看成一系列高斯分布的线性叠加,然后利用期望最大化算法(EM算法)对数据进行分类。
对于非球状分布的数据集,GMM也能很好处理。
谱聚类
遇到这种数据,若是带标签的我们可以用SVM的核函数,现在是无标签数据,肿么办?谱聚类(spectral clustering)方法登场。
核心思想:
将所有数据视为空间中可以通过边连接的点。通过对所有数据点组成的组进行切割,使不同子组之间的边权和尽可能小,而不同子组内部的边权和尽可能大。
所以谱聚类很适合非线性可分或非球状的数据集。
附上其他笔记的链接:
《无废话的机器学习笔记(一)》
《无废话的机器学习笔记(二)(线性回归)》
《无废话的机器学习笔记(三)(梯度下降)》
《无废话的机器学习笔记(四)(感知机、逻辑回归、贝叶斯)》
《无废话的机器学习笔记(五)(SVM)》
《无废话的机器学习笔记(六)(决策树,KNN)》
《无废话的机器学习笔记(番外)(数据集,方差-偏差,过拟合,正则化,降维)》