聚类算法
常见的聚类算法可以分为四类:
- 基于连通模型(connectivited-based):如层次聚类,按照对象之间的距离聚类。(距离的定义可以有很多种)。
- 基于中心点(centroid-based):如K-means,每个cluster都维持有一个中心点。
- 基于分布模型(distribution-based):如高斯混合模型(GMM),假设数据集中的点是由一种混合的概率模型采样所得,将多有可能同属于一组分布的点聚在一起。
- 基于密度(density-based),如DBSCAN和OPTICS,密度高的区域被分为一个cluster,不同cluster由密度低的区域分割开,低密度处的样本被视为噪音。
层次聚类(hierarchial cluster)
层次聚类方法可以分为两类:
- Agglomerative层次聚类(自底向上,bottom-up聚类):
每一个对象都是一个cluster,选最近的cluster合并,最终所有的对象都属一一个cluster - Divisive层次聚类(自顶向下,top-botttom聚类);
所有的对象都属一一个cluster,按一定规则将cluster划分,最终每一个对象都是一个cluster
层次聚类算法是一种贪心算法(greedy algorithm),每一次执行都是某种程度上的局部最优
Agglomerative层次聚类方法
如存在距离矩阵D(距离可以通过不同度量方式得到)
1 2 3 4 5 D 1 = 1 2 3 4 5 [ 0.0 2.0 0.0 6.0 5.0 0.0 10.0 9.0 4.0 0.0 9.0 8.0 5.0 3.0 0.0 ] \qquad\qquad\quad\begin{matrix} 1&\quad 2&\quad 3 &\quad 4&\quad 5 \end{matrix} \\ D_1= \begin{matrix} 1\\2\\3\\4\\5 \end{matrix} \begin{bmatrix} 0.0 & \\ 2.0 &0.0 \\ 6.0 &5.0 &0.0 \\ 10.0 &9.0 &4.0 &0.0 &\\ 9.0 &8.0 &5.0 &3.0 &0.0 &\\ \end{bmatrix} 12345D1=12345⎣⎢⎢⎢⎢⎡0.02.06.010.09.00.05.09.08.00.04.05.00.03.00.0