【笔记】聚类算法总结
聚类是无监督学习的代表,目的是将属性相似的样本归到同一类上去;
这里介绍一下常见的聚类算法:
1、K-means
k-means是非常经典的聚类算法:其算法思路如下:
- 手动定义k个类别,在数据集中选取k个点,作为每一类的中心点;
- 计算剩下的其他样本和这k个样本之间的距离,对于每一个样本点,将他归到和他距离最近的聚类中心所属的类;
- 计算每一类中所有点的均值,得到新的每一类的聚类中心;
- 重复2)和3)过程,知道样本分组不再发生改变;
分析一下:k-means算法思路非常简单,但有两个关键点要改进,第一,于如何选择这k个中心点,第二,初始聚类中心的选择;关于第一点,如果不知道样本集中有多少个类别,k值很难选择,关于第二点,则和算法收敛有关,好的聚类中心会减少迭代次数;众多改建算法都是围绕着这两点进行;
2、HAC层次凝聚
HAC也是一种比较经典的聚类算法,其主要思想如下:
- 先把每一个样本点归为一类,假设有n个样本,则一共有n个类;
- 计算类间的距离(方式有很多,可取最近,最远,找重心等),把距离最近的类进行归并,合成新的类;
- 重复2)过程,知道达到某个确定的收敛条件(比如,类别数达到初始10%, 或者类间距离大于某个设定的阈值)
分析一下:HAC算法的一个关键点在于,迭代条件如何选取,和k-means中的k值一样,需要一定的经验,具体问题具体分析;
3、最大最小距离聚类算法
这种方法的核心思想是先计算出聚类中心,再把所有的样本点按照就近原则,归到离自身最近的聚类中心所对应的类。最大最小是指在所有的最小距离中选取最大的。其主要的算法步骤如下:
-
随机选择一个点,作为第一个类的聚类中心 Z 1 Z1 Z1。
-
选择与步骤 1 中距离最远的样本点,作为第二个类的聚类中心 Z 2 Z2 Z2。
-
逐个计算每个点到所有聚类中心的距离,并把所有的最短的距离记录下来。
-
在这些最短距离中挑选最大的值,如果这个最大值大于 λ ∣ ∣ Z 1 − Z 2 ∣ ∣ \lambda ||Z1-Z2|| λ∣∣Z1−Z2∣∣ ,其中 0 ≤ λ ≤ 1 0\leq \lambda \leq 1 0≤λ≤1 ,那么将这个最大距离所对应的另一个样本点作为新的聚类中心;否则整个算法结束。
-
重复步骤 3 和 4 的操作,直到 4 中不再出现新的聚类中心。
-
将所有的样本归到与他自身最近的聚类中心。