聚类算法综述

目前的心得是聚类算法的性能最重要的是如何衡量相似性

相似性度量方式

闵科夫斯基距离


当p=1时,为曼哈顿距离,p=2时,为欧式距离,时,为切比雪夫距离

马氏距离(协方差距离)


其中为x的均值,为x的协方差阵,此类方法考虑了各种特性的相似性。

编辑距离:

可用于字符串的相似性度量,如给定两个字符串,从第一个转换为第二个所需要的最小编辑操作称为编辑距离,最主要的操作是插入,删除和替换,具体的迭代公式为
dp[i][j]= \begin{cases} 0 \qquad & i=j=0\\ j \qquad & i=0,j>0\\ i \qquad & i>0,j=0\\ min(dp[i][j-1]+1, dp[i-1][j]+1,dp[i-1][j-1]) \qquad & S_1(i)=S_2(j)\\ min(dp[i][j-1]+1, dp[i-1][j]+1,dp[i-1][j-1]+ 1) \qquad & S_1(i)\neq S_2(j)\\ \end{cases}

动态时间规整距离(DTW)

基本思想是找到所有密度相连的点构成一类,但是需要人为确定参数和MinPts

  • ,想要找到最优的弯曲路径,使得S和Q之间的距离最短,有效的弯曲路径必须符合给出的这三个要求:

边界性:满足起始点一致,即;
单调性:对于给定的和,满足;
连续性:对于给定的和,满足.

Shaped Based Distance(基于相关性的距离)

首先定义


则最终距离的计算表达为

聚类方式

常见的聚类方式可以分为四类: 基于密度(Density based),基于原型(prototype-based),层次聚类(hierarchical clustering),基于模型(Model-based)的聚类。

基于密度的聚类:

  • 基本概念:参数
    • 域: 对于给定的数据点,距离此数据点距离小于的范围
    • 核心对象:如果某点的域中包含至少MinPts个点,则此数据点为核心对象
    • 密度直达:若在的域内,且为核心对象,则称由密度直达
    • 密度可达:若存在一个序列,且满足可由密度直达,则称可由密度可达
    • 密度相连: 若均由密度可达,则称与密度相连
  • DBSCAN算法就是要找到所有密度相连的点,构成一个类DBSCAN算法可以对任意形状的点进行聚类,这是基于原型的聚类无法达到的。
#  INPUT: 样本集D={x_1,x_2,...,x_m} 参数 epsilon MinPts
初始化核心对象集合: Omega为空集
for j in range(m):
  确定样本x_j的epsilon域中包含的点个数
  若个数大于MinPts,那么将x_j加入到Omega中去
初始化聚类簇个数:k=0
初始化为访问样本集合: Gamma=D
while Omega != None:
  记录当前为访问样本集合: Gamma_old = Gamma
  随机选取一个核心对象o,初始化队列 Q=
  Gamma = Gamma \ {o}
  while Q != None:
    取出队列Q中的首个样本q;
    如果q是核心对象,对应的集合为N
      令Delta = N与Gamma的交集
      将Delta中的样本加入到队列Q
      Gamma = Gamma\{Delta}
k = k+1,生成聚类簇 C_k = Gamma_old \ Gamma
Omega = Omega \ {C_k}

基于原型的聚类

Kmeans算法

基本想法是不断迭代更新中心点,直至中心点不变为止

  • 优点是原理简单,但是却对于聚类的形状有一定限制,而且需要人为确定参数k

学习向量量化(Learning Vector Quantization)算法

基本思想是随机选取样本,找到与之最近的样本,看类别是否一致来对原型向量进行更新

LVQ算法伪代码

最核心的点在于:对于找到距离最近的原型向量,如果对应的标记,为原型向量的label,则采用更新上图中的更新公式,此时得到的与之间的距离为:

因此,更新之后更加接近于,倘若对应标签不等,则会更加原理.

基于模型的聚类-Mixture of Gaussian

  • 基本概念:
    • 多元高斯分布: 为n维均值向量,为协方差阵
    • 混合高斯分布:

      满足
    • 假设为高斯混合分布产生的数据,随机变量表示生成样本的混合成分,则,根据Bayes公式,有

      上式表述了样本由第i个高斯混合成分生成的后验概率,记作 。
      Gaussian混合聚类将样本分为k类,每个样本的标记
      如果想要求解模型参数,可采用极大似然法

      由可以得到:


      对于混合系数,采用Lagrange乘子法, ,对于求导,最终得到

伪代码

Gaussian of Mixture Clustering

基于层次的聚类

基本思想是自底而上或自顶而下的策略,如AGNES首先将每个点作为一个类簇,然后在算法中运行每一步找到距离最近的两个聚类簇进行合并,直至达到预设的聚类簇个数

层次聚类算法

参考自 周志华 《机器学习》

你可能感兴趣的:(聚类算法综述)