原型聚类——
K
−
m
e
a
n
s
K-means
K−means
输入:样本集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\left\{x_{1},x_{2},...,x_{m}\right\}
D={x1,x2,...,xm},聚类簇数
k
k
k
输出:簇划分
过程:随机选择
k
k
k个样本作为初始聚类均值向量,计算每个样本到聚类均值向量的距离,将样本划分到离均值向量最近的簇中,重新计算聚类均值向量。重复上述过程,直到聚类均值向量不再变化或者达到迭代次数。
原型聚类——
L
V
Q
LVQ
LVQ
输入:样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\left\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\right\}
D={(x1,y1),(x2,y2),...,(xm,ym)},原型向量个数
q
q
q,各原型向量预设类别标记,学习率
η
\eta
η
输出:簇划分原型向量(簇之间的分割线)
过程:随机选择
q
q
q个样本作为初始原型向量,随机选择一个样本
(
x
j
,
y
j
)
(x_{j},y_{j})
(xj,yj),计算其到
q
q
q个原型向量之间的距离,若距离最近的那个原型向量
q
i
∗
q_{i^*}
qi∗的预设类别标记与该样本的标记
y
j
y_{j}
yj相同,更新原型向量
q
i
=
q
i
+
η
∗
(
x
j
−
q
i
)
q_{i}=q_{i}+\eta*(x_{j}-q_{i})
qi=qi+η∗(xj−qi),即原型向量靠近该样本,若不同,更新原型向量
q
i
=
q
i
−
η
∗
(
x
j
−
q
i
)
q_{i}=q_{i}-\eta*(x_{j}-q_{i})
qi=qi−η∗(xj−qi),即原型向量远离该样本。重复上述过程,直至达到最大迭代次数或者原型向量更新很小或不再更新。
密度聚类——
D
B
S
C
A
N
DBSCAN
DBSCAN
输入:样本集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\left\{x_{1},x_{2},...,x_{m}\right\}
D={x1,x2,...,xm},邻域参数
(
ϵ
半
径
,
M
i
n
p
o
i
n
t
s
)
(\epsilon半径,Minpoints)
(ϵ半径,Minpoints)
输出:聚类簇
过程:根据邻域参数确定核心对象集合,随机选择一个核心对象,找出由它密度可达的所有样本,形成一个聚类簇。去除聚类簇中包含的核心对象,更新核心对象集合,从新的核心对象集合中随机选择一个核心对象形成下一个聚类簇。重复上述过程,直到核心对象集合为空。
层次聚类——
A
G
N
E
S
AGNES
AGNES
输入:样本集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\left\{x_{1},x_{2},...,x_{m}\right\}
D={x1,x2,...,xm},聚类簇
k
k
k,聚类簇间距离度量函数
d
(
i
,
j
)
=
d
i
s
t
(
C
i
,
C
j
)
d(i,j)=dist(C_{i},C_{j})
d(i,j)=dist(Ci,Cj)
输出:聚类簇
过程:将每个样本都看成一个聚类簇,初始化簇距离矩阵
M
(
i
,
j
)
=
d
(
i
,
j
)
M(i,j)=d(i,j)
M(i,j)=d(i,j),
M
M
M的维度是聚类簇个数*聚类簇的个数,不断合并距离最近的两个聚类簇,减少聚类簇的个数,并更新簇距离矩阵
M
M
M,直达聚类簇个数达到预设个数
k
k
k。