第2章 聚类分析
2.1 距离聚类的概念
理解为什么使用距离进行聚类
能从给定的例子中找出可用于分类的距离
- 什么是聚类分析?
- 聚类分析的前提条件
- 聚类分析的目标
- 聚类分析的例子
- 什么是相似性?
- 每个样本由多个特征组成X=[x1,x2,…,xn]
- X可以看成是n维空间的一个点
- 点之间的距离代表着样本的相似性
- 聚类分析的关键问题
- 特征选择:略去多余的特征,选择合适的特征
- 特征量化:连续量的量化、数量级标准化、特征权重、归一化
2.2.1 常用的距离
会使用各种距离公式计算样本间的距离
能指出各种距离的优缺点
-
欧氏距离(Euclid,欧几里德)用于计算任意两样本的距离
-
输入:两个n维模式样本X1,X2
X
1
=
[
x
11
,
x
12
,
…
,
x
1
n
]
T
X
2
=
[
x
21
,
x
22
,
…
,
x
2
n
]
T
X_1=[x_{11},x_{12},\dots,x_{1n}]^T\\ X_2=[x_{21},x_{22},\dots,x_{2n}]^T
X1?=[x11?,x12?,…,x1n?]TX2?=[x21?,x22?,…,x2n?]T -
计算公式:
D
(
X
1
,
X
2
)
=
∣
∣
X
1
?
X
2
∣
∣
=
(
X
1
?
X
2
)
T
(
X
1
?
X
2
)
=
(
x
11
?
x
21
)
2
+
?
+
(
x
1
n
?
x
2
n
)
2
D(X_1,X_2)=||X_1-X_2||=\sqrt{(X_1-X_2)^T(X_1-X_2)}=\sqrt{(x_{11}-x_{21})^2+\dots+(x_{1n}-x_{2n})^2}
D(X1?,X2?)=∣∣X1??X2?∣∣=(X1??X2?)T(X1??X2?)
?=(x11??x21?)2+?+(x1n??x2n?)2
? -
输出(标量):
D
(
X
1
,
X
2
)
=
∣
∣
X
1
?
X
2
∣
∣
D(X_1,X_2)=||X_1-X_2||
D(X1?,X2?)=∣∣X1??X2?∣∣ -
要求:
-
问题:
-
解决办法:
- 标准化、归一化
归
一
化
公
式
:
x
′
=
(
x
?
x
m
i
n
)
/
(
x
m
a
x
?
x
m
i
n
)
归一化公式:x'=(x-x_{min})/(x_{max}-x_{min})
归一化公式:x′=(x?xmin?)/(xmax??xmin?) -
优点:
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
马氏距离(Maharanobis)用于计算样本偏离总体的程度
-
输入:一个n维模式样本X,样本总体的均值向量M,样本总体的协方差矩阵C
X
=
[
x
1
?
x
n
]
????
M
=
[
m
1
?
m
n
]
C
=
E
{
(
X
?
M
)
(
(
X
?
M
)
)
T
}
=
E
{
[
(
x
1
?
m
1
)
(
x
2
?
m
2
)
?
(
x
n
?
m
n
)
]
[
(
x
1
?
m
1
)
(
x
2
?
m
2
)
…
(
x
n
?
m
n
)
]
}
=
[
E
(
x
1
?
m
1
)
(
x
1
?
m
1
)
E
(
x
1
?
m
1
)
(
x
2
?
m
2
)
?
E
(
x
1
?
m
1
)
(
x
n
?
m
n
)
E
(
x
2
?
m
2
)
(
x
1
?
m
1
)
E
(
x
2
?
m
2
)
(
x
2
?
m
2
)
?
?
?
?
?
?
E
(
x
n
?
m
n
)
(
x
1
?
m
1
)
?
?
E
(
x
n
?
m
n
)
(
x
n
?
m
n
)
]
=
[
σ
11
2
σ
12
2
?
σ
1
n
2
σ
21
2
?
σ
j
k
2
?
?
?
σ
k
k
2
?
σ
n
1
2
?
?
σ
n
n
2
]
X=\begin{bmatrix} {x_1}\\ {\vdots}\\ {x_n}\\ \end{bmatrix}\ \ \ \ M=\begin{bmatrix} m_1\\ \vdots\\ m_n\\ \end{bmatrix}\\ C=E\{(X-M)((X-M))^T\}=E\{ \begin{bmatrix} {(x_1-m_1)}\\ {(x_2-m_2)}\\ \vdots\\ {(x_n-m_n)}\\ \end{bmatrix} [(x_1-m_1)(x_2-m_2)\dots(x_n-m_n)] \}\\ =\begin{bmatrix} {E(x_1-m_1)(x_1-m_1)}&{E(x_1-m_1)(x_2-m_2)}&{\cdots}&{E(x_1-m_1)(x_n-m_n)}\\ {E(x_2-m_2)(x_1-m_1)}&{E(x_2-m_2)(x_2-m_2)}&{\cdots}&{\cdots}\\ {\vdots}&{\vdots}&{\vdots}&{\vdots}\\ {E(x_n-m_n)(x_1-m_1)}&{\cdots}&{\cdots}&{E(x_n-m_n)(x_n-m_n)} \end{bmatrix}\\ =\begin{bmatrix} {\sigma_{11}^2}&{\sigma_{12}^2}&{\cdots}&{\sigma_{1n}^2}\\ {\sigma_{21}^2}&{\ddots}&{\sigma_{jk}^2}&{\vdots}\\ {\vdots}&{\vdots}&{\sigma_{kk}^2}&{\vdots}\\ {\sigma_{n1}^2}&{\cdots}&{\cdots}&{\sigma_{nn}^2}\\ \end{bmatrix}
X=????x1??xn??????????M=????m1??mn??????C=E{(X?M)((X?M))T}=E{??????(x1??m1?)(x2??m2?)?(xn??mn?)???????[(x1??m1?)(x2??m2?)…(xn??mn?)]}=??????E(x1??m1?)(x1??m1?)E(x2??m2?)(x1??m1?)?E(xn??mn?)(x1??m1?)?E(x1??m1?)(x2??m2?)E(x2??m2?)(x2??m2?)????????E(x1??m1?)(xn??mn?)??E(xn??mn?)(xn??mn?)???????=???????σ112?σ212??σn12??σ122??????σjk2?σkk2???σ1n2???σnn2?????????
- E表示平均值,C计算公式中的X代表所有样本,而不是单个!!!
- C表示样本总体在各维上的分散情况,越大越分散
-
计算公式:
D
2
=
(
X
?
M
)
T
C
?
1
(
X
?
M
)
D^2=(X-M)^TC^{-1}(X-M)
D2=(X?M)TC?1(X?M) 公式含义:某个样本点到均值向量的距离的平方,表示样本偏离总体模式类的程度。距离越大与该模式类越不相似 -
输出(标量):
D
2
D^2
D2 -
马氏距离与欧氏距离之间的关系
D
(
X
1
,
X
2
)
=
∣
∣
X
1
?
X
2
∣
∣
=
(
X
1
?
X
2
)
T
(
X
1
?
X
2
)
D
2
=
(
X
?
M
)
T
C
?
1
(
X
?
M
)
D(X_1,X_2)=||X_1-X_2||=\sqrt{(X_1-X_2)^T(X_1-X_2)}\\ D^2=(X-M)^TC^{-1}(X-M)
D(X1?,X2?)=∣∣X1??X2?∣∣=(X1??X2?)T(X1??X2?)
?D2=(X?M)TC?1(X?M)
-
马氏距离依赖于总体样本 -
当C=I时,马氏距离为欧氏距离 -
到均值向量的欧氏距离相等的点A和B在同一个圆上; 到均值向量的马氏距离相等的点A和B依赖于样本的分布(C代表了分布) -
要求:
- 各维度上可以是不同的物理量
- 各维度上的物理量单位可以不同
-
优点:
-
缺点:
- 要求总体样本数量大于每个样本的维数,否则协方差矩阵不存在逆矩阵(一般能满足)
-
明氏距离(Minkowaki)用于计算任意两样本的距离
-
输入:
两
个
n
维
模
式
样
本
X
i
,
X
j
X
i
=
[
x
i
1
,
x
i
2
,
…
,
x
i
n
]
T
X
j
=
[
x
j
1
,
x
j
2
,
…
,
x
j
n
]
T
两个n维模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T
两个n维模式样本Xi?,Xj?Xi?=[xi1?,xi2?,…,xin?]TXj?=[xj1?,xj2?,…,xjn?]T -
计算公式:
D
m
(
X
i
,
X
j
)
=
[
∑
k
=
1
n
∣
x
i
k
?
x
j
k
∣
m
]
1
/
m
D_m(X_i,X_j)=[\sum_{k=1}^n|x_{ik}-x_{jk}|^m]^{1/m}
Dm?(Xi?,Xj?)=[k=1∑n?∣xik??xjk?∣m]1/m -
输出(标量):
D
m
(
X
i
,
X
j
)
D_m(X_i,X_j)
Dm?(Xi?,Xj?) -
公式含义:明氏距离是欧氏距离、曼哈顿距离、切比雪夫距离的推广与统一
-
当m=2时,明氏距离为欧氏距离 -
当m=1时,
D
1
(
X
i
,
X
j
)
=
∑
k
=
1
n
∣
x
i
k
?
x
j
k
∣
D_1(X_i,X_j)=\sum_{k=1}^n|x_{ik}-x_{jk}|
D1?(Xi?,Xj?)=k=1∑n?∣xik??xjk?∣ 称为“街坊”距离(又称为曼哈顿距离) -
当m→∞时,明氏距离为切比雪夫距离
D
∞
=
m
a
x
(
∣
x
i
k
?
x
j
k
∣
)
,
k
=
1
,
2
,
.
.
.
,
n
D_\infty=max(|x_{ik}-x_{jk}|),k=1,2,...,n
D∞?=max(∣xik??xjk?∣),k=1,2,...,n 起最大作用的分量 -
要求:
-
问题:
-
解决办法:
-
优点:
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
汉明距离(Hamming)用于计算任意两二值样本的距离
-
输入:
两
个
n
维
二
值
(
1
或
?
1
)
模
式
样
本
X
i
,
X
j
X
i
=
[
x
i
1
,
x
i
2
,
…
,
x
i
n
]
T
X
j
=
[
x
j
1
,
x
j
2
,
…
,
x
j
n
]
T
两个n维二值(1或-1)模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T
两个n维二值(1或?1)模式样本Xi?,Xj?Xi?=[xi1?,xi2?,…,xin?]TXj?=[xj1?,xj2?,…,xjn?]T -
计算公式:
D
h
(
X
i
,
X
j
)
=
1
2
(
n
?
∑
k
=
1
n
x
i
k
?
x
j
k
)
D_h(X_i,X_j)=\frac{1}{2}(n-\sum_{k=1}^{n}x_{ik}·x_{jk})
Dh?(Xi?,Xj?)=21?(n?k=1∑n?xik??xjk?) -
输出(标量):
D
h
(
X
i
,
X
j
)
两
个
模
式
向
量
的
各
分
量
取
值
均
不
同
:
D
h
(
X
i
,
X
j
)
=
n
;
两
个
模
式
向
量
的
各
分
量
取
值
全
相
同
:
D
h
(
X
i
,
X
j
)
=
0
D_h(X_i,X_j)\\ 两个模式向量的各分量取值均不同:D_h(X_i,X_j)=n;\\ 两个模式向量的各分量取值全相同:D_h(X_i,X_j)=0
Dh?(Xi?,Xj?)两个模式向量的各分量取值均不同:Dh?(Xi?,Xj?)=n;两个模式向量的各分量取值全相同:Dh?(Xi?,Xj?)=0 -
要求:
-
问题:
-
解决办法:
-
优点:
- 能很好的反映两个二值样本的相似程度
- 与单位无关
- 与物理量无关
-
缺点:
- 维度数据不是二值时,需要二值化
- 维度数据不是1和-1时,需要码型转换
-
角度相似性函数 用于计算任意两个样本的夹角
-
输入:
两
个
n
维
模
式
样
本
X
i
,
X
j
X
i
=
[
x
i
1
,
x
i
2
,
…
,
x
i
n
]
T
X
j
=
[
x
j
1
,
x
j
2
,
…
,
x
j
n
]
T
两个n维模式样本X_i,X_j\\ X_i=[x_{i1},x_{i2},\dots,x_{in}]^T\\ X_j=[x_{j1},x_{j2},\dots,x_{jn}]^T
两个n维模式样本Xi?,Xj?Xi?=[xi1?,xi2?,…,xin?]TXj?=[xj1?,xj2?,…,xjn?]T -
计算公式:
S
(
X
i
,
X
j
)
=
X
i
T
X
j
∣
∣
X
i
∣
∣
?
∣
∣
X
j
∣
∣
S(X_i,X_j)=\frac{X_i^TX_j}{||X_i||·||X_j||}
S(Xi?,Xj?)=∣∣Xi?∣∣?∣∣Xj?∣∣XiT?Xj?? -
输出(标量):
S
(
X
i
,
X
j
)
S(X_i,X_j)
S(Xi?,Xj?) -
要求:
-
问题:
-
解决办法:
-
优点:
- 多个维度为同一个物理量且单位相同时,效果很好
- 具有旋转不变性(向量旋转)
- 二值情况下与汉明距离有点相似,也是点积
-
缺点:
- 多个维度为不同物理量时,需要归一化
- 多个维度为不同单位时,需要标准化
-
其它距离
- 卡方距离:反映实际值与理论值的偏离程度
- DTW距离:可用于比较两个长短不一的时间序列之间的相似度
- 皮尔森相关系数:反映两个样本的相关性
-
距离公式汇总表
| 描述 | 单位 | 物理量 |
---|
欧氏 | 两个样本向量距离 | 同 | 同 | 马氏 | 样本向量偏离中心的距离 | 不同 | 不同 | 明氏 | 欧氏、街坊、曼氏、卡氏推广 | 同 | 同 | 汉明 | 两个二值样本距离 | 无 | 无 | 角度 | 两个样本向量夹角 | 同 | 同 |
2.2.2 聚类准则
理解聚类准则要解决的问题
会根据实际应用确定合适的阈值和聚类准则函数
-
聚类准则概念
- 定义:根据相似性测度确定的,衡量模式之间是否相似的标准。即把不同模式聚为一类还是归为不同类的准则
- 目标:样本间距离小到什么程度时,可归为一类?聚类准则确定
- 聚类准则的确定方法:
- 阈值准则:根据规定的距离阈值进行分类的准则
- 函数准则:利用聚类准则函数进行分类的准则
-
聚类准则函数
-
定义:在聚类分析中,表示模式类间相似或差异性的函数 -
准则函数讨论:
-
它应是模式样本集{X}和模式类别{Sj, j=1,2,…,c}的函数 着眼于整体,而不是个体 -
可使聚类分析转化为寻找准则函数极值的最优化问题 -
聚类准则函数例子:误差平方和函数
J
=
∑
j
=
1
c
∑
X
∈
S
j
∣
∣
X
?
M
j
∣
∣
2
式
中
:
c
为
聚
类
类
别
的
数
目
,
M
j
=
1
N
j
∑
X
∈
S
j
X
为
属
于
S
j
集
的
样
本
的
均
值
向
量
,
N
j
为
S
j
中
样
本
数
目
J=\sum_{j=1}^c\sum_{X\in S_j}||X-M_j||^2\\ 式中:c为聚类类别的数目,M_j=\frac{1}{N_j}\sum_{X\in S_j}X为属于S_j集的样本的均值向量,\\ N_j为S_j中样本数目
J=j=1∑c?X∈Sj?∑?∣∣X?Mj?∣∣2式中:c为聚类类别的数目,Mj?=Nj?1?X∈Sj?∑?X为属于Sj?集的样本的均值向量,Nj?为Sj?中样本数目 -
适用范围:
- 样本类数给定
- 各类样本密集且相差不多,而不同类间的样本又明显分开的情况
-
误差平方和函数的例子1
- **最好结果示例(a):**类内误差平方和很小,类间距离很远
- **不好结果示例(b):**W1类长轴两端距离中心很远,J值较大
-
误差平方和函数的例子2 有时可能把样本数目多的一类分拆为二,造成错误聚类 原因:这样分开,J值会更小
2.3 基于距离阈值的聚类算法
会使用各种聚类算法进行聚类
能指出各种聚类算法的优缺点
-
基于距离阈值的聚类:近邻聚类法 将样本按照距离阈值T分类到若干模式类中
-
输入:
N
个
待
分
类
的
模
式
样
本
{
X
1
,
X
2
,
…
,
X
N
}
N个待分类的模式样本\{X_1,X_2,\dots,X_N\}
N个待分类的模式样本{X1?,X2?,…,XN?} -
输出:
以
Z
1
,
Z
2
,
…
为
聚
类
中
心
的
若
干
模
式
类
以Z_1,Z_2,\dots为聚类中心的若干模式类
以Z1?,Z2?,…为聚类中心的若干模式类 -
算法描述: 步骤1:
任
取
样
本
X
i
作
为
第
一
个
聚
类
中
心
的
初
始
值
,
如
令
Z
1
=
X
1
任取样本X_i作为第一个聚类中心的初始值,如令Z_1=X_1
任取样本Xi?作为第一个聚类中心的初始值,如令Z1?=X1? 步骤2:
计
算
样
本
X
2
到
Z
1
的
欧
氏
距
离
D
21
=
∣
∣
X
2
?
Z
1
∣
∣
,
若
D
21
>
T
,
定
义
一
新
的
聚
类
中
心
Z
2
=
X
2
;
否
则
X
2
∈
以
Z
1
为
中
心
的
聚
类
计算样本X_2到Z_1的欧氏距离D_{21}=||X_2-Z_1||,若D_{21}>T,定义一新的聚类中心Z_2=X_2;\\ 否则X_2\in 以Z_1为中心的聚类
计算样本X2?到Z1?的欧氏距离D21?=∣∣X2??Z1?∣∣,若D21?>T,定义一新的聚类中心Z2?=X2?;否则X2?∈以Z1?为中心的聚类 步骤3:
假
设
已
有
聚
类
中
心
Z
1
,
Z
2
,
计
算
D
31
=
∣
∣
X
3
?
Z
1
∣
∣
和
D
32
=
∣
∣
X
3
?
Z
2
∣
∣
,
若
D
31
>
T
且
D
32
>
T
,
则
建
立
第
三
个
聚
类
中
心
Z
3
=
X
3
;
否
则
X
3
∈
离
Z
1
和
Z
2
中
最
近
者
(
最
近
邻
的
聚
类
中
心
)
。
.
.
.
.
.
.
依
此
类
推
,
直
到
将
所
有
的
N
个
样
本
都
进
行
分
类
假设已有聚类中心Z_1,Z_2,计算D_{31}=||X_3-Z_1||和D_{32}=||X_3-Z_2||,\\ 若D_{31}>T且D_{32}>T,则建立第三个聚类中心Z_3=X_3;\\ 否则X_3\in 离Z_1和Z_2中最近者(最近邻的聚类中心)。......\\ 依此类推,直到将所有的N个样本都进行分类
假设已有聚类中心Z1?,Z2?,计算D31?=∣∣X3??Z1?∣∣和D32?=∣∣X3??Z2?∣∣,若D31?>T且D32?>T,则建立第三个聚类中心Z3?=X3?;否则X3?∈离Z1?和Z2?中最近者(最近邻的聚类中心)。......依此类推,直到将所有的N个样本都进行分类 -
优点:
-
缺点:
- 依赖于距离阈值T的大小
- 依赖于第一个聚类中心的位置选择
- 依赖于待分类模式样本的排列次序
- 依赖于样本分布的几何性质
-
图示:阈值T、中心Z、样本顺序的影响 用先验知识指导阈值T和起始点Z1的选择,可获得合理的聚类结果。否则只能选择不同的初值重复试探,并对聚类结果进行验算,根据一定的评价标准,得出合理的聚类结果 -
基于距离阈值的聚类:最大最小距离算法 将样本按照距离阈值T分类到若干模式类中
-
输入:
N
个
待
分
类
的
模
式
样
本
{
X
1
,
X
2
,
…
,
X
N
}
N个待分类的模式样本\{X_1,X_2,\dots,X_N\}
N个待分类的模式样本{X1?,X2?,…,XN?} -
输出:
以
Z
1
,
Z
2
,
…
为
聚
类
中
心
的
若
干
模
式
类
以Z_1,Z_2,\dots为聚类中心的若干模式类
以Z1?,Z2?,…为聚类中心的若干模式类 -
算法描述: 步骤1:
选
任
意
一
模
式
样
本
做
为
第
一
聚
类
中
心
Z
1
选任意一模式样本做为第一聚类中心Z_1
选任意一模式样本做为第一聚类中心Z1? 步骤2:
选
择
离
Z
1
距
离
最
远
的
样
本
作
为
第
二
聚
类
中
心
Z
2
选择离Z_1距离最远的样本作为第二聚类中心Z_2
选择离Z1?距离最远的样本作为第二聚类中心Z2? 步骤3:
逐
个
计
算
各
模
式
样
本
与
已
确
定
的
所
有
聚
类
中
心
之
间
的
距
离
,
并
选
出
其
中
的
最
小
距
离
。
例
当
聚
类
中
心
数
k
=
2
时
,
计
算
D
i
1
=
∣
∣
X
i
?
Z
1
∣
∣
和
D
i
2
=
∣
∣
X
i
?
Z
2
∣
∣
m
i
n
(
D
i
1
,
D
i
2
)
,
i
=
1
,
…
,
N
(
N
个
最
小
距
离
)
逐个计算各模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。\\ 例当聚类中心数k=2时,计算D_{i1}=||X_i-Z_1||和D_{i2}=||X_i-Z_2||\\ min(D_{i1},D_{i2}),i=1,\dots,N(N个最小距离)
逐个计算各模式样本与已确定的所有聚类中心之间的距离,并选出其中的最小距离。例当聚类中心数k=2时,计算Di1?=∣∣Xi??Z1?∣∣和Di2?=∣∣Xi??Z2?∣∣min(Di1?,Di2?),i=1,…,N(N个最小距离) 步骤4:
在
所
有
最
小
距
离
中
选
出
最
大
距
离
,
如
该
最
大
值
达
到
∣
∣
Z
1
?
Z
2
∣
∣
的
一
定
分
数
比
值
(
阈
值
T
)
以
上
(
即
T
=
θ
∣
Z
1
?
Z
2
∣
)
,
则
相
应
的
样
本
点
取
为
新
的
聚
类
中
心
,
返
回
步
骤
3
;
否
则
聚
类
中
心
的
工
作
结
束
例
k
=
2
时
,
若
m
a
x
{
m
i
n
(
D
i
1
,
D
i
2
)
,
i
=
1
,
2
,
…
,
N
}
>
θ
∣
∣
Z
1
?
Z
2
∣
∣
,
0
<
θ
<
1
则
Z
3
存
在
。
(
θ
:
用
试
探
法
取
为
一
固
定
分
数
,
如
1
/
2
)
在所有最小距离中选出最大距离,如该最大值达到||Z_1-Z_2||的一定分数比值(阈值T)以上\\ (即T=\theta|Z_1-Z_2|),则相应的样本点取为新的聚类中心,返回步骤3;\\ 否则聚类中心的工作结束\\ 例k=2时,\\ 若max\{min(D_{i1},D_{i2}),i=1,2,\dots,N\}>\theta||Z_1-Z_2||,0<\theta<1\\ 则Z_3存在。(\theta:用试探法取为一固定分数,如1/2)
在所有最小距离中选出最大距离,如该最大值达到∣∣Z1??Z2?∣∣的一定分数比值(阈值T)以上(即T=θ∣Z1??Z2?∣),则相应的样本点取为新的聚类中心,返回步骤3;否则聚类中心的工作结束例k=2时,若max{min(Di1?,Di2?),i=1,2,…,N}>θ∣∣Z1??Z2?∣∣,0<θ<1则Z3?存在。(θ:用试探法取为一固定分数,如1/2) 步骤5: 重复步骤3、4,直到没有新的聚类中心出现为止 步骤6:
将
样
本
{
X
i
,
i
=
1
,
2
,
…
,
N
}
按
最
近
距
离
划
分
到
相
应
聚
类
中
心
对
应
的
类
别
中
将样本\{X_i,i=1,2,\dots,N\}按最近距离划分到相应聚类中心对应的类别中
将样本{Xi?,i=1,2,…,N}按最近距离划分到相应聚类中心对应的类别中 思路总结:* 先找出两个初始类(步骤1、2); 再确定更多的聚类中心(步骤3、4、5); 最后分类(步骤6) 关键:确定聚类中心(步骤3、4、5) -
优点:
- 计算简单、快速(比近邻聚类慢些)
- 不依赖于待分类模式样本的排列次序
-
缺点:
- 依赖于距离阈值T的大小
- 依赖于第一个聚类中心的位置选择
- 依赖于样本分布的几何性质
-
基于距离阈值的聚类汇总
| 基于距离阈值 | 计算速度 | 依赖于阈值T | 依赖于第一聚类中心 | 依赖于样本排列次序 | 依赖于几何分布 |
---|
近邻聚类 | 是 | 快 | 是 | 是 | 是 | 是 | 最大最小距离聚类 | 是 | 较快 | 是 | 是 | 否 | 是 |
2.4 层次聚类法
按照距离准则逐步合并,减少类别数
又称(系统聚类法、分级聚类法)
-
输入:N个待分类的模式样本,各自为一类
G
1
(
0
)
,
G
2
(
0
)
,
…
,
G
N
(
0
)
G_1(0),G_2(0),\dots,G_N(0)
G1?(0),G2?(0),…,GN?(0) -
算法描述: 步骤1: 计算各样本间距离,得N×N维距离矩阵D(0)。“0”表示初始状态 步骤2:
假
设
已
求
得
距
离
矩
阵
D
(
n
)
(
n
为
逐
次
聚
类
合
并
的
次
数
)
,
找
出
D
(
n
)
中
的
最
小
元
素
,
将
其
对
应
的
两
类
合
并
为
一
类
。
得
新
分
类
:
G
1
(
n
+
1
)
,
G
2
(
n
+
1
)
,
…
假设已求得距离矩阵D(n)(n为逐次聚类合并的次数),找出D(n)中的最小元素,将其对应的两类合并为一类。\\ 得新分类:G_1(n+1),G_2(n+1),\dots
假设已求得距离矩阵D(n)(n为逐次聚类合并的次数),找出D(n)中的最小元素,将其对应的两类合并为一类。得新分类:G1?(n+1),G2?(n+1),… 步骤3: 计算合并后新类之间的距离,得D(n+1) 步骤4: 跳至步骤2,重复计算及合并 -
输出:
- 取距离阈值T,当D(n)的最小分量超过给定值T时,算法停止。所得即为聚类结果
- 或不设阈值T,一直将全部样本聚成一类为止,输出聚类的分级树
-
类间距计算方法
-
最短距离法 使用最短距离作为类间距离
-
输入:两个聚类H、K -
输出(标量):最短距离 -
计算公式:
D
H
K
=
m
i
n
{
D
(
X
H
,
X
K
)
}
????
X
H
∈
H
,
X
K
∈
K
D
(
X
H
,
X
K
)
:
H
类
中
样
本
X
H
和
K
类
中
样
本
X
K
之
间
的
欧
氏
距
离
D
H
K
:
H
类
中
所
有
样
本
与
K
类
中
所
有
样
本
之
间
的
最
小
距
离
D_{HK}=min\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K\\ D(X_H,X_K):H类中样本X_H和K类中样本X_K之间的欧氏距离\\ D_{HK}:H类中所有样本与K类中所有样本之间的最小距离
DHK?=min{D(XH?,XK?)}????XH?∈H,XK?∈KD(XH?,XK?):H类中样本XH?和K类中样本XK?之间的欧氏距离DHK?:H类中所有样本与K类中所有样本之间的最小距离 -
简化计算: 如果K类由 I 和 J 两类合并而成,则,因为
D
H
I
=
m
i
n
{
D
(
X
H
,
X
I
)
}
????
X
H
∈
H
,
X
I
∈
I
D
H
J
=
m
i
n
{
D
(
X
H
,
X
J
)
}
????
X
H
∈
H
,
X
J
∈
J
所
以
:
D
H
K
=
m
i
n
{
D
H
I
,
D
H
J
}
D_{HI}=min\{D(X_H,X_I)\}\ \ \ \ X_H\in H,X_I\in I\\ D_{HJ}=min\{D(X_H,X_J)\}\ \ \ \ X_H\in H,X_J\in J\\ 所以:D_{HK}=min\{D_{HI},D_{HJ}\}
DHI?=min{D(XH?,XI?)}????XH?∈H,XI?∈IDHJ?=min{D(XH?,XJ?)}????XH?∈H,XJ?∈J所以:DHK?=min{DHI?,DHJ?} -
优点:
-
缺点:
-
最长距离法 使用最长距离作为类间距离
-
输入:两个聚类H、K -
输出(标量):最长距离 -
计算公式:
D
H
K
=
m
a
x
{
D
(
X
H
,
X
K
)
}
????
X
H
∈
H
,
X
K
∈
K
D_{HK}=max\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K
DHK?=max{D(XH?,XK?)}????XH?∈H,XK?∈K -
简化计算:若K类由 I , J 两类合并而成,则,因为
D
H
I
=
m
a
x
{
D
(
X
H
,
X
I
)
}
????
X
H
∈
H
,
X
I
∈
I
D
H
J
=
m
a
x
{
D
(
X
H
,
X
J
)
}
????
X
H
∈
H
,
X
J
∈
J
D_{HI}=max\{D(X_H,X_I)\}\ \ \ \ X_H\in H,X_I\in I\\ D_{HJ}=max\{D(X_H,X_J)\}\ \ \ \ X_H\in H,X_J\in J\\
DHI?=max{D(XH?,XI?)}????XH?∈H,XI?∈IDHJ?=max{D(XH?,XJ?)}????XH?∈H,XJ?∈J 所以:
D
H
K
=
m
a
x
{
D
H
I
,
D
H
J
}
D_{HK}=max\{D_{HI},D_{HJ}\}
DHK?=max{DHI?,DHJ?} -
优点:
-
缺点:
-
中间距离法 使用中间距离作为类间距离
-
重心法 使用重心距离作为类间距离
-
输入:两个聚类H、K,其中若 I 类中有
n
I
n_I
nI? 个样本,J 类中有
n
J
n_J
nJ? 个样本 -
输出(标量):重心距离 -
计算公式:
D
H
K
=
n
I
n
I
+
n
J
D
H
I
2
+
n
J
n
I
+
n
J
D
H
J
2
?
n
I
n
J
(
n
I
+
n
J
)
2
D
I
J
2
D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2-\frac{n_In_J}{(n_I+n_J)^2}D_{IJ}^2}
DHK?=nI?+nJ?nI??DHI2?+nI?+nJ?nJ??DHJ2??(nI?+nJ?)2nI?nJ??DIJ2?
? 如果类 K 是单个元素,则按照最长或最短距离法计算 -
重心法与中间距离法区别
- 用样本数作为权重系数,而不是固定系数
- 好处:大类权重大,从而避免了小类的个别样本占权重太大
-
优点:
-
缺点:
-
类平均距离法 使用重心距离作为类间距离
-
输入:两个聚类H、K -
输出(标量):类平均距离 -
计算公式:
D
H
K
=
1
n
H
n
K
∑
i
∈
H
?
j
∈
K
d
i
j
2
D_{HK}=\sqrt{\frac{1}{n_Hn_K}\sum_{i\in H\ j\in K}d_{ij}^2}
DHK?=nH?nK?1?i∈H?j∈K∑?dij2?
?
d
i
j
2
d_{ij}^2
dij2? :H类任一样本
X
i
X_i
Xi? 和 K 类任一样本
X
j
X_j
Xj? 之间的欧氏距离平方
n
H
n_H
nH? :H 类的样本数量;
n
K
n_K
nK? :K 类的样本数量 -
简化计算:若 K 类由 I 类和 J 类合并产生,则递推式为
D
H
K
=
n
I
n
I
+
n
J
D
H
I
2
+
n
J
n
I
+
n
J
D
H
J
2
D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2}
DHK?=nI?+nJ?nI??DHI2?+nI?+nJ?nJ??DHJ2?
? -
距离计算公式汇总
| 公式 | 优点 | 缺点 |
---|
最短距离法 |
D
H
K
=
m
i
n
{
D
(
X
H
,
X
K
)
}
????
X
H
∈
H
,
X
K
∈
K
D_{HK}=min\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K
DHK?=min{D(XH?,XK?)}????XH?∈H,XK?∈K | 计算简单 | 对异常点敏感 | 最长距离法 |
D
H
K
=
m
a
x
{
D
(
X
H
,
X
K
)
}
????
X
H
∈
H
,
X
K
∈
K
D_{HK}=max\{D(X_H,X_K)\}\ \ \ \ X_H\in H,X_K\in K
DHK?=max{D(XH?,XK?)}????XH?∈H,XK?∈K | 计算简单 | 对异常点敏感 | 中间距离法 |
D
H
K
=
D
H
I
2
/
2
+
D
H
J
2
/
2
?
D
I
J
2
/
4
D_{HK}=\sqrt{D_{HI}^2/2+D_{HJ}^2/2-D_{IJ}^2/4}
DHK?=DHI2?/2+DHJ2?/2?DIJ2?/4
? | 能降低异常点的影响 | 计算复杂 | 重心法 |
D
H
K
=
n
I
n
I
+
n
J
D
H
I
2
+
n
J
n
I
+
n
J
D
H
J
2
?
n
I
n
J
(
n
I
+
n
J
)
2
D
I
J
2
D_{HK}=\sqrt{\frac{n_I}{n_I+n_J}D_{HI}^2+\frac{n_J}{n_I+n_J}D_{HJ}^2-\frac{n_In_J}{(n_I+n_J)^2}D_{IJ}^2}
DHK?=nI?+nJ?nI??DHI2?+nI?+nJ?nJ??DHJ2??(nI?+nJ?)2nI?nJ??DIJ2?
? | 能降低异常点的影响 | 计算复杂 | 类平均距离法 |
D
H
K
=
1
n
H
n
K
∑
i
∈
H
?
j
∈
K
d
i
j
2
D_{HK}=\sqrt{\frac{1}{n_Hn_K}\sum_{i\in H\ j\in K}d_{ij}^2}
DHK?=nH?nK?1?∑i∈H?j∈K?dij2?
? | 能降低异常点的影响 | 计算复杂 |
2.5 动态聚类法
-
基本思路: -
主要算法:
- K-均值算法(或C-均值算法)
- 迭代自组织的数据分析算法(ISODATA)
2.5.1 K-均值算法
-
条件及约定:
- 设待分类的模式特征矢量集为
{
x
1
,
x
2
,
…
,
x
N
}
\{x_1,x_2,\dots,x_N\}
{x1?,x2?,…,xN?}
- 类的数目 K 是事先取定的
-
基本思想:
- 首先任意选取 K 个聚类中心,按最小距离原则将各模式分配到 K 类的某一类
- 动态调整聚类中心和各模式的类别,最终使准则函数取极小值
-
准则函数:聚类集中每一样本点到该类中心的距离平方和 -
准则函数数学公式:
-
单个聚类集准则函数: 对于第 j 个聚类集,准则函数定义为
J
i
=
∑
i
=
1
N
j
∣
∣
X
i
?
Z
j
∣
∣
2
,
X
i
∈
S
j
S
j
:
第
j
个
聚
类
集
(
域
)
,
聚
类
中
心
为
Z
j
N
j
:
第
j
个
聚
类
集
S
j
中
所
包
含
的
样
本
个
数
J_i=\sum_{i=1}^{N_j}||X_i-Z_j||^2,X_i\in S_j\\ S_j:第j个聚类集(域),聚类中心为Z_j\\ N_j:第j个聚类集S_j中所包含的样本个数
Ji?=i=1∑Nj??∣∣Xi??Zj?∣∣2,Xi?∈Sj?Sj?:第j个聚类集(域),聚类中心为Zj?Nj?:第j个聚类集Sj?中所包含的样本个数 -
总体准则函数: 对所有 K 个模式类有
J
=
∑
j
=
1
K
∑
i
=
1
N
j
∣
∣
X
i
?
Z
j
∣
∣
2
,
X
i
∈
S
j
J=\sum_{j=1}^{K}\sum_{i=1}^{N_j}||X_i-Z_j||^2,X_i\in S_j
J=j=1∑K?i=1∑Nj??∣∣Xi??Zj?∣∣2,Xi?∈Sj? -
聚类准则:聚类中心的选择应使准则函数 J 极小,即使
J
j
J_j
Jj? 的值极小 对于某一个聚类 j ,应有
?
J
j
?
Z
j
=
0
\frac{\partial J_j}{\partial Z_j}=0
?Zj??Jj??=0 即
?
?
Z
j
∑
i
=
1
N
j
∣
∣
X
i
?
Z
j
∣
∣
2
=
?
?
Z
j
∑
i
=
1
N
j
(
X
i
?
Z
j
)
T
(
X
i
?
Z
j
)
=
0
\frac{\partial}{\partial Z_j}\sum_{i=1}^{N_j}||X_i-Z_j||^2=\frac{\partial}{\partial Z_j}\sum_{i=1}^{N_j}(X_i-Z_j)^T(X_i-Z_j)=0
?Zj???∑i=1Nj??∣∣Xi??Zj?∣∣2=?Zj???∑i=1Nj??(Xi??Zj?)T(Xi??Zj?)=0 可解得
Z
j
=
1
N
j
∑
i
=
1
N
j
X
i
,
X
i
∈
S
j
Z_j=\frac{1}{N_j}\sum_{i=1}^{N_j}X_i,X_i\in S_j
Zj?=Nj?1?∑i=1Nj??Xi?,Xi?∈Sj? 上式表明,
S
j
S_j
Sj? 类的聚类中心应选为该类样本的均值 -
算法描述:
-
步骤1:确定初始聚类中心 任选 K 个模式特征矢量作为初始聚类中心:
z
1
(
1
)
,
z
2
(
1
)
,
…
,
z
k
(
1
)
z_1(1),z_2(1),\dots,z_k(1)
z1?(1),z2?(1),…,zk?(1)。其中括号内的序号表示迭代次数 -
步骤2:根据聚类中心分类 将待分类的样本集按最小距离原则分划给 K 类中的某一类: 如果
D
j
(
k
)
=
m
i
n
{
∣
∣
x
?
z
i
(
k
)
∣
∣
}
??
(
i
=
1
,
2
,
…
,
K
)
D_j(k)=min\{||x-z_i(k)||\} \ \ (i=1,2,\dots,K)
Dj?(k)=min{∣∣x?zi?(k)∣∣}??(i=1,2,…,K),则
x
∈
S
j
(
k
)
x\in S_j(k)
x∈Sj?(k) -
步骤3:确定新的聚类中心 以各类的均值向量为新的聚类中心
z
j
(
k
+
1
)
z_j(k+1)
zj?(k+1),即:
z
j
(
k
+
1
)
=
1
N
j
∑
x
∈
S
j
(
k
)
x
,
???
j
=
1
,
2
,
…
,
K
z_j(k+1)=\frac{1}{N_j}\sum_{x\in S_j(k)}x,\ \ \ j=1,2,\dots,K
zj?(k+1)=Nj?1?x∈Sj?(k)∑?x,???j=1,2,…,K -
步骤4:结束条件 如果
z
j
(
k
+
1
)
=
z
j
(
k
)
(
j
=
1
,
2
,
…
,
K
)
z_j(k+1)=z_j(k)(j=1,2,\dots,K)
zj?(k+1)=zj?(k)(j=1,2,…,K),则结束;否则,k=k+1,转(2) -
优点:
-
缺点:
- 结果受初始聚类中心位置影响
- 结果受聚类中心个数影响
- 结果受模式样本几何性质影响
- 结果受样本顺序影响
-
解决办法:
-
如何试探 K 值? 根据聚类准则函数特点(下图) -
准则函数特点:
- 准则函数 J 随 K 值增大而减小
- 准则函数到达合理 K 值前会急剧下降
- 准则函数到达合理 K 值后会平缓下降
-
试探 K 值的方法: 逐步增加 K 值试探 -
如何避免初始聚类中心数的影响?只有笨办法:多试试
- 多次运行 K 均值算法,例如50~1000次,每次随机选取不同的初始聚类中心
- 聚类结束后计算准则函数值
- 选取准则函数值最小的聚类结果为最后的结果
- 该方法一般适用于聚类数目小于10的情况
2.5.2 ISODATA
-
K-均值算法的问题
-
ISODATA 算法的改进
-
动态改变类别数目
-
合并
- 如下两种情况合并:
- 类内样本个数太少
- 两聚类中心之间距离太小
-
分裂
-
基本步骤和思路
-
初始化 选择初始控制参数和聚类中心 -
分类 按照最近邻(即最短距离)规则进行分类 -
分裂与合并 根据参数分裂和合并,并获得新聚类中心 -
结果评估 评估结果是否符合要求。不符则返回(2) -
初始化(第一步) 设置控制参数、聚类数和初始聚类中心(见下表)
参数 | 描述 |
---|
K
K
K | 希望的聚类中心数目 |
θ
N
\theta_N
θN? | 每个聚类中最少的样本数。用于控制合并 |
θ
C
\theta_C
θC? | 两聚类中心间的最短距离。用于控制合并 |
θ
S
\theta_S
θS? | 标准差阈值。所有分量中的最大值应小于
θ
s
\theta_s
θs?,否则分裂 |
L
L
L | 每次迭代允许合并的最大聚类对数 |
N
c
N_c
Nc? | 初始聚类数(可不等于 K ) |
z
i
,
i
=
1
,
2
,
…
,
N
c
z_i,i=1,2,\dots,N_c
zi?,i=1,2,…,Nc? | 预设的初始聚类中心(也可在样本中选择) |
I
I
I | 允许迭代的最大次数 |
-
分类(第二步) 按最小距离聚类
若
D
j
=
m
i
n
(
∣
∣
x
?
z
i
∣
∣
)
,
i
=
1
,
2
,
…
,
N
c
,
则
x
∈
S
j
若D_j=min(||x-z_i||),i=1,2,\dots,N_c,\\ 则x\in S_j
若Dj?=min(∣∣x?zi?∣∣),i=1,2,…,Nc?,则x∈Sj? -
初步合并(第三步) 若有任何一个类
S
j
S_j
Sj? ,其样本数
N
j
<
θ
N
N_j<\theta_N
Nj?<θN?,则舍去
S
j
S_j
Sj?,令
N
c
=
N
c
?
1
N_c=N_c-1
Nc?=Nc??1,将原样本分配至其它类 -
合并/分裂预处理(第四、五、六步)
-
修正各聚类中心值(第四步)
Z
j
=
1
N
j
∑
X
∈
S
j
X
,
j
=
1
,
2
,
…
,
N
c
Z_j=\frac{1}{N_j}\sum_{X\in S_j}X,j=1,2,\dots,N_c
Zj?=Nj?1?X∈Sj?∑?X,j=1,2,…,Nc? -
计算类内平均距离(第五步)
D
~
j
=
1
N
j
∑
x
∈
S
j
∣
∣
x
?
z
j
∣
∣
,
j
=
1
,
2
,
…
,
N
c
\widetilde{D}_j=\frac{1}{N_j}\sum_{x\in S_j}||x-z_j||,j=1,2,\dots,N_c
D
j?=Nj?1?x∈Sj?∑?∣∣x?zj?∣∣,j=1,2,…,Nc? -
计算全体样本平均距离(第六步)
D
~
=
1
N
∑
j
=
1
N
c
N
j
D
~
j
\widetilde{D}=\frac{1}{N}\sum_{j=1}^{N_c}N_j\widetilde{D}_j
D
=N1?j=1∑Nc??Nj?D
j? -
合并/分裂判决(第七步)
- 如这是最后一次迭代(取决于 I ),则不再合并分裂,转第十一步,善后处理;并设置
θ
c
=
0
\theta_c=0
θc?=0 ,防止合并发生
- 如果
N
c
≤
K
/
2
N_c≤K/2
Nc?≤K/2 (类数远小于期望值),则转向第八步,分裂;
- 如果此时迭代运算次数是偶数次,或
N
c
≥
2
K
N_c≥2K
Nc?≥2K ,则转至第十一步,合并;否则转至第八步,分裂
- 基本判断步骤:
-
分裂(第八、九、十步)
-
计算类内标准差向量(第八步)。对每个聚类 j ,求其标准差向量
σ
j
=
(
σ
j
1
σ
j
2
?
σ
j
n
)
t
σ
j
i
=
1
N
j
∑
y
k
∈
S
j
(
y
k
i
?
z
j
i
)
2
\sigma_j=\begin{pmatrix} {\sigma_{j1}}&{\sigma_{j2}}&{\cdots}&{\sigma_{jn}} \end{pmatrix}^t\\ \sigma_{ji}=\sqrt{\frac{1}{N_j}\sum_{y_k\in S_j}(y_{ki}-z_{ji})^2}
σj?=(σj1??σj2????σjn??)tσji?=Nj?1?yk?∈Sj?∑?(yki??zji?)2
? 其中,
σ
j
i
\sigma_{ji}
σji? 是第 j 个聚类第 i 个分量的标准差,
y
k
i
y_{ki}
yki? 是第 j 类中第 k 个样本的第 i 分量,
z
j
i
z_{ji}
zji? 是均值向量
z
j
z_j
zj? 的第 i 个分量, n 是样本特征维数,
j
=
1
,
2
,
…
,
N
c
j=1,2,\dots,N_c
j=1,2,…,Nc? 是聚类数,
i
=
1
,
2
,
…
,
n
i=1,2,\dots,n
i=1,2,…,n 是维数 -
计算每个类的标准差向量最大分量(第九步)
σ
j
?
m
a
x
,
j
=
1
,
2
,
…
,
c
\sigma_{j\ max},j=1,2,\dots,c
σj?max?,j=1,2,…,c -
执行分裂(第十步) 若任一个
σ
j
?
m
a
x
,
j
=
1
,
2
,
…
,
c
\sigma_{j\ max},j=1,2,\dots,c
σj?max?,j=1,2,…,c 有
σ
j
?
m
a
x
>
θ
s
\sigma_{j\ max}>\theta_s
σj?max?>θs? ,并且有 (a)
D
~
j
>
D
~
\widetilde{D}_j>\widetilde{D}
D
j?>D
且
N
j
>
2
θ
N
+
1
N_j>2\theta_N+1
Nj?>2θN?+1 或有 (b)
N
c
≤
K
/
2
N_c≤K/2
Nc?≤K/2 则把
S
j
S_j
Sj? 分裂成两个聚类,其中心相应为
z
j
+
z_j^+
zj+? 与
z
j
?
z_j^-
zj??,把原来的
S
j
S_j
Sj? 取消,且令
N
c
=
N
c
+
1
N_c=N_c+1
Nc?=Nc?+1。 转第二步进行下一轮。 其中
z
j
+
z_j^+
zj+? 与
z
j
?
z_j^-
zj?? 计算方法如下: 给定一 k 值,0<k<1,令
r
j
=
k
σ
j
?
m
a
x
r_j=k\sigma_{j\ max}
rj?=kσj?max?;
z
j
+
=
z
j
+
r
j
z_j^+=z_j+r_j
zj+?=zj?+rj?,
z
j
?
=
z
j
?
r
j
z_j^-=z_j-r_j
zj??=zj??rj?; 其中 k 值应使
S
j
S_j
Sj? 中的样本到
z
j
+
z_j^+
zj+? 与
z
j
?
z_j^-
zj?? 的距离不同,但又应使
S
j
S_j
Sj? 中的样本仍然在分裂后的新样本类中 -
合并(第十一、十二、十三步)
-
计算类间聚类中心距离(第十一步) i 类与 j 类的类间距离为
D
i
j
=
∣
∣
z
i
?
z
j
∣
∣
,
i
=
1
,
2
,
…
,
N
c
?
1
,
j
=
i
+
1
,
i
+
2
,
…
,
N
c
D_{ij}=||z_i-z_j||,i=1,2,\dots,N_c-1,j=i+1,i+2,\dots,N_c
Dij?=∣∣zi??zj?∣∣,i=1,2,…,Nc??1,j=i+1,i+2,…,Nc? -
列出类间距离过近者(第十二步) 比较
D
i
j
D_{ij}
Dij? 与
θ
c
\theta_c
θc? 并将小于
θ
c
\theta_c
θc? 的按上升次序排列如下(该队列最大个数是控制合并对数的参数L)
D
i
1
j
1
<
D
i
2
j
2
<
?
<
D
i
l
j
l
,
l
≤
L
D_{i1j1}<D_{i2j2}<\dots<D_{iljl},l≤L
Di1j1?<Di2j2?<?<Diljl?,l≤L -
执行合并(第十三步) 从类间距离最小的两类开始执行合并过程,此时需将
z
k
l
z_{kl}
zkl? 与
z
j
l
z_{jl}
zjl? 合并,同时执行
N
c
=
N
c
?
1
N_c=N_c-1
Nc?=Nc??1 。 新中心的计算公式如下:
z
l
=
1
N
i
l
+
N
j
l
[
N
i
l
z
i
l
+
N
j
l
z
j
l
]
z_l=\frac{1}{N_{il}+N_{jl}}[N_{il}z_{il}+N_{jl}z_{jl}]
zl?=Nil?+Njl?1?[Nil?zil?+Njl?zjl?] -
结束(第十四步)
- 如是最后一次迭代则终止
- 否则可根据需要转第一步或第二步(转第一步是为了更改控制数),同时迭代计数加 1
-
算法流程图 -
优点:
-
缺点:
-
ISODATA 与 K-均值算法比较
| K-均值算法 | ISODATA算法 |
---|
聚类中心通过样本均值迭代运算决定 | 是 | 是 | 聚类中心数可变 | 否 | 是 | 结果受初始聚类中心影响 | 是 | 否 | 算法复杂度 | 简单 | 复杂 | 结果受模式样本几何性质影响 | 是 | 是 |
2.X 补充聚类算法
-
基于密度的聚类算法
-
基本思想:
- 区域内点的密度大于某个阈值时,把它加到邻近的聚类中
- 在一个给定半径
ε
\varepsilon
ε 的邻域中,至少要包含最小数目个对象
-
优点:
-
代表算法: DBSCAN、OPTICS、DENCLUE -
DBSCAN
2.6 聚类结果的评价
- 迅速评价聚类结果,在上述迭代运算中是很重要的,特别是具有高维特征向量的模式,不能直接看清聚类效果,因此,可考虑用以下几个指标来评价聚类效果:
-
聚类中心之间的距离
-
聚类域中的样本数目
-
聚类域内样本的距离方差
-
方差过大的样本可考虑是否属于这一类
p
1
,
p
2
,
…
,
p
n
,
p
1
=
q
,
p
n
=
p
p_1,p_2,\dots,p_n,p_1=q,p_n=p
p1?,p2?,…,pn?,p1?=q,pn?=p ,对于
p
i
∈
D
(
1
≤
i
≤
n
)
p_i\in D(1≤i≤n)
pi?∈D(1≤i≤n) ,
p
i
+
1
p_{i+1}
pi+1? 是从
p
i
p_i
pi? 关于Eps和MinPts直接密度可达的,则对象 p 是从对象 q 关于Eps和MinPts密度可达的(density-reachable)。q 是核心对象。 -
密度相连:如果存在对象
O
∈
D
O\in D
O∈D ,使对象 p 和 q 都是从 O 关于Eps和MinPts密度可达的,那么对象 p 到 q 是关于Eps和MinPts密度相连的(density-connected) -
DBSCAN算法原理
- DBSCAN通过检查数据集中每点的Eps邻域来搜索簇,如果点 p 的Eps邻域包含的点多于MinPts个,则创建一个以 p 为核心对象的簇
- 然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并
- 当没有新的点添加到任何簇时,该过程结束
-
DBSCAN算法描述
- 输入:包含 n 个对象的数据库,半径
ε
\varepsilon
ε ,最少数目MinPts
- 输出:所有生成的簇,达到密度要求
- REPEAT
- 从数据库中抽取一个未处理过的点
- IF抽出的点是核心点 THEN找出所有从该点密度可达的对象,形成一个簇
- ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点
- UNTIL 所有点都被处理
-
DBSCAN允许效果
-
优点
- 基于密度定义,相对抗噪音,能处理任意形状和大小的簇
-
缺点
- 当簇的密度变化太大时,会有麻烦
- 对于高维问题,密度定义是个比较麻烦的问题
- 参数的确定需要尝试或者先验知识
2.6 聚类结果的评价
- 迅速评价聚类结果,在上述迭代运算中是很重要的,特别是具有高维特征向量的模式,不能直接看清聚类效果,因此,可考虑用以下几个指标来评价聚类效果:
- 聚类中心之间的距离
- 聚类域中的样本数目
- 聚类域内样本的距离方差
- 模式聚类目前还没有一种通用的放之四海而皆准的准则,往往需要根据实际应用来选择合适的方法
|