[机器学习算法]聚类学习

简介

在无监督学习中unsupervised learning中,训练样本的标记信息是未知的,其目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。而此类学习任务中应用最广、研究最多的即聚类clustering
以通俗的语言讲解,聚类学习将数据集中的样本分成若干个互不相交的子集(称为簇cluster)。保持簇内差异尽可能小而簇间差异尽可能大我们就可以将每个簇映射到一些潜在的类别。

需要注意的是,划分的类别对于聚类而言事先是位置的,聚类过程仅能将数据集自动划分为不同的簇,但每个簇对应的概念语义是需要使用者自己来把握和命名。

[机器学习算法]聚类学习
聚类学习

数学描述

照旧我们以数学语言描述聚类学习,假定样本集[机器学习算法]聚类学习包含[机器学习算法]聚类学习个无标记样本,每个样本[机器学习算法]聚类学习是一个[机器学习算法]聚类学习维特征向量,则聚类算法将样本[机器学习算法]聚类学习划分为[机器学习算法]聚类学习个不相交的簇[机器学习算法]聚类学习。我们用[机器学习算法]聚类学习表示样本[机器学习算法]聚类学习的簇标记cluster label,则聚类结果可用包含[机器学习算法]聚类学习个元素的簇标记向量[机器学习算法]聚类学习表示。

性能度量

从本质上讲,我们希望聚类形成簇内方差尽可能小而簇间方差尽可能大的分类结果,即相同类别的元素尽可能相似而归属不同类别的元素尽可能不同。

对数据集[机器学习算法]聚类学习,假定通过聚类给出的簇划分为[机器学习算法]聚类学习,定义:

[机器学习算法]聚类学习
其中[机器学习算法]聚类学习衡量两个样本之间的距离,[机器学习算法]聚类学习表示簇[机器学习算法]聚类学习的中心点,[机器学习算法]聚类学习表示簇[机器学习算法]聚类学习内样本间的平均距离,[机器学习算法]聚类学习表示簇[机器学习算法]聚类学习内样本间的最远距离,[机器学习算法]聚类学习表示两个簇最近样本间的距离,[机器学习算法]聚类学习表示两个簇中心点间的距离。
基于这些指标,我们常用下面的聚类性能度量聚类效果:

  • DB指数Davies-Bouldin Index:值越小表示聚类效果越好
    [机器学习算法]聚类学习
  • Dunn指数Dunn Index:值越大表示聚类效果越好
    [机器学习算法]聚类学习
    给定样本[机器学习算法]聚类学习[机器学习算法]聚类学习,度量两个样本点间距离[机器学习算法]聚类学习的方法有很多种,最常用的就是“闵可夫斯基距离”Minkowski distance
    [机器学习算法]聚类学习

[机器学习算法]聚类学习时,闵可夫斯基距离等价于欧式距离Euclidean distance[机器学习算法]聚类学习时,闵可夫斯基距离等价于曼哈顿距离Manhattan distance

k均值算法

给定样本集[机器学习算法]聚类学习k-means最小化聚类所得簇划分[机器学习算法]聚类学习的平方误差:
[机器学习算法]聚类学习
最小化上式需要遍历样本集[机器学习算法]聚类学习中所有可能的簇划分,这本身就是一个NP难的问题,因此k-means算法采取了贪心策略,通过迭代优化来近似求解。
输入:样本集[机器学习算法]聚类学习,聚类簇数[机器学习算法]聚类学习
输出:最优的簇划分[机器学习算法]聚类学习

  1. [机器学习算法]聚类学习中随机抽取[机器学习算法]聚类学习个样本作为初始均值向量[机器学习算法]聚类学习
  2. 遍历[机器学习算法]聚类学习中的每个样本[机器学习算法]聚类学习,计算它与各均值向量[机器学习算法]聚类学习的距离:[机器学习算法]聚类学习,将样本划入离它最近的簇中:[机器学习算法]聚类学习,对应的簇更新为[机器学习算法]聚类学习
  3. [机器学习算法]聚类学习个簇重新计算均值向量:[机器学习算法]聚类学习,更新均值向量
  4. 重复1-3步骤直至均值向量不再更新

高斯混合聚类

1.多元高斯分布

