文章目录
聚类任务
什么是聚类
属于无监督学习。
通过对无标记训练样本的学习来解释数据的内在性质和规律。
目标:将数据集中的样本划分为若干个互不相交的子集(簇,cluster),子集内部具有相似性,子集之间具有差异性。
注意:聚类任务即可以作为一个单独的过程,也可以作为分类等其他学习任务的前驱过程。
数学描述
已有:
样本集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\{x_1,x_2,...,x_m\}
D={x1,x2,...,xm}
其中,每个样本
x
i
=
(
x
i
1
,
x
i
2
,
.
.
.
,
x
i
m
)
x_i=(x_{i1},x_{i2},...,x_{im})
xi=(xi1,xi2,...,xim)
簇标记
λ
=
{
λ
1
,
λ
2
,
.
.
.
,
λ
m
}
\lambda=\{\lambda_1,\lambda_2,...,\lambda_m\}
λ={λ1,λ2,...,λm}
目标:
划分为k个不相交的簇
{
C
l
∣
l
=
1
,
2
,
.
.
.
,
k
}
\{C_l|l=1,2,...,k\}
{Cl∣l=1,2,...,k}
其中,簇与簇之间并不相交。
性能度量
聚类任务的期望“簇内相似度”高,“簇间相似度”低。
那么我们如何评估这两点呢?
第一类:外部指标
将聚类结果与某个“参考模型”进行比较。
假定聚类得到的簇划分为
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
C=\{C_1,C_2,...,C_k\}
C={C1,C2,...,Ck}
参考模型给出的簇划分为
C
∗
=
{
C
1
∗
,
C
2
∗
,
.
.
.
,
C
k
∗
}
C^*=\{C_1^*,C_2^*,...,C_k^*\}
C∗={C1∗,C2∗,...,Ck∗}
我们研究的对象是样本对之间的聚类情况。
我们将其簇两两配对,给出四种定义:
两个模型分类一致的样本集合。都为同一类。
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\lt 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^*\not=\lambda_j^*,i\lt 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\not=\lambda_j,\lambda_i^*=\lambda_j^*,i\lt j\}
c=∣DS∣,DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
两个模型分类一致的集合。都不为同一类。
c
=
∣
D
D
∣
,
D
D
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
c=|DD|,DD=\{(x_i,x_j)|\lambda_i\not=\lambda_j,\lambda_i^*\not=\lambda_j^*,i\lt j\}
c=∣DD∣,DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}
Jaccard系数
两个集合交集大小与并集大小之比。
用于评估两个集合之间的相似度。
集合A为,在训练模型中划分为同一类的样本对;
集合B为,在引入模型中划分为同一类的样本对。
两个模型同类划分一致的总数的比例。
J
C
=
a
a
+
b
+
c
JC = \frac{a}{a+b+c}
JC=a+b+ca
FMI指数
两个模型同类划分一致的总数与集合A大小之比;
两个模型同类划分一致的总数与集合B大小之比;
最后取集合平均。
F
M
I
=
a
a
+
b
a
a
+
c
FMI = \sqrt{\frac{a}{a+b}\frac{a}{a+c}}
FMI=a+baa+ca
Rand指数
两者划分一致的比例。Jaccard和FMI之研究划分为一类且划分一致的占比。
R
I
=
2
(
a
+
d
)
m
(
m
−
1
)
=
2
(
a
+
d
a
+
b
+
c
+
d
RI=\frac{2(a+d)}{m(m-1)}=\frac{2(a+d}{a+b+c+d}
RI=m(m−1)2(a+d)=a+b+c+d2(a+d
以上指标取值范围在0,1之间,且越大越好。
第二类:内部指标
无需借助外部指标。
我们的研究对象是样本对之间的距离。
簇内相似度距离
簇C内样本间的平均距离:
a
v
g
(
C
)
=
2
∣
C
∣
(
∣
C
∣
−
1
)
∑
1
≤
i
≤
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\le i \le j \le |C|}dist(x_i,x_j)
avg(C)=∣C∣(∣C∣−1)21≤i≤j≤∣C∣∑dist(xi,xj)
簇C内样本间的最远距离:
d
i
a
m
(
C
)
=
max
1
≤
i
≤
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
diam(C)=\max_{1\le i \le j \le |C|}dist(x_i,x_j)
diam(C)=1≤i≤j≤∣C∣maxdist(xi,xj)
簇间相似度距离
簇
C
i
C_i
Ci与簇
C
j
C_j
Cj最近样本间的距离:
d
m
i
n
(
C
i
,
C
j
)
=
min
x
i
∈
C
i
,
x
j
i
n
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)=xi∈Ci,xj inCjmindist(xi,xj)
簇
C
i
C_i
Ci与簇
C
j
C_j
Cj中心点间的距离:
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指数(DBI)
越小越好
Dunn指数(DI)
越大越好
距离计算
我们在性能度量方法的内部指标中定义了四个距离。显然,距离的计算是多种多样的,在此,我们会介绍几种距离。
距离度量的性质
性质 | 数学表示 |
---|---|
非负性 | 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 ⟺ x i = x j dist(x_i,x_j)=0 \ \iff x_i= x_j dist(xi,xj)=0 ⟺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) |
闵氏(闵可夫斯基)距离
$
d
i
s
t
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
p
)
1
p
dist(x_i,x_j)=(\sum_{u=1}^n|x_{iu}-x_{ju}|^p)^\frac{1}{p}
dist(xi,xj)=(∑u=1n∣xiu−xju∣p)p1
p = 2 : 闵氏距离
p = 1 : 曼哈顿距离
属性处理
属性分类
离散属性
在定义域上有有限个可能取值。
{1,2,3}:有序属性;
{火车,飞机,汽车}:无序属性;
闵氏距离对于无序属性是无法直接使用的。
VDM(Value Difference Metric)
用于度量无序属性之间的距离。
V
D
M
p
(
a
,
b
)
=
∑
i
=
1
k
∣
m
u
,
a
,
i
m
u
,
a
−
m
u
,
b
,
i
m
u
,
b
∣
p
VDM_p(a,b) = \sum_{i=1}^k | \frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|^p
VDMp(a,b)=i=1∑k∣mu,amu,a,i−mu,bmu,b,i∣p
其中:
m
u
,
a
m_{u,a}
mu,a表示属性u上取值为a的样本数
m
u
,
a
,
i
m_{u,a,i}
mu,a,i表示第i个样本簇在属性u上取值为a的样本数
k为样本簇数
将VDM距离与闵氏距离结合可以度量两个样本之间的距离。
连续属性
距离选择
1.用于度量相似性的距离未必满足距离的所有基本性质,尤其是直递性,即“非度量距离”。
2.距离不一定是提前定义好的,可以根据数据样本进行动态学习,即“距离度量学习”。
聚类算法
原型聚类
过程:先对原型进行初始化,在对原型进行迭代更新求解。
典型:k-means、LVQ、GMM
K-means
特点
优点
1.原理简单,容易实现;
2.可解释度强。
缺点
1.K值很难确定;
2.可能陷入局部最优;
3.对噪音和异常点敏感;
4.聚类效果依赖于聚类中心的初始化;
5/对非凸数据集或类别规模太大的数据集效果不好。
高斯混合聚类
采用概率模型来表达聚类原型。
高斯分布完全是由均值向量和协方差矩阵构成。
我们假设了数据满足了高斯分布。
1.将其带入混合高斯分布函数,计算其对每个簇的后验概率P(簇|特征);
2.更新参数;
3.循环至达到迭代次数或者似然函数增长很少或不再增长。
4.输出类别。
模型本身的指标评估(辅助建模)函数为似然函数,采用的方法为极大似然法。
这有点类似于朴素贝叶斯分类器。
密度聚类(DBSCAN)
原型聚类:假设聚类结构能够通过一组原型刻画。比如K-means中的点,GMM中的混合高斯分布函数,对单个样本逐个进行处理。
密度聚类:
1.此类算法假设聚类结构能通过样本分布的紧密程度确定。
2.密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇来获得最终的聚类结果。
那么我们的问题是:
1.如何刻画样本分布的紧密程度;
2.如何扩展样本。
和性能度量一样,我们给出一系列定义:
D为数据集。我们用
(
ϵ
,
M
i
n
P
t
s
)
(\epsilon,MinPts)
(ϵ,MinPts)来刻画样本分布的紧密程度。
领域–>核心对象–>密度直达–>密度可达–>密度相连。
注:
由密度可达关系导出的最大密度相连样本集合称之为"簇";
我们给定领域参数,簇是满足以下性质的非空样本子集:
连接性:
x
i
∈
C
,
x
j
∈
C
→
x
i
与
x
j
密
度
相
连
x_i \in C,x_j\in C \rightarrow x_i 与x_j密度相连
xi∈C,xj∈C→xi与xj密度相连
最大性:
x
i
∈
C
,
x
i
与
x
j
密
度
可
达
→
x
j
∈
C
x_i \in C,x_i与x_j密度可达 \rightarrow x_j \in C
xi∈C,xi与xj密度可达→xj∈C
也就是说由核心对象x密度可达的所有样本组成的集合就是满足连接性与最大性的簇。
while:
1.找出样本中的所有核心对象;
end while
2.初始化簇数以及未访问的样本集合,也就是所有样本;
while:
3.挑出一个核心对象;
while:
4.挑出核心对象中的一个样本,开始感染样本;
5.感染完成,从未访问样本中剔除感染样本;
end while
6.簇数增加,从核心对象集中剔除感染样本。
end while
共包含一个单循环,和一个嵌套循环。
层次聚类(AGENS)
思想:将样本中的每一个样本看作一个初始聚类簇,然后在算法的每一步找出距离最近的两个聚类簇进行合并,该过程不断重复,直到达到预设的聚类簇个数。
关于聚类簇的距离,给出了三种度量方式(除去
d
m
i
n
(
x
i
,
x
j
)
d_min(x_i,x_j)
dmin(xi,xj)又给了两种):