关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter9
1 聚类任务
聚类任务(clustering)是一类典型的”无监督学习“任务,其训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律:将数据集中的样本划分为若干个通常是互不相交的子集,每个子集称为一个簇。
形式化地说,假定样本集 D = { x 1 , x 2 , … , x m } D=\{x_1,x_2,…,x_m\} D={x1,x2,…,xm}包含 m m m个无标记样本,每个样本 x i = ( x i 1 , x i 2 , … , x i n ) x_i=(x_{i1},x_{i2},…,x_{in}) xi=(xi1,xi2,…,xin)是一个 n n n维地特征向量。则聚类算法将样本集 D D D划分为 k k k个不相交的簇 { C l ∣ l = 1 , 2 , … , k } \{C_l|l=1,2,…,k\} {Cl∣l=1,2,…,k}。我们用 λ j ∈ { 1 , 2 , … , k } \lambda_j\in \{1,2,…,k\} λj∈{1,2,…,k}表示样本 x j x_j xj的”簇标记“(cluster label),即 x j ∈ C λ j x_j \in C_{\lambda_j} xj∈Cλj。于是聚类的结果可以用包含 m m m个元素的簇标记向量 λ = { λ 1 , λ 2 , … , λ j } \lambda = \{\lambda_1,\lambda_2,…,\lambda_j\} λ={λ1,λ2,…,λj}表示。
2 性能度量
聚类性能度量亦称为”有效性指标“(validity index)。针对聚类问题,直观上看,我们希望”物以类聚“,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的”簇内相似度“应该比较高,并且”簇间相似度“应该比较低。
聚类性能度量的指标大致有两类:
- 外部指标(external index):将聚类结果与某个参考模型(reference model)进行比较
- 内部指标(internal index):直接考察聚类结果而不利用任何参考模型
对于数据集
D
=
{
x
1
,
x
2
,
…
,
x
m
}
D=\{x_1,x_2,…,x_m\}
D={x1,x2,…,xm},假定通过聚类得出的簇划分为
C
=
{
C
1
,
C
2
,
…
,
C
k
}
C=\{C_1,C_2,…,C_k\}
C={C1,C2,…,Ck},参考模型给出的簇划分
C
∗
=
{
C
1
∗
,
C
2
∗
,
…
,
C
s
∗
}
C^*=\{C_1^*,C_2^*,…,C_s^*\}
C∗={C1∗,C2∗,…,Cs∗},相应的,令
λ
\lambda
λ与
λ
∗
\lambda^*
λ∗表示
C
C
C与
C
∗
C^*
C∗的簇标记向量。我们将样本两两配对考虑,定义:
a
=
∣
S
S
∣
,
S
S
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
,
b
=
∣
S
D
∣
,
S
D
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
,
c
=
∣
D
S
∣
,
D
S
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
,
d
=
∣
D
D
∣
,
D
D
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
a=|SS|, \space\space SS=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda^*_i=\lambda_j^*,i<j\},\\ b=|SD|, \space\space SD=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda^*_i\neq \lambda_j^*,i<j\},\\ c=|DS|, \space\space DS=\{(x_i,x_j)|\lambda_i\neq \lambda_j,\lambda^*_i=\lambda_j^*,i<j\},\\ d=|DD|, \space\space DD=\{(x_i,x_j)|\lambda_i\neq \lambda_j,\lambda^*_i\neq \lambda_j^*,i<j\}
a=∣SS∣, SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},b=∣SD∣, SD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},c=∣DS∣, DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},d=∣DD∣, DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
其中,
S
S
SS
SS表示了在
C
C
C中隶属于相同簇且在
C
∗
C^*
C∗中也属于相同簇的样本对,其他类似……
由于每个样本对只能出现在其中一种情况,则有 a + b + c + d = m ( m − 1 ) 2 a+b+c+d=\frac{m(m-1)}{2} a+b+c+d=2m(m−1)
基于上述四个式子,我们可以推导出下面常用的聚类性能度量外部指标:
-
Jaccard系数
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca -
FM指数
F M I = a a + b ⋅ a a + c FMI=\sqrt{\frac{a}{a+b}\cdot \frac{a}{a+c}} FMI=a+ba⋅a+ca -
Rand指数
R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m−1)2(a+d)
上述三个外部指标的结果均在 [ 0 , 1 ] [0,1] [0,1]之间,值越大越好。
考虑聚类结果的簇划分
C
=
{
C
1
,
C
2
,
…
,
C
k
}
C=\{C_1,C_2,…,C_k\}
C={C1,C2,…,Ck},定义:
a
v
g
(
C
)
=
2
∣
C
∣
(
∣
C
∣
−
1
)
∑
1
≤
i
≤
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
d
i
a
m
(
C
)
=
max
1
≤
i
≤
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
d
m
i
n
(
C
i
,
C
j
)
=
min
x
i
∈
C
i
,
x
j
∈
C
j
d
i
s
t
(
x
i
,
x
j
)
d
c
e
n
(
C
i
,
C
j
)
=
d
i
s
t
(
μ
i
,
μ
j
)
avg(C)=\frac{2}{|C|(|C|-1)} \sum_{1\le i\le j\le |C|}dist(x_i,x_j)\\ diam(C)=\max_{1\le i\le j\le |C|}dist(x_i,x_j)\\ d_{min}(C_i,C_j)=\min_{x_i\in C_i,x_j\in C_j}dist(x_i,x_j)\\ d_{cen}(C_i,C_j)=dist(\mu_i,\mu_j)
avg(C)=∣C∣(∣C∣−1)21≤i≤j≤∣C∣∑dist(xi,xj)diam(C)=1≤i≤j≤∣C∣maxdist(xi,xj)dmin(Ci,Cj)=xi∈Ci,xj∈Cjmindist(xi,xj)dcen(Ci,Cj)=dist(μi,μj)
其中,
d
i
s
t
dist
dist表示两个样本之间的距离,
μ
\mu
μ表示簇的中心点
μ
=
1
∣
C
∣
∑
1
≤
i
≤
∣
C
∣
x
i
\mu=\frac{1}{|C|}\sum_{1\le i\le |C|}x_i
μ=∣C∣1∑1≤i≤∣C∣xi。
a
v
g
(
C
)
avg(C)
avg(C)表示簇
C
C
C内样本间的平均距离,
d
i
a
m
(
C
)
diam(C)
diam(C)表示簇
C
C
C内样本的最远距离,
d
m
i
n
d_{min}
dmin表示两个簇之间最近样本间的距离,
d
c
e
n
d_{cen}
dcen表示两个簇的中心点之间的距离。
基于上述四个式子,可以推导出常用的聚类性能度量内部指标:
-
DB指数
D B I = 1 k ∑ i = 1 k max j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( C i , C j ) ) DBI=\frac{1}{k}\sum_{i=1}^k\max_{j\neq i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}) DBI=k1i=1∑kj=imax(dcen(Ci,Cj)avg(Ci)+avg(Cj)) -
Dunn指数
D I = min 1 ≤ i ≤ k { min j ≠ i ( d m i n ( C i , C j ) max 1 ≤ l ≤ k d i a m ( C l ) ) } DI=\min_{1\le i\le k}\{\min_{j \neq i}(\frac{d_{min}(C_i,C_j)}{\max_{1\le l\le k}diam(C_l)})\} DI=1≤i≤kmin{j=imin(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
DBI的值越小越好,而DI的值越大越好。
3 距离计算
对于函数 d i s t ( ⋅ , ⋅ ) dist(\cdot,\cdot) dist(⋅,⋅),若其是一个距离度量,则需要满足一些基本性质:
- 非负性: d i s t ( x i , x j ) ≥ 0 dist(x_i,x_j)\ge 0 dist(xi,xj)≥0
- 同一性: d i s t ( x i , x j ) = 0 dist(x_i,x_j)=0 dist(xi,xj)=0当且仅当 x i = x j x_i=x_j xi=xj
- 对称性: d i s t ( x i , x j ) = d i s t ( x j , x i ) dist(x_i,x_j)=dist(x_j,x_i) dist(xi,xj)=dist(xj,xi)
- 直递性: d i s t ( x i , x j ) ≤ d i s t ( x i , x k ) + d i s t ( x k , x j ) dist(x_i,x_j)\le dist(x_i,x_k)+dist(x_k,x_j) dist(xi,xj)≤dist(xi,xk)+dist(xk,xj),可以理解成”三角不等式“
对于有序属性(例如{1,2,3}中1和2更接近,可以比较顺序,因此是有序属性;但是{飞机,火车,轮船}就很难找到顺序关系,因此不是有序属性),对于给定样本
x
i
=
{
x
i
1
,
x
i
2
,
…
,
x
i
n
}
x_i=\{x_{i1},x_{i2},…,x_{in}\}
xi={xi1,xi2,…,xin}和
x
j
=
{
x
j
1
,
x
j
2
,
…
,
x
j
n
}
x_j=\{x_{j1},x_{j2},…,x_{jn}\}
xj={xj1,xj2,…,xjn},最常用的距离函数是”闵可夫斯基距离“:
d
i
s
t
m
k
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
p
)
1
p
dist_{mk}(x_i,x_j)=(\sum_{u=1}^n |x_{iu}-x_{ju}|^p)^{\frac{1}{p}}
distmk(xi,xj)=(u=1∑n∣xiu−xju∣p)p1
- 当 p = 1 p=1 p=1时,该距离为曼哈顿距离
- 当 p = 2 p=2 p=2时,该距离为欧氏距离
对于无序属性,我们可以采用
V
D
M
VDM
VDM来衡量距离。令
m
u
,
a
m_{u,a}
mu,a表示属性
u
u
u上取值为
a
a
a的样本数,
m
u
,
a
,
i
m_{u,a,i}
mu,a,i表示第
i
i
i个样本簇中在属性
u
u
u上取值为
a
a
a的样本数,
k
k
k为样本簇数,则属性
u
u
u上两个离散值
a
a
a与
b
b
b之间的
V
D
M
VDM
VDM距离为:
V
D
M
p
(
a
,
b
)
=
∑
i
=
1
k
∣
m
u
,
a
,
i
m
u
,
a
−
m
u
,
b
,
i
m
u
,
b
∣
VDM_p(a,b)=\sum_{i=1}^k |\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|
VDMp(a,b)=i=1∑k∣mu,amu,a,i−mu,bmu,b,i∣
将闵可夫斯基距离和VDM距离结合起来即可处理混合属性,假定有
n
c
n_c
nc个有序属性、
n
−
n
c
n-n_c
n−nc个无序属性,且有序属性排列在无序属性之前:
M
i
n
k
o
v
D
M
p
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
c
∣
x
i
u
−
x
j
u
∣
p
+
∑
u
=
n
c
+
1
n
V
D
M
p
(
x
i
u
,
x
j
u
)
)
1
p
MinkovDM_p(x_i,x_j)=(\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p+\sum_{u=n_c+1}^nVDM_p(x_{iu},x_{ju}))^{\frac{1}{p}}
MinkovDMp(xi,xj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1
需注意的是,通常我们是基于某种形式的距离来定义“相似度度量”(similarity measure),距离越大,相似度越小。然而,用于相似度度量的距离未必一定要满足距离度量的所有基本性质,尤其是直递性。例如在某些任务中我们可能希望有这样的相似度度量:“人”、“马”分别与“人马”相似,但“人”与“马”很不相似;要达到这个目的,可以令“人”、“马”与”人马”之间的距离都比较小,但“人”与“马”之间的距离很大,如图所示,此时该距离不再满足直递性;这样的距离称为“非度量距离”(non-metric distance)。此外,本节介绍的距离计算式都是事先定义好的,但在不少现实任务中,有必要基于数据样本来确定合适的距离计算式,这可通过“距离度量学习”(distance metric learning)来实现。
4 原型聚类
原型聚类(prototype-based clustering):假设聚类结构能通过一组原型刻画。通常情形下,算法对原型进行初始化,然后对原型进行迭代更新求解。
4.1 k均值算法
给定样本集
D
=
{
x
1
,
x
2
,
…
,
x
m
}
D=\{x_1,x_2,…,x_m \}
D={x1,x2,…,xm},k均值(k-means)算法针对聚类所得簇划分
C
=
{
C
1
,
C
2
,
…
,
C
k
}
C=\{C_1,C_2,…,C_k \}
C={C1,C2,…,Ck},目标是最小化平方误差:
E
=
∑
i
=
1
k
∑
x
∈
C
i
∣
∣
x
−
μ
i
∣
∣
2
2
E=\sum_{i=1}^k \sum_{x\in C_i}||x-\mu_i||_2^2
E=i=1∑kx∈Ci∑∣∣x−μi∣∣22
其中
μ
i
=
1
∣
C
i
∣
∑
x
∈
C
i
x
\mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}x
μi=∣Ci∣1∑x∈Cix是簇
C
i
C_i
Ci的均值向量。直观来看,该式子刻画了簇内样本围绕簇均值向量的紧密程度,
E
E
E值越小则簇内样本相似度越高。
k-means算法流程如下:
为了避免运行时间过长,通常会设置一个最大运行轮数或最小调整幅度阈值。
4.2 学习向量量化
学习向量量化(Learning Vector Quantization,检查LVQ)是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程中用样本的监督信息来辅助聚类。
假定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),…,(x_m,y_m) \} D={(x1,y1),(x2,y2),…,(xm,ym)},其中每个样本 x i x_i xi有 n n n个属性 ( x i 1 ; x i 2 ; … ; x i n ) (x_{i1};x_{i2};…;x_{in}) (xi1;xi2;…;xin), y i y_i yi是样本 x i x_i xi的类别标记。LVQ算法的目标是学习到一组 n n n维原型向量 { p 1 , p 2 , … , p n } \{p_1,p_2,…,p_n\} {p1,p2,…,pn},每个原型向量代表一个聚类簇,簇标记 t i ∈ Y t_i\in Y ti∈Y。
LVQ算法描述如下:
通过该流程图,我们可以看出LVQ算法的关键在于上图中的6-10行,即原型向量的更新。直观上看,若样本
x
j
x_j
xj的类别与原型向量
p
i
p_i
pi相同,则令
p
i
∗
p_i*
pi∗向
x
j
x_j
xj的方向靠拢:
p
′
=
p
i
∗
+
η
(
x
j
−
p
i
∗
)
p'=p_i*+\eta (x_j-p_i*)
p′=pi∗+η(xj−pi∗)
p
′
p'
p′与
x
j
x_j
xj之间的距离为:
∣
∣
p
′
−
x
j
∣
∣
2
=
∣
∣
p
i
∗
+
η
(
x
j
−
p
i
∗
)
−
x
j
∣
∣
2
=
(
1
−
η
)
⋅
∣
∣
p
i
∗
−
x
j
∣
∣
2
||p'-x_j||_2 =||p_i*+\eta(x_j-p_i*)-x_j||_2 =(1-\eta)\cdot||p_i* -x_j||_2
∣∣p′−xj∣∣2=∣∣pi∗+η(xj−pi∗)−xj∣∣2=(1−η)⋅∣∣pi∗−xj∣∣2
其中,
η
\eta
η是学习率,位于
(
0
,
1
)
(0,1)
(0,1)之间。类似地,如果样本
x
j
x_j
xj的类别与原型向量
p
i
p_i
pi不同,则将距离增大为
(
1
+
η
)
∣
∣
p
i
∗
−
x
j
∣
∣
2
(1+\eta)||p_i*-x_j||_2
(1+η)∣∣pi∗−xj∣∣2,令原型向量和
x
j
x_j
xj的距离增大。
通过上述过程,对任意的样本
x
j
x_j
xj,它将被划入到与其距离最近的原型向量所代表的簇中;换言之,每个原型向量
p
i
p_i
pi定义了与之相关的一个区域
R
i
R_i
Ri,该区域中每个样本与
p
i
p_i
pi的距离不大于它与其他原型向量的距离,即
R
i
=
{
x
∈
X
∣
∣
∣
x
−
p
i
∣
∣
2
≤
∣
∣
x
−
p
i
′
∣
∣
2
,
i
≠
i
′
}
R_i=\{x\in X|\space||x-p_i||_2 \le||x-p_{i'}||_2,i\neq i' \}
Ri={x∈X∣ ∣∣x−pi∣∣2≤∣∣x−pi′∣∣2,i=i′}
由此形成了对样本空间
X
X
X的簇划分
{
R
1
,
R
2
,
…
,
R
q
}
\{R_1,R_2,…,R_q\}
{R1,R2,…,Rq},通常该划分称为“Voronoi剖分”。
4.3 高斯混合聚类
高斯混合聚类(Mixture-of-Gaussian)采用概率模型来表达聚类原型。
高斯分布的概率密度函数如下:
p
(
x
)
=
1
(
2
π
)
n
2
∣
∑
∣
1
2
e
−
1
2
(
x
−
μ
)
T
∑
−
1
(
x
−
μ
)
p(x)=\frac{1}{(2\pi)^{\frac{n}{2}}|\sum|^{\frac{1}{2}}} e^{-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu)}
p(x)=(2π)2n∣∑∣211e−21(x−μ)T∑−1(x−μ)
其中,
μ
\mu
μ是
n
n
n维均值向量,
∑
\sum
∑是
n
×
n
n \times n
n×n的协方差矩阵(对称正定矩阵)。
为了明确显示高斯分布与相应参数的依赖关系,我们将概率密度函数记为
p
(
x
∣
μ
,
∑
)
p(x|\mu,\sum)
p(x∣μ,∑),定义高斯混合分布,其中
α
i
\alpha_i
αi为混合系数(mixture coefficient),:
p
M
(
x
)
=
∑
i
=
1
k
α
i
⋅
p
(
x
∣
μ
i
,
∑
i
)
∑
i
=
1
k
α
i
=
1
p_M(x)=\sum_{i=1}^k \alpha_i\cdot p(x|\mu_i,\sum_i)\\ \sum_{i=1}^k \alpha_i=1
pM(x)=i=1∑kαi⋅p(x∣μi,i∑)i=1∑kαi=1
假设样本的生成过程由高斯混合分布给出,根据
α
i
\alpha_i
αi定义的先验分布选择高斯混合分布(
α
i
\alpha_i
αi表示选择第
i
i
i个分布的概率),然后根据被选择的混合成分的概率密度函数进行采样,从而生成相应的样本。
若训练集
{
x
1
,
x
2
,
…
,
x
m
}
\{x_1,x_2,…,x_m\}
{x1,x2,…,xm}由上述过程给出,令随机变量
z
j
∈
1
,
2
,
…
,
k
z_j\in {1,2,…,k}
zj∈1,2,…,k表示生成样本
x
j
x_j
xj的高斯混合成分,其取值未知。显然
z
j
z_j
zj的先验概率
P
(
z
j
=
i
)
P(z_j=i)
P(zj=i)对应于
α
i
\alpha_i
αi。其后验概率对应于下式,并记为
γ
j
i
\gamma_{ji}
γji:
p
M
(
z
j
=
i
∣
x
j
)
=
P
(
z
j
=
i
)
⋅
p
M
(
x
j
∣
z
j
=
i
)
p
M
(
x
j
)
=
α
i
⋅
p
(
x
j
∣
μ
i
,
∑
i
)
∑
l
=
1
k
α
l
⋅
p
(
x
j
∣
μ
l
,
∑
l
)
p_M(z_j=i|x_j)=\frac{P(z_j=i)\cdot p_M(x_j|z_j=i)}{p_M(x_j)} =\frac{\alpha_i\cdot p(x_j|\mu_i,\sum_i)}{\sum_{l=1}^k \alpha_l\cdot p(x_j|\mu_l,\sum_l)}
pM(zj=i∣xj)=pM(xj)P(zj=i)⋅pM(xj∣zj=i)=∑l=1kαl⋅p(xj∣μl,∑l)αi⋅p(xj∣μi,∑i)
当混合高斯分布已知时,高斯混合聚类将样本集划分为
k
k
k个簇,每个样本
x
j
x_j
xj的簇标记
λ
j
\lambda_j
λj如下确定(即高斯混合聚类采用概率模型对圆形进行刻画,簇划分由原型对应的后验概率确定):
λ
j
=
arg
max
i
∈
{
1
,
2
,
…
,
k
}
γ
j
i
\lambda_j=\mathop{\arg \max}_{i\in \{1,2,…,k\}} \gamma_{ji}
λj=argmaxi∈{1,2,…,k}γji
由最大化对数似然和EM算法,我们可以求解
α
i
\alpha_i
αi:
α
i
=
1
m
∑
j
=
1
m
γ
j
i
\alpha_i=\frac{1}{m}\sum_{j=1}^m\gamma_{ji}
αi=m1j=1∑mγji
即每个高斯分布的混合系数由样本属于改成份的平均后验概率确定。
高斯混合聚类的流程如下:
5 密度聚类
密度聚类(density-based clustering):假设聚类结构能通过样本的分布的紧密程度决定。通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。
DBSCAN是一种著名的密度聚类算法,其基于一组“邻域”(neighborhood)参数( ϵ , M i n P t s \epsilon,MinPts ϵ,MinPts)来刻画样本分布的紧密程度。给定数据集 D = { x 1 , x 2 , … , x m } D=\{x_1,x_2,…,x_m\} D={x1,x2,…,xm},定义以下几个概念:
-
ϵ − \epsilon- ϵ−邻域:对于 x j ∈ D x _j\in D xj∈D,其 ϵ − \epsilon- ϵ−邻域包含样本集 D D D中与 x j x_j xj的距离不大于 ϵ \epsilon ϵ的样本,即
N ϵ ( x j ) = { x j ∈ D ∣ d i s t ( x i , x j ) ≤ ϵ } N_\epsilon(x_j)=\{x_j\in D|dist(x_i,x_j)\le \epsilon \} Nϵ(xj)={xj∈D∣dist(xi,xj)≤ϵ} -
核心对象(core object):若 x j x_j xj的 ϵ − \epsilon- ϵ−邻域至少包含 M i n P t s MinPts MinPts个样本,即 ∣ N ϵ ( x j ) ∣ ≥ M i n P t s |N_\epsilon(x_j)|\ge MinPts ∣Nϵ(xj)∣≥MinPts,则 x j x_j xj是一个核心对象。
-
密度直达(directly density-reachable):若 x j x_j xj位与 x i x_i xi的 ϵ − \epsilon- ϵ−邻域内,且 x i x_i xi是核心对象,则称 x i x_i xi和 x j x_j xj密度直达。
-
密度可达(density-reachable):对 x i x_i xi和 x j x_j xj,存在样本序列 p 1 , p 2 , … , p n p_1,p_2,…,p_n p1,p2,…,pn,其中 p 1 = x i , p n = x j p_1=x_i,p_n=x_j p1=xi,pn=xj,且 p i + 1 p_{i+1} pi+1和 p i p_i pi密度直达,则称 x i x_i xi和 x j x_j xj密度可达。
-
密度相连(density-connected):对 x i x_i xi和 x j x_j xj,若在 x k x_k xk使得 x i x_i xi与 x j x_j xj均由 x k x_k xk密度可达,则称 x i x_i xi与 x j x_j xj密度相连。
基于上述概念,DBSCAN将“簇”定义为:由密度可达关系导出的最大密度相连样本集合。形式化的说就是,给定邻域参数( ϵ , M i n P t s \epsilon,MinPts ϵ,MinPts),簇 C ⊆ D C \subseteq D C⊆D是满足以下性质的非空样本子集:
- 连接性: x i ∈ C x_i \in C xi∈C, x j ∈ C ⇒ x i x_j\in C \Rightarrow x_i xj∈C⇒xi和 x j x_j xj密度相连
- 最大性: x i ∈ C , x j x_i \in C, x_j xi∈C,xj可由 x i x_i xi密度可达 ⇒ x j ∈ C \Rightarrow x_j\in C ⇒xj∈C
若 x x x是核心对象,由 x x x密度可达的所有样本组成的集合记为 X = { x ′ ∈ D ∣ x ′ 由 x 密 度 可 达 } X = \{x' \in D|x'由x密度可达 \} X={x′∈D∣x′由x密度可达}是满足最大型和连接性的簇。
DBSCAN算法先任选数据集中一个核心对象为种子(seed),再由此出发确定相应的聚类簇。算法描述如下:
6 层次聚类
层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可以采用 “自底向上”的聚合策略,也可采用 “自顶向下”的分拆策略。
AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集的每个样本看作一个初始聚类簇,然后再算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。
给定聚类簇 C i C_i Ci和 C j C_j Cj,其距离公式如下:
- 单链接:最小距离 d m i n ( C i , C j ) = min x ∈ C i , z ∈ C j d i s t ( x , z ) d_{min}(C_i,C_j)=\min_{x\in C_i,z\in C_j} dist(x,z) dmin(Ci,Cj)=minx∈Ci,z∈Cjdist(x,z)
- 全链接:最大距离 d m a x ( C i , C j ) = max x ∈ C i , z ∈ C j d i s t ( x , z ) d_{max}(C_i,C_j)=\max_{x\in C_i,z\in C_j} dist(x,z) dmax(Ci,Cj)=maxx∈Ci,z∈Cjdist(x,z)
- 均链接:平均距离 d a v g ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ x ∈ C i ∑ z ∈ C j d i s t ( x , z ) d_{avg}(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum_{x\in C_i}\sum_{z\in C_j} dist(x,z) davg(Ci,Cj)=∣Ci∣∣Cj∣1∑x∈Ci∑z∈Cjdist(x,z)