先回顾以下多元高斯分布的概率密度函数:
[机器学习算法]聚类学习
其中[机器学习算法]聚类学习是均值向量,[机器学习算法]聚类学习[机器学习算法]聚类学习的协方差矩阵,高斯分布完全由均值向量[机器学习算法]聚类学习和协方差矩阵[机器学习算法]聚类学习这俩参数确定,因此我们可将其记为[机器学习算法]聚类学习

2.高斯混合分布

基于多元高斯分布的概念,我们可定义高斯混合分布:
[机器学习算法]聚类学习
该分布共由[机器学习算法]聚类学习个混合分布组成,每个混合成分对应一个高斯分布,而[机器学习算法]聚类学习为相应的混合系数mixture coefficient,且满足[机器学习算法]聚类学习

3.高斯混合聚类原理

假设样本的生成过程由高斯混合分布给出:首先根据[机器学习算法]聚类学习定义先验分布选择高斯混合成分,然后根据被选择的混合成份的概率密度函数进行采样,从而生成相应的样本。
给定训练集[机器学习算法]聚类学习由上述过程生成,令随机变量[机器学习算法]聚类学习表示生成样本[机器学习算法]聚类学习的高斯混合成分,其取值未知。根据贝叶斯定理,可以计算[机器学习算法]聚类学习的后验分布为:
[机器学习算法]聚类学习
[机器学习算法]聚类学习给定了样本[机器学习算法]聚类学习由第[机器学习算法]聚类学习个高斯混合成分生成的后验概率,我们将其记为[机器学习算法]聚类学习,高斯混合聚类将样本集[机器学习算法]聚类学习划分为[机器学习算法]聚类学习个簇[机器学习算法]聚类学习,每个样本[机器学习算法]聚类学习的簇标记[机器学习算法]聚类学习确定如下:
[机器学习算法]聚类学习

4.高斯混合聚类算法

输入:样本集[机器学习算法]聚类学习;高斯混合成分个数[机器学习算法]聚类学习
输出:簇划分[机器学习算法]聚类学习

  1. 初始化高斯混合分布参数[机器学习算法]聚类学习
  2. 计算[机器学习算法]聚类学习由高斯各混合部分生成的后验概率,即[机器学习算法]聚类学习
  3. 计算新均值向量[机器学习算法]聚类学习,计算新协方差矩阵[机器学习算法]聚类学习,计算新混合系数[机器学习算法]聚类学习,并更新对应的三个模型参数
  4. 重复进行2-3步骤直至满足停止条件(EM算法达到最大迭代次数或者似然函数增长很少)
  5. 根据[机器学习算法]聚类学习将样本[机器学习算法]聚类学习划到对应的簇中,即[机器学习算法]聚类学习

密度聚类DBSCAN

密度聚类density-based clustering假设聚类结构能通过样本分布的紧密程度确定,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

1.密度聚类的相关概念

给定数据集[机器学习算法]聚类学习,有如下概念:

  • [机器学习算法]聚类学习邻域:[机器学习算法]聚类学习,即样本集中与[机器学习算法]聚类学习距离不超过[机器学习算法]聚类学习的样本集合
  • 核心对象core object:若[机器学习算法]聚类学习[机器学习算法]聚类学习邻域内至少包含[机器学习算法]聚类学习个样本,则它是一个核心对象
  • 密度直达directly density-reachable:若[机器学习算法]聚类学习位于[机器学习算法]聚类学习[机器学习算法]聚类学习邻域中,且[机器学习算法]聚类学习是核心对象,则称[机器学习算法]聚类学习[机器学习算法]聚类学习密度直达
  • 密度可达density-reachable:对[机器学习算法]聚类学习[机器学习算法]聚类学习,若存在样本序列[机器学习算法]聚类学习,其中[机器学习算法]聚类学习[机器学习算法]聚类学习[机器学习算法]聚类学习密度直达,则称[机器学习算法]聚类学习[机器学习算法]聚类学习密度可达
  • 密度相连density-connect:对[机器学习算法]聚类学习[机器学习算法]聚类学习,如果存在[机器学习算法]聚类学习使得[机器学习算法]聚类学习[机器学习算法]聚类学习均由[机器学习算法]聚类学习密度可达,则称[机器学习算法]聚类学习[机器学习算法]聚类学习密度相连

下图给出了密度聚类相关概念的直观展示:


