[TOC]
- 聚类的基本概念
- 相似度或距离
- 类或簇
- 类与类之间的距离
- 层次聚类
- k均值聚类
- 模型
- 策略
- 算法
- 算法特性
- Kmeans是1967年由MacQueen提出的,注意KNN也是1967年提出的,作者是Cover和Hart。
以下实际上是算法实现过程中的一些属性。
矩阵$X$表示样本集合,$X\in \mathbf{R}^m,x_i,x_j\in X, x_i=(x_{1i},x_{2i},\dots,x_{mi})^{\mathrm T},x_j=(x_{1j},x_{2j},\dots,x_{mj})^\mathrm T$,$n$个样本,每个样本是包含$m$个属性的特征向量,
这个图可以再展开
马氏距离
其实书上的这个图,并看不出来距离和相关系数的关系,但是书中标注了角度的符号。
类和类之间的距离叫做linkage,这些实际上是算法实现过程中的一些属性。
类的特征包括:均值,直径,样本散布矩阵,样本协方差矩阵
类与类之间的距离:最短距离,最长距离,中心距离,平均距离。
类$G_p$和类$G_q$
层次聚类假设类别之间存在层次结构。
层次聚类可以分成聚合聚类和分裂聚类。
聚合聚类三要素:
- 距离或相似度:闵可夫斯基,马哈拉诺比斯,相关系数,余弦距离
- 合并规则:类间距离最小,最短,最长,中心,平均
- 停止条件:类的个数达到阈值,类的直径达到阈值
输入:$n$个样本组成的集合$X$
输出:对样本的一个层次化聚类$C$
- 计算$n$个样本两两之间的欧氏距离${d_{ij}}$,记作矩阵$D=[d_{ij}]_{n\times n}$
- 构造$n$个类,每个类只包含一个样本
- 合并类间距离最小的两个类,其中最短距离为类间距离,构建一个新类。
- 计算新类与当前各类之间的距离。如果类的个数是1, 终止计算,否则回到步骤3。
这个算法复杂度比较高$O(n^3m)$
如图,采用层次聚类实现circle的划分。
注意对于kmeans来说,距离采用的是欧氏距离平方,这个是个特点。
输入:$n$个样本的集合$X$
输出:样本集合的聚类$C^*$
- 初始化。
- 对样本进行聚类。
- 计算类的中心。
- 如果迭代收敛或符合停止条件,输出$C^*=C^{(t)}$
对于Cirlce数据,如果采用kmeans聚类,得到结果如下
Blob数据采用kmeans结果如下
这个例子里面,直接给定的是距离矩阵,类间距离选择的是最小距离。
这个例子很有意思,实际上,最好的划分,不一定是书中给的答案的划分。这也说明了初值的选择,对于kmeans算法最后的结果影响比较重要。
在后面的初始类选择部分,对此做了解释。但是实际上在做到这个例子的时候应该就能想到这个问题,书中选择的数据很典型。