K-Means算法和DBSCAN算法

文章目录

一、聚类

聚类是根据在数据中发现的描述对象及其关系的信息,将数据对象分簇。其目的是使簇内的对象相互之间是相似的(相关的),而不同簇中的对象是不同的(不相关的)。簇内相似性越大,簇间差距越大,说明聚类效果越好。
聚类是一种无监督学习的方法,是许多领域中常用的机器学习技术。其难点在于如何评估和调参。

二、K-Means算法

1、基本概念

  • 要得到簇的个数,需要指定K K K值
  • 质心:均值,即向量各维取平均即可
  • 距离的度量:常用欧几里得距离和余弦相似度(先标准化)
  • 优化目标:min ⁡ ∑ i = 1 K ∑ x ∈ C i d i s t ( c i , x ) 2 \min\displaystyle\sum_{i=1}^K\displaystyle\sum_{x\in C_i}dist(c_i,x)^2 min i =1 ∑K ​x ∈C i ​∑​d i s t (c i ​,x )2

2、工作流程

(1)数据预处理:主要是标准化、异常点过滤。
(2)设置参数K K K,其含义是将数据集聚合成K K K类。
(3)随机选取K K K个质心,记为μ 1 ( 0 ) , μ 2 ( 0 ) , ⋯ , μ K ( 0 ) \mu_1^{(0)},\mu_2^{(0)},\cdots,\mu_K^{(0)}μ1 (0 )​,μ2 (0 )​,⋯,μK (0 )​。
(4)定义损失函数:J ( c , μ ) = min ⁡ ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 (1) J(c,\mu)=\min\sum_{i=1}^M||x_i-\mu_{c_i}||^2\tag{1}J (c ,μ)=min i =1 ∑M ​∣∣x i ​−μc i ​​∣∣2 (1 )(5)重复下述过程,直到J J J收敛:
(5.1)对于每一个样本x i x_i x i ​,将其分配到距离最近的质心,即:x i ∈ arg min ⁡ k ∣ ∣ x i − μ k ( t ) ∣ ∣ (2) x_i\in\argmin_k||x_i-\mu_k^{(t)}||\tag{2}x i ​∈k a r g m i n ​∣∣x i ​−μk (t )​∣∣(2 )(5.2)对于每一个类质心μ k \mu_{k}μk ​,重新计算该类的质心,即:μ k ( t + 1 ) = 1 ∣ C k ∣ ∑ x ∈ C k x (3) \mu_k^{(t+1)}=\frac{1}{|C_k|}\sum_{x\in C_k}x\tag{3}μk (t +1 )​=∣C k ​∣1 ​x ∈C k ​∑​x (3 )

3、优缺点

优点:简单快速,适合常规数据集
缺点:
① K K K值难确定;② 受初始值影响较大;③ 复杂度与样本规模呈线性关系;④ 很难发现任意形状的簇。

三、DBSCAN算法

1、基本概念

DBSCAN全名为Density-Based Spatial Clustering of Applications with Noise。

  • 核心对象:若某个点的密度达到算法设定的阈值则其为核心点(即r r r邻域内点的数量不小于m i n P t s minPts m i n P t s)
  • ε \varepsilon ε-邻域的距离阈值:设定的半径r r r
  • 直接密度可达:若某点p p p在点q q q的r r r邻域内,且q q q是核心点,则p − q p-q p −q直接密度可达
  • 密度可达:若有一个点的序列q 0 q_0 q 0 ​、q 1 q_1 q 1 ​、⋯ \cdots ⋯、q k q_k q k ​,对任意q i − q i − 1 q_i-q_{i-1}q i ​−q i −1 ​是直接密度可达的,则称从q 0 q_0 q 0 ​到q k q_k q k ​密度可达,这实际上是直接密度可达的”传播”
  • 密度相连:若从某核心点p p p出发,点q q q和点k k k都是密度可达的,则称点q q q和点k k k是密度相连的
  • 边界点:属于某一个类的非核心点,不能往下发展了
  • 噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的
    如图1所示,点A为核心对象,B和C为边界点,N是离群点。
    K-Means算法和DBSCAN算法

图1 DBSCAN算法划分点集示意图

; 2、工作流程

准备数据集(参数D),输入指定半径(参数r r r)和密度阈值(M i n P t s MinPts M i n P t s)。其伪代码如下所示:

标记所有对象为unvisited;
Do
随机选择一个unvisited对象p;
标记p为visited;
If p的r-邻域至少有MinPts个对象
    创建一个新簇C,并把p添加到C;
    令N为p的r-邻域中的对象集合;
    For N中每一个点p'
        If p'是unvisited;
            标记p'为visited;
            If p'的r-邻域至少有MinPts个对象
                把这些对象添加到N中;
            If p'还不是任何簇的成员
                把p'添加到C;
    End for;
    输出C;
Else
    标记p为噪声点;
Until 没有标记为unvisited的对象;

3、参数选择

  • 半径r r r,可以根据K K K距离来设定,找突变点。
    K K K距离:给定数据集P = { p ( i ) ; i = 0 , 1 , ⋯ , n } P={p(i); i=0,1,\cdots,n}P ={p (i );i =0 ,1 ,⋯,n },计算点p ( i ) p(i)p (i )到集合D D D的子集S S S中所有点之间的距离,距离按照从小到大的顺序排序,d ( k ) d(k)d (k )就被称为K K K距离。
  • M i n P t s MinPts M i n P t s:K K K距离中K K K的值,一般取的小一些,多次尝试。

4、优缺点

优点:
① 不需要指定簇个数;② 可以发现任意形状的簇;③ 擅长找到离群点(检测任务);④ 只需要设置两个参数(半径r r r和距离阈值M i n P t s MinPts M i n P t s)。
缺点:
① 高维数据聚类有些困难(可以做降维);② 参数难以选择(参数对结果的影响非常大);③ Sklearn中效率很慢(数据削减策略)。

四、可视化展示

1、K-Means算法

K-Means算法和DBSCAN算法

; 2、DBSCAN算法

K-Means算法和DBSCAN算法

五、参考文献

[1] 唐宇迪. 跟着迪哥学Python数据分析与机器学习实战[M]. 北京: 人民邮电出版社, 2019: 346-363.

Original: https://blog.csdn.net/weixin_43821559/article/details/122845540
Author: 心️升明月
Title: K-Means算法和DBSCAN算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/550938/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球