聚类基本概念
相似度或距离
- 相似度或距离:
聚类的核心是相似度或距离的定义,它将直接影响到聚类的结果- 闵可夫斯基距离
d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ ) 1 p d_{ij}=(\sum\limits_{k=1}^m|x_{ki}-x_{kj}|)^{\frac{1}{p}} dij=(k=1∑m∣xki−xkj∣)p1
p = 2 时 偶 啦 距 离 p=2时偶啦距离 p=2时偶啦距离
p = 1 时 曼 哈 顿 距 离 p=1时曼哈顿距离 p=1时曼哈顿距离
p = ∞ 时 为 切 比 雪 夫 距 离 p=\infty时为切比雪夫距离 p=∞时为切比雪夫距离 - 马哈拉诺比斯距离
d i j = [ ( x i − x j ) S − 1 ( x i − x j ) ] , 其 中 S − 1 为 协 方 差 矩 阵 d_{ij}=[(x_i-x_j)S^{-1}(x_i-x_j)],其中S^{-1}为协方差矩阵 dij=[(xi−xj)S−1(xi−xj)],其中S−1为协方差矩阵 - 相关系数
r i j = ∑ k = 1 m ( x k i − x ^ i ) ( x k j − x ^ j ) [ ∑ k = 1 n ( x k i − x ^ i ) 2 ∑ k = 1 m ( x k j − x ^ j ) 2 ] 1 2 r_{ij}=\frac{\sum\limits_{k=1}^m(x_{ki}-\hat{x}_i)(x_{kj}-\hat{x}_j)}{[\sum\limits_{k=1}^n(x_{ki}-\hat{x}_i)^2\sum\limits_{k=1}^m(x_{kj}-\hat{x}_j)^2]^{\frac{1}{2}}} rij=[k=1∑n(xki−x^i)2k=1∑m(xkj−x^j)2]21k=1∑m(xki−x^i)(xkj−x^j)
绝对值越接近1表示越相似,越接近0表示越不相似 - 夹角余弦
越接近1表示越相似,越接近0表示越不相似
s i j = ∑ k = 1 m x k i x k j [ ∑ k = 1 m x k i 2 ∑ k = 1 m x k j 2 ] 1 2 s_{ij}=\frac{\sum\limits_{k=1}^mx_{ki}x_{kj}}{[\sum\limits_{k=1}^mx_{ki}^2\sum\limits_{k=1}^mx_{kj}^2]^{\frac{1}{2}}} sij=[k=1∑mxki2k=1∑mxkj2]21k=1∑mxkixkj
- 闵可夫斯基距离
类或簇
n
G
n_G
nG为类中的样本个数
如果一个样本只属于一个类,则为硬聚类
如果一个样本可以属于多个类,则为软聚类
- 定义1
设 T T T为给定的正数,若集合 G G G中任意两个样本 x i , x j x_i,x_j xi,xj有
d i j ≤ T d_{ij}\le T dij≤T则称 G G G为一个类或簇 - 定义2
设 T T T为给定的正数,若对集合 G G G的任意样本 x i x_i xi,一定存在一个 G G G中的另外一个样本 x j x_j xj使的
d i j ≤ T d_{ij}\le T dij≤T则称 G G G为一个类或簇 - 定义3
设 T T T为给定的正数,若对集合 G G G中任意一个样本 x i x_i xi, G G G中的另外一个样本 x j x_j xj满足
1 n G − 1 ∑ x j ∈ G d i j ≤ T \frac{1}{n_G-1}\sum\limits_{x_j \in G}d_{ij}\le T nG−11xj∈G∑dij≤T则称 G G G为一个类或簇 - 定义4
设 T T T和 V V V为给定的两个正数,如果集合 G G G中任意两个样本 x i , x j x_i,x_j xi,xj的距离 d i j d_{ij} dij满足
1 n G ( n G − 1 ) ∑ x i ∈ G ∑ x j ∈ G d i j ≤ T \frac{1}{n_G(n_G-1)}\sum\limits_{x_i \in G}\sum\limits_{x_j \in G}d_{ij} \le T nG(nG−1)1xi∈G∑xj∈G∑dij≤T
d i j ≤ V d_{ij}\le V dij≤V
则称 G G G为一个类或簇
以上四个定义,第一个定义最常用,并且可以推导出其他三个定义
又 - 类均值
x ^ G = 1 n G ∑ i = 1 n G x i \hat{x}_G=\frac{1}{n_G}\sum\limits_{i=1}^{n_G}x_i x^G=nG1i=1∑nGxi - 类直径
D G = max x i , x j ∈ G d i j D_G=\max\limits_{x_i,x_j \in G} d_{ij} DG=xi,xj∈Gmaxdij - 样本散布矩阵
A G = ∑ i = 1 n G ( x i − x ^ G ) ( x i − x ^ G ) T A_G=\sum\limits_{i=1}^{n_{G}}(x_i-\hat{x}_G)(x_i-\hat{x}_G)^T AG=i=1∑nG(xi−x^G)(xi−x^G)T - 协方差矩阵
S G = 1 m − 1 A G S_G=\frac{1}{m-1}A_G SG=m−11AG
类与类之间的距离
- 最短距离或单连接
D p q = min { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=\min\{d_{ij}|x_i\in G_p,x_j \in G_q\} Dpq=min{dij∣xi∈Gp,xj∈Gq} - 最长距离或单连接
D p q = max { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=\max\{d_{ij}|x_i\in G_p,x_j \in G_q\} Dpq=max{dij∣xi∈Gp,xj∈Gq} - 中心距离
D p q = d x ^ p x ^ q D_{pq}=d_{\hat{x}_p\hat{x}_q} Dpq=dx^px^q - 平均距离
D p q = 1 n p n q ∑ x i ∈ G p ∑ x i ∈ G p d i j D_{pq}=\frac{1}{n_pn_q}\sum\limits_{x_i \in G_p}\sum\limits_{x_i \in G_p}d_{ij} Dpq=npnq1xi∈Gp∑xi∈Gp∑dij
层次聚类
分为两类
(
1
)
(1)
(1)聚合:自下而上,每次选最近的类进行合并,直到满足条件
(
2
)
(2)
(2)分裂:自上而下,每次在选择一个类进行分裂,直到满足条件
算法:
输入:n个样本组合的样本集以及样本之间的距离
输出:对样本集合的一个层次化聚类
(
1
)
(1)
(1)计算n个样本两两之间的距离,记作矩阵
D
=
[
d
i
j
]
n
×
n
D=[d_{ij}]_{n×n}
D=[dij]n×n
(
2
)
(2)
(2)构造n个类,每个类只包含一个样本
(
3
)
(3)
(3)合并类间距离最小的两个类,其中最短距离为类间的距离,构造新类
(
4
)
(4)
(4)计算新类与当前各类的句子,满足条件则停止,否则回到
(
3
)
(3)
(3)
K均值聚类
模型
给定n个样本
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X=\{x_1,x_2,...,x_n\}
X={x1,x2,...,xn}每个样本由一个特征向量表示,特征向量维度为m,k均值聚类为对数据进行划分
G
1
,
G
2
,
.
.
.
,
G
k
G_1,G_2,...,G_k
G1,G2,...,Gk其中
G
i
⋂
G
j
=
∅
,
⋃
i
=
1
k
G
i
=
X
G_i\bigcap G_j=\varnothing,\bigcup\limits_{i=1}^kG_i=X
Gi⋂Gj=∅,i=1⋃kGi=X
划分
C
C
C对应着一个多对一的函数,学习
C
(
x
i
)
=
l
C(x_i)=l
C(xi)=l其中
l
l
l为类
策略
最小化损失函数得到函数
C
C
C
W
(
C
)
=
∑
l
=
1
k
∑
C
(
i
)
=
l
∣
∣
x
i
−
x
^
l
∣
∣
W(C)=\sum\limits_{l=1}^k\sum\limits_{C(i)=l}||x_i-\hat{x}_l||
W(C)=l=1∑kC(i)=l∑∣∣xi−x^l∣∣
x
^
l
\hat{x}_l
x^l为第
l
l
l类的均值
C
∗
=
arg min
C
W
(
C
)
C^*=\argmin\limits_{C}W(C)
C∗=CargminW(C)
算法
输入:n个样本的集合
X
X
X
输出:样本集合聚类
C
∗
C^*
C∗
(
1
)
(1)
(1)初始化.
随机选
k
k
k个样本为k类中心
m
(
0
)
=
(
m
1
(
0
)
,
m
1
(
0
)
,
.
.
.
,
m
k
(
0
)
)
m^{(0)}=(m^{(0)}_1,m^{(0)}_1,...,m^{(0)}_k)
m(0)=(m1(0),m1(0),...,mk(0))
(
2
)
(2)
(2)对样本进行聚类
m
(
t
)
=
(
m
1
(
t
)
,
m
1
(
t
)
,
.
.
.
,
m
k
(
t
)
)
m^{(t)}=(m^{(t)}_1,m^{(t)}_1,...,m^{(t)}_k)
m(t)=(m1(t),m1(t),...,mk(t)),对每个样本,选择归入类距离最小的类中
(
3
)
(3)
(3)重新计算中心点
m
(
t
+
1
)
=
(
m
1
(
t
+
1
)
,
m
1
(
t
+
1
)
,
.
.
.
,
m
k
(
t
+
1
)
)
m^{(t+1)}=(m^{(t+1)}_1,m^{(t+1)}_1,...,m^{(t+1)}_k)
m(t+1)=(m1(t+1),m1(t+1),...,mk(t+1))
(
4
)
(4)
(4)重复迭代直到满足条件否则
(
2
)
,
t
=
t
+
1
(2),t=t+1
(2),t=t+1
算法特效
- 总体特点
基于划分的聚类方法,类别k事先给定,以及距离的定义事先给定,不能保证全局最优 - 收敛性
不能保证收敛到全局最优,初始中心的选择直接影响结果,类中心在聚类过程中会发生移动,但移动的距离不会太大 - 初始类的选择
选择不同的初始点,会有不同的结果 - 类别个数k
k一般需要指定,当类数增加的时候,类平均直径会减少,到最后基本不变,而这个点一般是最优的k