[机器学习算法]聚类学习
密度聚类概念

[机器学习算法]聚类学习的情况下,虚线表示[机器学习算法]聚类学习邻域,[机器学习算法]聚类学习是核心对象,[机器学习算法]聚类学习[机器学习算法]聚类学习密度直达,[机器学习算法]聚类学习[机器学习算法]聚类学习密度可达,[机器学习算法]聚类学习[机器学习算法]聚类学习密度相连。

2.密度聚类原理

基于上述的概念,密度聚类将“簇”定义为:由密度可达关系导出的最大密度相连样本集合。从数学角度上讲,即给定邻域参数[机器学习算法]聚类学习,簇[机器学习算法]聚类学习是满足以下性质的非空样本子集:

  • 连接性connectivity[机器学习算法]聚类学习
  • 最大型maximality[机器学习算法]聚类学习

不难证明,若[机器学习算法]聚类学习为核心对象,则由其密度可达的所有样本组成的集合记为[机器学习算法]聚类学习满足连接性与最大性。

3.密度聚类算法

输入:样本集[机器学习算法]聚类学习;邻域参数[机器学习算法]聚类学习
输出:簇划分[机器学习算法]聚类学习

  1. 遍历所有样本,如果样本[机器学习算法]聚类学习[机器学习算法]聚类学习邻域满足[机器学习算法]聚类学习,那么将其加入核心对象集合[机器学习算法]聚类学习
  2. 随机抽取一个核心对象[机器学习算法]聚类学习,遍历该核心对象[机器学习算法]聚类学习邻域内的所有样本点[机器学习算法]聚类学习(包括它自身),如果该样本也是核心对象,则[机器学习算法]聚类学习
  3. 对于2步骤中的核心对象,继续搜寻其[机器学习算法]聚类学习邻域内的所有样本点,更新[机器学习算法]聚类学习,生成聚类簇[机器学习算法]聚类学习
  4. 继续随机抽取一个核心对象生成聚类簇,重复2-3步骤,直至所有核心对象均被访问过为止。

直观展示如下:


[机器学习算法]聚类学习
密度聚类

层次聚类

层次聚类hierarchical clustering试图在不同层次上对数据集进行划分,从而形成树形的聚类结构,数据集的划分既可以采用“自底向上”的聚合策略,也可以采用“自顶向下”的分拆策略。

AGNES是一种自底向上聚合策略的层次聚类算法,它先将数据集中每个样本看成一个初始聚类簇,然后在算法运行的每一步中找到最近的两个聚类簇进行合并,该过程不断重复直至达到预设的聚类簇个数,关键在于如何计算连个聚类簇之间的距离。

1.计算距离的方式

最小距离:[机器学习算法]聚类学习
最大距离:[机器学习算法]聚类学习
平均距离::[机器学习算法]聚类学习
当聚类簇距离分别由[机器学习算法]聚类学习[机器学习算法]聚类学习[机器学习算法]聚类学习计算时,AGNES算法被相应地成为“单链接”single-linkage、“全链接”complete-linkage或“均链接”average-linkage算法。

2.算法

输入:样本集[机器学习算法]聚类学习;聚类簇距离度量函数[机器学习算法]聚类学习;聚类簇数[机器学习算法]聚类学习
输出:簇划分[机器学习算法]聚类学习

  1. 每个样本最为单独一类,[机器学习算法]聚类学习
  2. 计算任意两个样本簇间的距离:[机器学习算法]聚类学习
  3. 找到距离最近的两个聚类簇[机器学习算法]聚类学习[机器学习算法]聚类学习,将其合并[机器学习算法]聚类学习,对于所有下标大于[机器学习算法]聚类学习的簇,将聚类簇[机器学习算法]聚类学习重编号为[机器学习算法]聚类学习
  4. 根据最新的簇更新一下第2步骤计算的簇间距离矩阵
  5. 重复2-4步骤直至当前聚类簇个数等于预设的聚类簇数[机器学习算法]聚类学习

3.树状图

AGNES算法执行到所有样本出现在同一个簇中,可得到如下的树状图:

[机器学习算法]聚类学习
层次聚类树状图

在树状图的特定层次上分割即可得到对应的簇划分结果,上图中虚线划分的位置将样本分为7个簇,理解一下背后的原理。

Reference

[1] 周志华 机器学习