聚类算法属于无监督学习范畴,通常用于群组发现和离群点检测。为了便于记忆,简单的将韩家炜《数据挖掘:概念与技术》简单的总结为四种:基于距离,基于密度,基于层次,基于网格。
1. 基于原型
基于原型的聚类方法,通常认为我们能通过一组原型进行刻画。K-means,k-means++,二分K-means,mini-batch Kmeans,meanshift,GMM聚类等等。
2. 基于密度
基于密度的聚类算法假设聚类结构能够通过样本分布的紧密程度确定。通常情况下,密度聚类从样本密度的角度来考虑样本之间的可连接性。DBSCAN是最知名的基于密度的聚类算法。
3. 基于层次
层次聚类试图在不同层次对数据进行划分,从而形成树形的聚类结构。数据的划分可以采用“自底向上”或者“自顶向下”的分拆策略。AGNES是一种采用自底向上聚合策略的层次聚类方法。他先将数据中的每一个样本看做一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。
4. 基于网格
前三种聚类算法都是数据驱动的,他们总是从数据进行着手。然而基于网格的聚类算法采用空间的聚类算法,对样本所在空间进行划分。然后对空间进行聚合,自然数据也就被聚类。因此算法 速度很快。STING,CLIQUE算法等等。
5. 聚类效果评估
聚类本身有很多的性能评估标准,对于常用的kmeans算法来说,就是SSE – 误差平方和(sum squared of error)。具体来说就是每个点到各自簇中心距离的平方和。比如在sklearn中:
clf = Kmeans(**params)
clf.inertia_
参考书籍:
《机器学习》 – 周志华
《机器学习实战》- Peter Harrington
《数据挖掘:概念与技术》- 韩家炜