介绍

聚类算法对大量未标注数据,按照数据的内在相似性将数据集划分为多个类别,一种无监督算法。
/N个对象,K个簇,K<=NK<=N

五个类型

  • 基于分层的聚类(hierarcal methods)
    思想:对数据集进行逐层,直到某条件满足为止。
    自下而上的分裂型和合并型
    代表:BIRCH、CURE、CHAMELEON

  • 基于划分的聚类 (partitioning methods)
    思想:给定K值,给出一个初始分组方法,然后反复迭代改变分组
    标准:同一分组的记录越近越好,不同分组的记录越远越好
    代表:k=-means, k-medoids、CLARANS

  • 基于密度的聚类(density-based methods)
    思想:不是基于距离,而是基于密度,克服距离算法只能发现“类圆形”的缺点。只要一个区域的点的密度大于某个阈值,就把它加到与之相近的聚类中。
    代表:DBSCAN、OPTICS、DENCLUE

  • 基于网格的聚类(grid-based methods)
    思想:把数据空间划分为有限个单元的网格结构,所有处理都以单个单元为对象。
    优点:处理速度很快,只与有多少个单元有关
    代表:STING、CLIQUE、WaveCluster

  • 基于模型的聚类(model-based methods)
    思想:给每个聚类假定一个模型,去找能够满足这个模型的数据集。
    潜在假设:目标数据集是由一系列的概率分布所决定
    两个尝试方案:统计方法和神经网络

相似度、距离计算

1. 距离

在n维空间中,由两个向量X=(x1,x2,..,xn)TX=(x_1,x_2,..,x_n)^TY=(y1,y2,..,yn)TY=(y_1,y_2,..,y_n)^T,它们之间的距离反映两者的相似度,一般采用LpL_p距离

dist(X,Y)=(i=1nxiyiP)1pdist(X,Y) = (\sum_{i=1}^{n} |x_i - y_i|^P)^{\frac{1}{p}}

p1p\ge1,我们称其为闵可夫斯基距离(Minkowski)距离

  • p=1,曼哈顿距离
    【机器学习】【聚类】
  • p=2,欧几里得距离
    【机器学习】【聚类】
  • p=+p=+\infty,最大值距离
    【机器学习】【聚类】

2.相似度

【机器学习】【聚类】

额外知识

【机器学习】【聚类】

  • 余弦相似度的细节公式:
    【机器学习】【聚类】
  • pearson系数
    【机器学习】【聚类】
    相关系数就是把向量各自平移到原点后的夹角余弦

K-means算法

原理

每一次迭代都确定K个类别中心,将数据点归到与之距离最近的中心点所在的簇,将类别中心更新为它的簇中所有样本的均值,反复迭代,直到类别中心不再变化或小于某个阈值

存在的基本假设:
我们认为可以选到一个中心点,使得cluster中所有点到该点的距离小于到其他cluster中心的距离。但是现实可能存在一些问题本身不可分,例如两个分布有重叠的部分,通常我们会选左边的分布,即使左右两边概率相等。

计算步骤

  1. 选择初始K个类别中心μk\mu_k,选取方法可以针对具体问题或者采用随机方法,初始值对收敛到全局最优解有很大关系,通常我们会试多个K值。
  2. 对于每个样本x,找到距离最近的cluster中心,标记为此类别
    【机器学习】【聚类】
  3. 将类别中心更新为所有样本均值
    【机器学习】【聚类】
  4. 重复2、3步骤,直到类别中心变化小于某阈值,或者达到最大迭代次数

优缺点

优点

  • 简单、快速、经典
  • 处理大数据集时,保持可伸缩性和高效率
  • 当簇近似高斯分布时,它的效果较好

缺点

  • 簇的平均值可被定义才能使用,不适合某些应用
  • 必须事先定K值,对初值敏感
  • 只能发现球状cluster,不适合非凸形状的簇,或者大小差别很大的簇
  • 对噪声和孤立点数据敏感,导致均值偏离严重(K-mediods改善这个问题,修改均值为中位数)

DBSCAN算法

