【文本聚类】一篇文章弄懂三种聚类算法(K-Means,Agglomerative,DBSCAN)

 

概述

常用的聚类方法

核心思想常见算法
划分聚类将给定的数据集,采用分裂法划分为K个类K-Means, CLARANS
层级聚类根据数据点之间的相似度创建一颗有层次的树Agglomerative(聚合), Divisive(分裂)
密度聚类当一片区域内的数据点的密度大于某个阀值,则认为它们是一类DBSCAN, OPTICS

常用的距离函数(理解)

欧式距离即自然距离
余弦距离余弦相似度,是通过计算两个向量的夹角余弦值来评估他们的相似度
编辑距离即码距,两个字符串至少需要多少次的处理才能将一个字符串变成另一个字符串
海明距离两个等长字符串对应位置的不同字符的个数
皮尔逊距离度量两个变量之间的差异性
杰卡德距离度量两个集合之间的差异性

常用的距离函数(速查)

欧式距离euclidean
标准化欧式距离seuclidean
曼哈顿距离manhattan
切比雪夫距离chebyshev
闵可夫斯基距离minkowski
带权重的闵可夫斯基距离wminkowski
马氏距离mahalanobis

 
 
 

K-Means聚类

算法流程

  1. 随机选出(或人工选出)k个初始中心数据点——即k个类
  2. 剩下的数据点根据距离大小划分到距离最近的类中
  3. 根据聚类结果,重新选出k个类各自的中心(质心
  4. 根据新的质心再次分类(划分的聚类结果可能有所变化)
  5. 不断重复上述过程,直到聚类结果不再发生变化
    在这里插入图片描述

评价

  • :算法简单,容易实现(至少相比于其他聚类算法确实算是简单…)
  • :在大规模数据集上收敛较慢;在不断取平均值找新的质心的过程中,受孤立点的影响较大

改进

  • 每次找的质心,不一定是数据点——这对于有些任务来说是不符合要求的。基于K-Means算法改进出的 K-medoids算法 可以保证每一步计算的质心都是数据点
  • 但是K-medoids算法的时间复杂度仍旧非常高。为了适应大规模数据集,后续又提出了 CLARANS算法

 
 
 

Agglomerative聚类

算法流程

  1. 现将数据集的每个点看作一类,得到N类(有点并差集的意味,体会一下)
  2. 距离最近的两个类合并成一类——删除两个旧类,生成一个新类
  3. 重复进行第2步,最终全部合并为一个类——一棵聚类树就生成了!

在这里插入图片描述

评价

  • :得到了一整棵聚类树之后,想要分多少类,都能直接根据树的结构得到结果
  • :计算量较大,因为每次都要计算多个“两个类之间的距离”

补充

  • 聚类树自下向上聚合 —— Agglomerative
  • 聚类树自上向下分裂 —— Divisive

 
 
 

DBSCAN聚类

名称解释:Density-Based Spatial Clustering of Applications with Noise,基于密度的聚类算法

算法流程

  1. 对于每个数据点,做以Eps为半径的圆
  2. 如果圆内的点的个数高于阈值MinPts,则称该点为高密度的点,或者核心点
  3. 如果圆内的点的个数少于阈值MinPts,则称该点为低密度的点,或者离群点
  4. 对于核心点的圈,圈内的点连成链路,即为一类;对于离群点,不去理会

评价

  • :能分辨噪声;速度较快,可用于大规模数据集;Eps和MinPts固定后,聚类结果也稳定下来
  • :数据点的密度特性不是很好时,DBSCAN聚类的效果也一般

 
 
 

聚类效果的评估

兰德指数(Rand Index, RI) [ 0 , 1 ] [0, 1] [0,1]
调节的兰德指数(Adjusted Rand Index, ARI) [ − 1 , 1 ] [-1, 1] [1,1]
轮廓系数(Silhouette Coefficient, SC) [ − 1 , 1 ] [-1, 1] [1,1]

注:

  • 兰德指数RI(包括ARI)在评估时需要知道真实的分类标签
  • 轮廓系数在评估时不需要正确的标签

 
 
 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值