9.1聚类任务
常见的无监督学习中最有名的是聚类(clustering)方法。(其他还有密度估计,异常检测)
聚类试图将数据划分成若干不相交的子集,每个子集称为“簇”(cluster),其对应的标签需要人工标记。
聚类既可以单独分析数据的内部分布结构,也可以作为分类的前驱。比如商家有一大批用户数据,可以通过聚类,将用于划分成不同的类型,再机遇这些类训练分类模型。
9.2性能度量
性能度量也指”有效性指标(validity index)“.用性能度量来评估聚类效果,也可通过性能度量优化聚类过程。
对数据集 D = {
x
1
,
x
2
,
.
.
.
.
,
x
m
x_1,x_2,....,x_m
x1,x2,....,xm},假定通过聚类给出的簇划分为C={
C
1
,
C
2
,
.
.
.
C
k
C_1,C_2,...C_k
C1,C2,...Ck},参考模型划分的簇
C
∗
C^*
C∗={
C
1
∗
,
C
2
∗
,
.
.
.
.
,
C
s
∗
C_1^*,C_2^*,....,C_s^*
C1∗,C2∗,....,Cs∗},相应的,令
λ
\lambda
λ和
λ
∗
\lambda^*
λ∗分别表示C和
C
∗
C^*
C∗的簇标记。
定义:
a
=
∣
S
S
∣
,
S
S
=
(
x
i
,
x
j
)
,
λ
i
=
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
a = |SS|, SS =(x_i,x_j) , \lambda_i = \lambda_j,\lambda^*_i = \lambda^*_j ,i<j
a=∣SS∣,SS=(xi,xj),λi=λj,λi∗=λj∗,i<j
b
=
∣
S
D
∣
,
S
D
=
(
x
i
,
x
j
)
,
λ
i
=
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
b = |SD|,SD =(x_i,x_j) , \lambda_i = \lambda_j,\lambda^*_i \neq \lambda^*_j ,i<j
b=∣SD∣,SD=(xi,xj),λi=λj,λi∗=λj∗,i<j
c
=
∣
D
S
∣
,
D
S
=
(
x
i
,
x
j
)
,
λ
i
≠
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
c= |DS|,DS =(x_i,x_j) , \lambda_i \neq \lambda_j,\lambda^*_i = \lambda^*_j,i<j
c=∣DS∣,DS=(xi,xj),λi=λj,λi∗=λj∗,i<j
d
=
∣
D
D
∣
,
D
D
=
(
x
i
,
x
j
)
,
λ
i
≠
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
d = |DD|,DD =(x_i,x_j) , \lambda_i \neq \lambda_j,\lambda^*_i \neq\lambda^*_j,i<j
d=∣DD∣,DD=(xi,xj),λi=λj,λi∗=λj∗,i<j
对数据x两辆配对,显然a+b+c+d = m*(m-1)/2
常用性能度量外部指标
- Jaccard 指数(JC)
J C = a a + b + c JC = \frac{a}{a+b+c} JC=a+b+ca - FM指数(FMI)
F M I = a a + b ∗ a a + c FMI = \sqrt{\frac{a}{a+b}*\frac{a}{a+c}} FMI=a+ba∗a+ca - Rand指数(RI)
R I = 2 ( a + d ) m ∗ ( m − 1 ) RI = \frac{2(a+d)}{m*(m-1)} RI=m∗(m−1)2(a+d)
对k个簇 C = ( C 1 , C − 2 , . . . C k ) C = (C_1,C-2,...C_k) C=(C1,C−2,...Ck)我们来定义
a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ d i s t ( x i , x j ) , 1 < i < j < ∣ C ∣ avg(C) = \frac{2}{|C|(|C|-1)} \sum dist(x_i,x_j), 1<i<j<|C| avg(C)=∣C∣(∣C∣−1)2∑dist(xi,xj),1<i<j<∣C∣
d i a m ( C ) = m a x 1 < = i < j < = ∣ C ∣ d i s ( x i , x j ) diam(C) = max_{1<=i<j<=|C|}dis(x_i,x_j) diam(C)=max1<=i<j<=∣C∣dis(xi,xj)
d m i n ( C i , C j ) = m i n x i ∈ C i , x j ∈ C j d i s t ( 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) dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,xj)
d c e n ( C i , C j ) = d i s t ( μ i , μ j ) d_{cen}(C_i,C_j) = dist(\mu_i,\mu_j) dcen(Ci,Cj)=dist(μi,μj)
以下为性能度量内部指标 - DB指数
D B = 1 k ∑ i = 1 k m a x ( ( a v g ( C i ) + a v g ( C j ) d c e n ( μ i , μ j ) ) DB = \frac{1}{k}\sum_{i=1}^kmax(\frac{(avg(C_i)+avg(C_j)}{d_{cen}(\mu_i,\mu_j)}) DB=k1i=1∑kmax(dcen(μi,μj)(avg(Ci)+avg(Cj)) - Dunn指数(DI)
D I = m i n [ m i n ( d m i n ( C i , C j ) m a x 1 < = l < = k d i a m ( C l ) ) ] DI =min[min(\frac{d_{min}(C_i,C_j)}{max_{1<=l<=k}diam(C_l)})] DI=min[min(max1<=l<=kdiam(Cl)dmin(Ci,Cj))]
9.3距离计算
对函数
d
i
s
t
(
,
)
dist( ,)
dist(,) 要满足非负,同零,对称,三角不等式。
给定样本
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 = 2,是欧式距离
当p = 1,是曼哈顿距离
9.4原型聚类
原型聚类:算法对原型进行初始化,然后对原型进行迭代更新。
9.4.1K均值算法
给定样本集
K-means
——————————————————————————————————
输入:样本集合D = {
x
1
,
x
2
,
.
.
.
.
.
x
m
x_1,x_2,.....x_m
x1,x2,.....xm}
聚类簇数k
过程:
1.从D中随机选择k个样本作为初始均值向量{
μ
1
,
μ
2
,
.
.
.
.
.
.
,
μ
k
\mu_1,\mu_2,......,\mu_k
μ1,μ2,......,μk}
2.DO WHILE
3.
令
C
i
=
∅
\quad令C_i = \emptyset
令Ci=∅(1<=i<=k)
4.
\quad
FOR j = 1,2,3,…m
5.
\qquad
计算样本
x
j
x_j
xj与各均值向量
μ
i
\mu_i
μi的距离
d
i
j
=
∣
x
j
−
μ
i
∣
2
;
d_{ij} = |x_j-\mu_i|_2;
dij=∣xj−μi∣2;
6.
\qquad
根据距离最近的均值向量确定
x
j
x_j
xj的簇标记:
λ
j
=
a
r
g
m
i
n
i
d
j
i
;
\lambda_j = argmin_id_{ji};
λj=argminidji;
7.
\qquad
将样本
x
j
x_j
xj划入对应的簇
C
λ
j
=
C
λ
j
∪
x
j
C_{\lambda_j}=C_{\lambda_j}\cup x_j
Cλj=Cλj∪xj
8.
\quad
END
9.
\quad
FOR i = 1,2,3,…k,
10.
\qquad
计算新均值向量:
μ
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
11.
\qquad
IF
μ
i
′
≠
μ
i
\mu_i^{'}\neq \mu_i
μi′=μi then
12.
\qquad
将向量值
μ
i
\mu_i
μi更新为
μ
i
′
\mu_i^{'}
μi′
13.
\qquad
END if
14.
\quad
END for
15.UNTIL 当前向量均值均未更新
输出:簇划分
C
C
C={
C
2
,
C
2
,
.
.
.
C
k
C_2,C_2,...C_k
C2,C2,...Ck}
——————————————————————————————————
9.4.2学习向量量化
与k均值算法类似,学习向量量化(Learning Vector Quantization)LVQ假设样本带有标记
LVQ的目标是学得一组n维原型向量{
p
1
,
p
2
,
.
.
.
p
q
p_1,p_2,...p_q
p1,p2,...pq}
——————————————————————————————————
输入:样本集D ={
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
.
.
.
,
(
x
m
,
y
m
)
(x_1,y_1), (x_2,y_2),......,(x_m,y_m)
(x1,y1),(x2,y2),......,(xm,ym)} (y是样本x的类别标记)
\qquad
原型个数q,各原型的类别标记是{
t
1
,
t
2
.
.
.
.
t
q
t_1,t_2....t_q
t1,t2....tq}
\qquad
学习率
η
∈
(
0
,
1
)
\eta \in (0,1)
η∈(0,1)
过程:
1.初始化一组原型向量{
p
1
,
p
2
,
.
.
.
p
q
p_1,p_2,...p_q
p1,p2,...pq}
2.DO WHILE
3.
\quad
从样本集D中随机选取样本
(
x
j
,
y
j
)
(x_j,y_j)
(xj,yj)
4.
\quad
计算样本
x
j
x_j
xj和
p
i
p_i
pi(1<=i<=q)的距离
d
i
j
=
∣
∣
x
j
−
p
i
∣
∣
2
d_{ij} = ||x_j-p_i||_2
dij=∣∣xj−pi∣∣2
5.
\quad
找出与
x
j
x_j
xj距离最近的原型向量
p
i
∗
,
i
∗
=
a
r
g
m
i
n
i
d
i
j
p_{i*},i^*=argmin_id_{ij}
pi∗,i∗=argminidij
6.
\quad
IF
y
j
=
t
i
∗
y_j = t_{i*}
yj=ti∗ then
7.
\qquad
p
′
=
p
i
∗
+
η
(
x
j
−
p
i
∗
)
p^{'} = p_{i*}+\eta(x_j-p_{i*})
p′=pi∗+η(xj−pi∗)
8.
\quad
else
9.
\qquad
p
′
=
p
i
∗
−
η
(
x
j
−
p
i
∗
)
p^{'} = p_{i*}-\eta(x_j-p_{i*})
p′=pi∗−η(xj−pi∗)
10.
\quad
END IF
11.
\quad
将向量
p
i
∗
p_{i*}
pi∗更新为
p
′
p^{'}
p′
12.UNTIL 满足停止条件
——————————————————————————————————
9.4.3高斯混合聚类(mixture of gaussian cluster)(待完成)
需要预备知识EM算法和高斯分布、拉格朗日乘子,暂时跳过,周六周日集中解决
预备知识:多元高斯分布,对n维样本空间
χ
\chi
χ中的随机变量x,如果x服从高斯分布,其概率密度函数为:
p
(
x
)
=
1
(
2
π
)
n
/
2
∣
∑
∣
p(x) = \frac{1}{(2\pi)^{n/2}|\sum|}
p(x)=(2π)n/2∣∑∣1
9.5密度聚类
密度聚类也称为“基于密度的聚类(density-based clustering)“,此类算法假设聚类结构能通过样本分布的紧密程度确定,通常情况下,密度聚类算法从样本密度的角度来考察样本的可连接性,并且基于可连接样本不断扩展聚类簇与获得最终的聚类效果。
DBSCAN
它基于一组邻域参数来刻画样本分布的紧密程度,给定数据集合D={x1,x2,…,xm},
定义下面几个概念
- ϵ \epsilon ϵ-邻域 :对 x j ∈ D , 其 x_j\in D,其 xj∈D,其 ϵ \epsilon ϵ-邻域包含样本集D中与 x j x_j xj距离不大于 ϵ \epsilon ϵ的样本,形式化 N ϵ ( x j ) = ( x i ∈ D ∣ d i s t ( x i , x j ) < = ϵ ) N_{\epsilon}(x_j) = (x_i\in D|dist(x_i,x_j)<=\epsilon) Nϵ(xj)=(xi∈D∣dist(xi,xj)<=ϵ)
- 核心对象(core-object)
如果 x j x_j xj的 ϵ \epsilon ϵ邻域至少包含MinPts个样本,则 x j x_j xj是一个核心对象。形式化|N|>=MinPts - 密度直达
xj位于xi的 ϵ \epsilon ϵ邻域,而且xi是核心对象,则xj和xi密度直达 - 密度可达
对xi和xj,如果存在样本序列p1,p2,…pn,其中xi =p1, xj = pn,而且 p i p_{i} pi和 p i + 1 p_{i+1} pi+1密度直达 - 密度相连
对xi和xj,存在xk使得xi和xj均由xk密度可达,则称xi和xj密度相连。
基于这些概念,DBSCAN将簇定义为:由密度可达关系导出的最大的密度相连样本集合。形式化,给定参数( ϵ \epsilon ϵ,MinPts)可定义簇C
连接性(connectivity):(不影响以下内容,略过)
最大性(maximality):(不影响阅读,略过)
因此从核心对象
出发寻找的所有样本组成的集合X满足连接性和最大性。
DBSCAN先选任一个核心对象为种子。
DBSCAN algorithm
—————————————————————————————————
输入:样本集D = {
x
1
,
x
2
,
.
.
.
.
.
,
x
m
x_1,x_2,.....,x_m
x1,x2,.....,xm}
\qquad
邻域参数 (
ϵ
,
M
i
n
P
t
s
\epsilon,MinPts
ϵ,MinPts)
过程:
1.初始化核心对象集合
Ω
=
∅
\Omega = \emptyset
Ω=∅
2.FOR j = 1,2,…m
3.
\quad
确定样本
x
j
x_j
xj的
ϵ
\epsilon
ϵ邻域
N
(
x
j
)
N(x_j)
N(xj)
4.
\quad
IF |N(
x
j
x_j
xj| >=MinPts THEN
5.
\qquad
将x加入到核心对象集合
Ω
=
Ω
∪
x
j
\Omega =\Omega \cup x_j
Ω=Ω∪xj
6.
\quad
END IF
7.END FOR
8.初始化聚类簇数 k = 0;
9.初始化未访问样本集合
Γ
=
D
\Gamma = D
Γ=D
10.WHILE
Ω
≠
∅
\Omega\neq\emptyset
Ω=∅
11.
\quad
记录当前未访问样本集合
12.
\quad
随机选取一个核心对象core
∈
Ω
\in \Omega
∈Ω,初始化队列Q
13.
\quad
将core从
Γ
\Gamma
Γ中去除
14.
\quad
WHILE
Q
≠
∅
Q\neq\empty
Q=∅
15.
\qquad
取出队头q
16.
\qquad
IF
∣
N
(
q
)
∣
>
=
M
i
n
P
t
s
|N(q)|>=MinPts
∣N(q)∣>=MinPts THEN
17.
\qquad
—————————————————————————————————
Reference
[1]周志华.机器学习第九章聚类