此为密度聚类方法,为了克服基于距离算法只能发现凸的聚类的缺点,可以发现任意形状聚类,且对噪声数据不敏感。只要样本点密度大于某个阈值,可以把样本添加到最近的簇中。
但是计算复杂度较大,需要建立空间索引来降低计算量。

一些概念

  • 全名:Density-Based Spatial Clustering of Applications with Noise
  • 对象的 ε\varepsilon领域:给定对象在半径ε\varepsilon内的区域
  • 核心对象:给定数目m,若一个对象的领域至少包含m个对象,则称为该该对象的核心对象
  • 直接密度可达:一个对象集合D,如果p时在q的ε\varepsilon领域内,而q是一个核心对象,可以说对象p从对象q出发时直接密度可达。直观的说就是两个cluster重叠了
  • 密度可达:一条对象链,有一个对象p是从对象q和m密度可达的,衔接过去。
  • 密度相连:对象集合D中存在一个对象O,使得对p和q是从O关于ε\varepsilon和m密度可达的,那么对象p和q关于ε\varepsilon和m密度相连
  • 噪声,不包含在任何簇中的对象
  • 簇:最大的密度相连对象的集合

算法步骤

【机器学习】【聚类】

  1. 随机选择一个点A,设置ε\varepsilon区域为半径区域,对象个数m为4,A点的区域有4个,所以A作为核心对象创建新簇,其他点标记为边缘点。
  2. 在边缘点上选取一个重复上面的步骤,寻找并合并核心对象直接密度可达的对象。反复上面过程,直到没有新的点可以更新簇,算法结束。形成以A为初始的一个簇,包括红点和黄点。
  3. 如果发现还有一些数据点未处理,再次产生一个类别来重启这个算法,遍历所有数据,若此点不是边缘点也不是中心点,标记为噪音。

优缺点

优点

  • 无需确定聚类个数
  • 可以发现任何形状的聚类
  • 对噪声有鲁棒性,可有效处理噪声
  • 只需要两个参数,对数据输入顺序不敏感
  • 加快区查询
  • 参数可由领域专家设置

缺点

  • 边界点不完全确定性
  • 维度灾难导致Euclidean距离度量失效
  • 不能处理密度差异过大(密度不均匀)的聚类
  • 参数选择在数据与规模不能很好理解的情况下,很难选择,选取不当容易导致聚类质量下降

密度最大值聚类DPCA

克服DBSCAN中不同类的密度差别大,领域范围难以设定的问题。
Density Peaks Clustering Algorithm基于一种假设:对于数据集,聚类中心被一些低局部密度的数据点包围,而这些点距离其他由高局部密度的点的距离都比较大

概念

  • 局部密度
    【机器学习】【聚类】
    dcd_c为截断距离,pip_i就是离对象ii的距离小于dcd_c的对象个数

  • 高局部密度点距离
    【机器学习】【聚类】
    局部密度高于对象ii的所有对象中,到对象ii的最近距离

聚类过程

  1. 计算每一个点的局部密度
  2. 对每一个点ii计算在局部密度高于对象ii的所有对象中,到对象ii的最近距离
  3. 对每一个点,绘制局部密度与高局部密度点距离的关系散点图
    【机器学习】【聚类】
  4. 图中异常点为簇中心,1和10的局部密度和高局部密度距离都很大,将其作为中心
  5. 将其他的点分配给距离其最近的有着更高的局部密度的簇
  6. 26、27、28的高局部密度点距离比较大,但局部密度比较小,所以是异常点。
    【机器学习】【聚类】

计算关键点

那些有着⽐较⼤的局部密度ρi 和很⼤的⾼局部密度δi的点被认为是簇的中⼼; ⽽⾼局部
密度距离δi较⼤但局部密度ρi 较⼩的点是异常点;

对于那些在决策图中⽆法⽤⾁眼判断出聚类中⼼的情形,给出了⼀种确定聚类中⼼个数的提醒:计算⼀个将ρ值和δ值综合考虑的量:
γi=ρiδi\gamma_i = \rho_i \delta_i

显然γ值越⼤,越有可能是聚类中⼼。

  • ⼀种推荐做法是选择dcd_c,使得平均每个点的邻居数为所有点的1%~2%。

相关文章: