• 数据挖掘与分析课程笔记(Chapter 15)


    数据挖掘与分析课程笔记

    • 参考教材:Data Mining and Analysis : MOHAMMED J.ZAKI, WAGNER MEIRA JR.

    文章目录

    1. 数据挖掘与分析课程笔记(目录)
    2. 数据挖掘与分析课程笔记(Chapter 1)
    3. 数据挖掘与分析课程笔记(Chapter 2)
    4. 数据挖掘与分析课程笔记(Chapter 5)
    5. 数据挖掘与分析课程笔记(Chapter 7)
    6. 数据挖掘与分析课程笔记(Chapter 14)
    7. 数据挖掘与分析课程笔记(Chapter 15)
    8. 数据挖掘与分析课程笔记(Chapter 20)
    9. 数据挖掘与分析课程笔记(Chapter 21)


    Chapter 15:基于密度的聚类

    适用数据类型:非凸,又称非凸聚类;K-means 适用于凸数据

    15.1 DBSCAN 算法

    • 定义记号: ∀ x ∈ R d , N ϵ ( x ) : = { y ∈ R d ∣ δ ( x − y ) ≤ ϵ } \forall \mathbf{x}\in \mathbb{R}^d,N_{\epsilon}(\mathbf{x}):=\{\mathbf{y}\in \mathbb{R}^d|\delta(\mathbf{x}-\mathbf{y})\le\epsilon \} xRd,Nϵ(x):={yRdδ(xy)ϵ},其中 δ ( x − y ) = ∣ ∣ x − y ∣ ∣ \delta(\mathbf{x}-\mathbf{y})=||\mathbf{x}-\mathbf{y}|| δ(xy)=∣∣xy∣∣ 欧式距离,其他距离也可。 D ⊆ R d \mathbf{D}\subseteq \mathbb{R}^d DRd

    Def.1 m i n p t s ∈ N + minpts \in \mathbb{N}_+ minptsN+ 是用户定义的局部密度,如果 ∣ N ϵ ( x ) ∩ D ∣ ≥ m i n p t s |N_{\epsilon}(\mathbf{x})\cap\mathbf{D}|\ge minpts Nϵ(x)Dminpts ,则称 x \mathbf{x} x D \mathbf{D} D 核心点;如果 ∣ N ϵ ( x ) ∩ D ∣ < m i n p t s |N_{\epsilon}(\mathbf{x})\cap\mathbf{D}|< minpts Nϵ(x)D<minpts ,且 x ∈ N ϵ ( z ) \mathbf{x}\in N_{\epsilon}(\mathbf{z}) xNϵ(z) ,其中 z \mathbf{z} z D \mathbf{D} D 的核心点,则称 x \mathbf{x} x D \mathbf{D} D 的边缘点;如果 x \mathbf{x} x 既不是核心点又不是边缘点,则称 x \mathbf{x} x D \mathbf{D} D 的噪点。

    Def.2 如果 x ∈ N ϵ ( y ) \mathbf{x}\in N_{\epsilon}(\mathbf{y}) xNϵ(y) y \mathbf{y} y 是核心点,则称 x \mathbf{x} x y \mathbf{y} y 是直接密度可达的。如果存在点列 x 0 , x 1 , ⋯   , x l \mathbf{x}_0,\mathbf{x}_1,\cdots,\mathbf{x}_l x0,x1,,xl,使得 x 0 = x , x l = y \mathbf{x}_0=\mathbf{x},\mathbf{x}_l=\mathbf{y} x0=x,xl=y,且 x i \mathbf{x}_{i} xi x i − 1 \mathbf{x}_{i-1} xi1 是直接密度可达,则称 x \mathbf{x} x y \mathbf{y} y 是密度可达。

    Def.3 如果存在 z ∈ D \mathbf{z}\in \mathbf{D} zD,使得 x \mathbf{x} x y \mathbf{y} y z \mathbf{z} z 都是密度可达的,称 x \mathbf{x} x y \mathbf{y} y 是密度连通的。

    Def.4 基于密度的聚类是指基数最大的密度连通集(即集合内任意两点都是密度连通)。

    算法15.1 : DBSCAN ( O ( n 2 ) O(n^2) O(n2))

    输入: D , ϵ , m i n p t s \mathbf{D}, \epsilon, minpts D,ϵ,minpts

    输出: C , C o r e , B o r d e r , N o i s e \mathcal{C},Core,Border,Noise C,Core,Border,Noise

    1. C o r e ← ∅ Core \leftarrow \emptyset Core

    2. 对每一个 x i ∈ D \mathbf{x}_i\in \mathbf{D} xiD

      2.1 计算 N ϵ ( x i ) ( ⊆ D ) N_\epsilon(\mathbf{x}_i)(\subseteq \mathbf{D}) Nϵ(xi)(D)

      2.2 i d ( x i ) ← ∅ id(\mathbf{x}_i)\leftarrow \emptyset id(xi)

      2.3 如果 N ϵ ( x i ) ≥ m i n p t s N_\epsilon(\mathbf{x}_i)\ge minpts Nϵ(xi)minpts,则 C o r e ← C o r e ∪ { x i } Core\leftarrow Core \cup \{ \mathbf{x}_i\} CoreCore{xi}

    3. k ← 0 k\leftarrow 0 k0

    4. 对每一个 x i ∈ C o r e , s . t . i d ( x i ) = ∅ \mathbf{x}_i\in Core, s.t.id(\mathbf{x}_i)= \emptyset xiCore,s.t.id(xi)=,执行

      4.1 k ← k + 1 k\leftarrow k+1 kk+1

      4.2 i d ( x i ) ← k id(\mathbf{x}_i)\leftarrow k id(xi)k

      4.3 D e n s i t y C o n n e c t e d ( x i , k ) Density Connected (\mathbf{x}_i,k) DensityConnected(xi,k)

    5. C ← { C i } i = 1 k \mathcal{C}\leftarrow \{ C_i\}_{i=1}^k C{Ci}i=1k,其中 C i ← { x i ∈ D ∣ i d ( x i ) = i } C_i\leftarrow \{\mathbf{x}_i \in \mathbf{D} |id(\mathbf{x}_i)=i\} Ci{xiDid(xi)=i}

    6. N o i s e ← { x i ∈ D ∣ i d ( x i ) = ∅ } Noise \leftarrow \{\mathbf{x}_i \in \mathbf{D} |id(\mathbf{x}_i)=\emptyset\} Noise{xiDid(xi)=}

    7. B o r d e r ← D ∖ { C o r e ∪ N o i s e } Border\leftarrow \mathbf{D}\setminus \{Core\cup Noise \} BorderD{CoreNoise}

    8. return C , C o r e , B o r d e r , N o i s e \mathcal{C},Core,Border,Noise C,Core,Border,Noise

    D e n s i t y C o n n e c t e d ( x i , k ) Density Connected (\mathbf{x}_i,k) DensityConnected(xi,k)

    1. 对于每一个 y ∈ N ϵ ( x ) ∖ x \mathbf{y} \in N_\epsilon(\mathbf{x}) \setminus {\mathbf{x}} yNϵ(x)x

      1.1 i d ( y ) ← k id(\mathbf{y})\leftarrow k id(y)k

      1.2 如果 y ∈ C o r e \mathbf{y}\in Core yCore,则 D e n s i t y C o n n e c t e d ( y , k ) Density Connected (\mathbf{y},k) DensityConnected(y,k)

    Remark:DBSCAN 对 ε \varepsilon ε 敏感: ε \varepsilon ε 过小,稀疏的类可能被认作噪点; ε \varepsilon ε 过大,稠密的类可能无法区分。

    15.2 密度估计函数(DEF)

    ∀ z ∈ R d \forall \mathbf{z}\in \mathbb{R}^d zRd,定义 K ( z ) = 1 ( 2 π ) d / 2 e − z T z 2 K(\mathbf{z})=\frac{1}{(2\pi)^{d/2}}e^{-\frac{\mathbf{z}^T\mathbf{z}}{2}} K(z)=(2π)d/21e2zTz ∀ x ∈ R d , f ^ ( x ) : = 1 n h d ∑ i = 1 n K ( x − x i h ) \forall \mathbf{x}\in \mathbb{R}^d,\hat{f}(\mathbf{x}):=\frac{1}{nh^d}\sum\limits_{i=1}^{n}K(\frac{\mathbf{x}-\mathbf{x}_i}{h}) xRd,f^(x):=nhd1i=1nK(hxxi)

    其中 h > 0 h>0 h>0 是用户指定的步长, { x 1 , ⋯   , x n } \{\mathbf{x}_1,\cdots,\mathbf{x}_n\} {x1,,xn} 是给定的数据集

    15.3 DENCLUE

    Def.1 x ∗ ∈ R d \mathbf{x}^*\in \mathbb{R}^d xRd 是密度吸引子,如果它决定概率密度函数 f f f 的一个局部最大值。(PDF一般未知)

    x ∗ ∈ R d \mathbf{x}^*\in \mathbb{R}^d xRd x ∈ R d \mathbf{x}\in \mathbb{R}^d xRd 的密度吸引子,如果存在 x 0 , x 1 , … , x m \mathbf{x}_0,\mathbf{x}_1,\dots,\mathbf{x}_m x0,x1,,xm,使得 x 0 = x , ∣ ∣ x m − x ∗ ∣ ∣ ≤ ϵ \mathbf{x}_0=\mathbf{x},||\mathbf{x}_m-\mathbf{x}^*||\le\epsilon x0=x,∣∣xmx∣∣ϵ,且 x t + 1 = x t + δ ⋅ ∇ f ^ ( x t ) ( 1 ) \mathbf{x}_{t+1}=\mathbf{x}_{t}+\delta \cdot \nabla \hat{f}(\mathbf{x}_{t})\quad (1) xt+1=xt+δf^(xt)(1)

    其中 ϵ , δ > 0 \epsilon,\delta >0 ϵ,δ>0 是用户定义的误差及步长, f ^ \hat{f} f^ 是DEF。

    • 更高效的迭代公式:

    动机:当 x \mathbf{x} x 靠近 x ∗ \mathbf{x}^* x 时,迭代公式(1)迭代效率低 ∇ f ^ ( x ∗ ) = 0 \nabla \hat{f}(\mathbf{x}^*)=0 f^(x)=0

    ∇ f ^ ( x ) = ∂ ∂ x f ^ ( x ) = 1 n h d ∑ i = 1 n ∂ ∂ x K ( x − x i h ) \nabla \hat{f}(\mathbf{x})=\frac{\partial}{\partial \mathbf{x}} \hat{f}(\mathbf{x})=\frac{1}{n h^{d}} \sum\limits_{i=1}^{n} \frac{\partial}{\partial \mathbf{x}} K\left(\frac{\mathbf{x}-\mathbf{x}_{i}}{h}\right) f^(x)=xf^(x)=nhd1i=1nxK(hxxi)

    ∂ ∂ x K ( z ) = ( 1 ( 2 π ) d / 2 exp ⁡ { − z T z 2 } ) ⋅ − z ⋅ ∂ z ∂ x = K ( z ) ⋅ − z ⋅ ∂ z ∂ x

    xK(z)=(1(2π)d/2exp{zTz2})zzx=K(z)zzx" role="presentation">xK(z)=(1(2π)d/2exp{zTz2})zzx=K(z)zzx
    xK(z)=((2π)d/21exp{2zTz})zxz=K(z)zxz

    z = x − x i h \mathbf{z}=\frac{\mathbf{x}-\mathbf{x}_i}{h} z=hxxi 代入得: ∂ ∂ x K ( x − x i h ) = K ( x − x i h ) ⋅ ( x i − x h ) ⋅ ( 1 h ) \frac{\partial}{\partial \mathbf{x}} K\left(\frac{\mathbf{x}-\mathbf{x}_{i}}{h}\right)=K\left(\frac{\mathbf{x}-\mathbf{x}_{i}}{h}\right) \cdot\left(\frac{\mathbf{x}_{i}-\mathbf{x}}{h}\right) \cdot\left(\frac{1}{h}\right) xK(hxxi)=K(hxxi)(hxix)(h1)

    故有: ∇ f ^ ( x ) = 1 n h d + 2 ∑ i = 1 n K ( x − x i h ) ⋅ ( x i − x ) \nabla \hat{f}(\mathbf{x})=\frac{1}{n h^{d+2}} \sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}-\mathbf{x}_{i}}{h}\right) \cdot\left(\mathbf{x}_{i}-\mathbf{x}\right) f^(x)=nhd+21i=1nK(hxxi)(xix)

    则: 1 n h d + 2 ∑ i = 1 n K ( x ∗ − x i h ) ⋅ ( x i − x ∗ ) = 0 \frac{1}{n h^{d+2}} \sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}^*-\mathbf{x}_{i}}{h}\right) \cdot\left(\mathbf{x}_{i}-\mathbf{x}^*\right)=0 nhd+21i=1nK(hxxi)(xix)=0

    故有: x ∗ = ∑ i = 1 n K ( x ∗ − x i h ) ⋅ x i ∑ i = 1 n K ( x ∗ − x i h ) ( 2 ) \mathbf{x}^*=\frac{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}^*-\mathbf{x}_{i}}{h}\right)\cdot \mathbf{x}_{i}}{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}^*-\mathbf{x}_{i}}{h}\right)}\quad (2) x=i=1nK(hxxi)i=1nK(hxxi)xi(2)

    由(1): x t + 1 − x t = δ ⋅ ∇ f ^ ( x t ) \mathbf{x}_{t+1}-\mathbf{x}_{t}=\delta \cdot \nabla \hat{f}(\mathbf{x}_{t}) xt+1xt=δf^(xt),(靠近 x ∗ \mathbf{x}^* x 时)近似有: x t + 1 − x t ≈ 0 \mathbf{x}_{t+1}-\mathbf{x}_{t}\approx0 xt+1xt0

    且: x t = ∑ i = 1 n K ( x t − x i h ) ⋅ x i ∑ i = 1 n K ( x t − x i h ) \mathbf{x}_t=\frac{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)\cdot \mathbf{x}_{i}}{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)} xt=i=1nK(hxtxi)i=1nK(hxtxi)xi

    故: x t + 1 = ∑ i = 1 n K ( x t − x i h ) ⋅ x i ∑ i = 1 n K ( x t − x i h ) \mathbf{x}_{t+1}=\frac{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)\cdot \mathbf{x}_{i}}{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)} xt+1=i=1nK(hxtxi)i=1nK(hxtxi)xi

    Def.2 C ⊆ D C\subseteq \mathbf{D} CD 是基于密度的类,如果存在密度吸引子 x 1 ∗ , … , x m ∗ \mathbf{x}^*_1,\dots,\mathbf{x}^*_m x1,,xm s . t : s.t: s.t:

    1. ∀ x ∈ C \forall \mathbf{x}\in C xC 都有某个 x i ∗ \mathbf{x}^*_i xi 使得, x i ∗ \mathbf{x}^*_i xi x \mathbf{x} x 的密度吸引子;
    2. ∀ i , f ^ ( x i ∗ ) ≥ ξ \forall i,\hat{f}(\mathbf{x}^*_i)\ge \xi i,f^(xi)ξ,其中 ξ \xi ξ 是用户指定的极小密度阈值;
    3. ∀ x i ∗ , x j ∗ \forall\mathbf{x}^*_i,\mathbf{x}^*_j xi,xj 都密度可达,即存在路径从 x i ∗ \mathbf{x}^*_i xi x j ∗ \mathbf{x}^*_j xj 使得路径上所有点 y \mathbf{y} y 都有 f ^ ( y ) ≥ ξ \hat{f}(\mathbf{y})\ge\xi f^(y)ξ

    算法15.2 : DENCLUE 算法

    输入: D , h , ξ , ϵ \mathbf{D},h,\xi,\epsilon D,h,ξ,ϵ

    输出: C \mathcal{C} C (基于密度的聚类)

    1. A ← ∅ \mathcal{A}\leftarrow\emptyset A

    2. 对每一个 x ∈ D \mathbf{x}\in \mathbf{D} xD:

      2.1 x ∗ ← F I N D A T T R A C T O R ( x , D , h , ξ , ϵ ) \mathbf{x}^* \leftarrow FINDATTRACTOR(\mathbf{x},\mathbf{D},h,\xi,\epsilon) xFINDATTRACTOR(x,D,h,ξ,ϵ)

      2.2 R ( x ∗ ) ← ∅ R(\mathbf{x}^*)\leftarrow\emptyset R(x)

      2.3 if f ^ ( x ∗ ) ≥ ξ \hat{f}(\mathbf{x}^*)\ge \xi f^(x)ξ then:

      2.4 A ← A ∪ { x ∗ } \mathcal{A}\leftarrow \mathcal{A}\cup\{ \mathbf{x}^*\} AA{x}

      2.5 R ( x ∗ ) ← R ( x ∗ ) ∪ { x ∗ } R(\mathbf{x}^*)\leftarrow R(\mathbf{x}^*)\cup\{ \mathbf{x}^* \} R(x)R(x){x}

    3. C ← { maximal  C ⊆ A ∣ ∀ x i ∗ , x j ∗ ∈ C , 满足 D e f   2 条件 3 } \mathcal{C}\leftarrow\{\text{maximal}\ C \subseteq \mathcal{A}| \forall\mathbf{x}^*_i,\mathbf{x}^*_j \in C, 满足 Def \ 2 条件3 \} C{maximal CA∣∀xi,xjC,满足Def 2条件3}

    4. ∀ C ∈ C : \forall C \in \mathcal{C}: CC:

      4.1 对每一个 x ∗ ∈ C \mathbf{x}^*\in C xC,令 C ← C ∪ R ( x ∗ ) C\leftarrow C\cup R(\mathbf{x}^*) CCR(x)

    5. Return C \mathcal{C} C

    F I N D A T T R A C T O R ( x , D , h , ξ , ϵ ) FINDATTRACTOR(\mathbf{x},\mathbf{D},h,\xi,\epsilon) FINDATTRACTOR(x,D,h,ξ,ϵ):

    1. t ← 0 t\leftarrow 0 t0

    2. x t = x \mathbf{x}_{t}=\mathbf{x} xt=x

    3. Repeat:

      x t + 1 ← ∑ i = 1 n K ( x t − x i h ) ⋅ x i ∑ i = 1 n K ( x t − x i h ) \mathbf{x}_{t+1}\leftarrow\frac{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)\cdot \mathbf{x}_{i}}{\sum\limits_{i=1}^{n} K\left(\frac{\mathbf{x}_t-\mathbf{x}_{i}}{h}\right)} xt+1i=1nK(hxtxi)i=1nK(hxtxi)xi

      t ← t + 1 t\leftarrow t+1 tt+1

    4. Until ∣ ∣ x t − x t − 1 ∣ ∣ < ϵ ||\mathbf{x}_{t}-\mathbf{x}_{t-1}||<\epsilon ∣∣xtxt1∣∣<ϵ


  • 相关阅读:
    派大星的小站
    Mac vsCode快捷键总结
    21.flink 水位线,彻底站起来
    【老生谈算法】matlab实现K均值聚类算法——K均值聚类算法
    List执行remove操作间歇性报错UnsupportedOperationException
    RabbitMQ 学习(四)-- 发布确认模式
    python-线程池的使用
    高通WLAN框架学习(34)-- QCMobileAP IOCTLs(iwpriv)命令大全
    QtScrcpy最出色的C++开源手机投屏控制软件
    零成本搭建个人博客之图床和cdn加速
  • 原文地址:https://blog.csdn.net/yyywxk/article/details/127671855