K-Means聚类与DBSCAN的区别

一家之言,仅作分享,如有不合理或需要改进的地方,欢迎各位讨论。

前言

    聚类是无监督机器学习中的一种技术,它根据数据集中数据点可用信息的相似性将数据点分组到集群中。属于同一簇的数据点在某些方面彼此相似,而属于不同簇的数据项不同。

一、K-Means原理

    K-Means 是一种基于距离的聚类算法,将距离比较近的数据点看作相似的点,将它们归为一类。对于给定样本集,按照样本之间的距离大小,将样本集划分为 K K K个簇。目标是让簇内的点尽量连接在一起,而让簇间的距离尽量大。

K-Means流程:

输入 D D D — 数据集 { x 1 , x 2 , ⋯ , x m } \{x_1,x_2,\cdots,x_m\} {x1x2xm};
            K K K — 聚类的簇数 k k k ;
            N N N — 最大迭代次数;
输出 C C C — 输出簇划分集 { C 1 , C 2 , ⋯ , C k } \{C_1,C_2,\cdots,C_k\} {C1C2Ck};

  1. 从数据 D D D中随机选取 k k k个点作为初始聚类中心;
  2. 计算 D D D中剩余数据到这 k k k个聚类中心的距离,将它们划分给距离最近的簇;
  3. 重新计算每个簇的质心,将质心更新为该簇的聚类中心;
  4. 重复计算第2,3步,直到每个聚类不再发生变化;
  5. 输出最终 k k k个簇的集合。

K-Means优点:

  • 原理比较简单,实现也是很容易,收敛速度快。
  • 聚类效果较优。
  • 算法的可解释度比较强。
  • 主要需要调参的参数仅仅是簇数 k k k

K-Means缺点:

  • 参数 k k k值的选取不好把握。
  • 对于不是凸的数据集比较难收敛。
  • 如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
  • 采用迭代方法,得到的结果只是局部最优。
  • 对噪音和异常点比较的敏感。

二、DBSCAN原理

    DBSCAN是一种基于密度的聚类算法,可以通过样本分布的紧密程度决定,同一类别的样本之间是紧密相连的,不同样本是是分离的。它将特征空间中足够密集的点划分为同一个簇,簇的形状可以是任意的,而且数据点中有噪声点的话,不会将这些点划分给某个簇。

DBSCAN流程:

输入 D D D — 数据集 { x 1 , x 2 , ⋯ , x m } \{x_1,x_2,\cdots,x_m\} {x1x2xm};
            ϵ \epsilon ϵ — 邻域半径;
            M i n P t s MinPts MinPts — 邻域最小数据量阈值;
输出 C C C — 输出簇划分集 { C 1 , C 2 , ⋯ , C k } \{C_1,C_2,\cdots,C_k\} {C1C2Ck};

  1. 从数据 D D D中任选一个未被访问(unvisited)的点开始,找出与其距离在 ϵ \epsilon ϵ之内的所有附近点;
  2. 如果附近点的数量 ≥ M i n P t s \geq{MinPts} MinPts,则当前点与其附近点形成一个簇,对邻域内的点再次求解邻域,扩展与出发点密度可达的点为一个簇;
  3. 如果附近点的数量 < M i n P t s <{MinPts} <MinPts,则该点为边缘点,重新选择未被划分到簇的点,做第2步处理直到所有点被处理,剩余的点为噪声点。
  4. 输出最终簇的集合。

DBSCAN优点:

  • 可以对任意形状的稠密数据集进行聚类。
  • 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
  • 聚类结果没有偏倚,对初始值选取没有要求。

DBSCAN缺点:

  • 调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值 ϵ \epsilon ϵ,邻域样本数阈值 M i n P t s MinPts MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
  • 样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用 DBSCAN 算法一般不适合。
  • 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。

三、K-Means与DBSCAN的区别

  • K-Means是基于划分的聚类,DBSCAN是基于密度的聚类。
  • K-Means需要指定聚类簇数 k k k,并且且初始聚类中心对聚类影响很大。K-Means把任何点都归到了某一个类,对异常点比较敏感。DBSCAN能剔除噪声,需要指定邻域距离阈值 ϵ \epsilon ϵ和样本个数阈值 M i n P t s MinPts MinPts,可以自动确定簇个数。
  • K-Means可以发现不是明显分离的簇,即便簇有重叠也可以发现,但是DBSCAN会合并有重叠的簇。
  • K-Means很难处理非球形的簇和不同大小的簇。DBSCAN可以处理不同大小或形状的簇,并且不太受噪声和离群点的影响。当簇具有很不相同的密度时,两种算法的性能都很差。
  • K-Means只能用于具有明确定义的质心(比如均值或中位数)的数据。DBSCAN要求密度定义(基于传统的欧几里得密度概念)对于数据是有意义的。
  • K-Means算法的时间复杂度是 O ( n ) O(n) O(n),而DBSCAN的时间复杂度是 O ( n 2 ) O(n^2) O(n2)
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值