文章目录
1. 标准C-Means
1.1. 基本思路
通过迭代寻找c个聚类的一种划分方案,使这c个聚类的代表点——各类样本的均值所得到的总体误差最小。
假设第
i
i
i类样本集合
τ
i
\tau_i
τi的数目为
N
i
N_i
Ni,则该类样本均值向量为
m
i
\boldsymbol{m_i}
mi的计算公式为:
m
i
=
1
N
i
∑
y
∈
τ
i
y
(1.1)
\begin{aligned} \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \tau_i}\boldsymbol{y} \end{aligned} \tag{1.1}
mi=Ni1y∈τi∑y(1.1)
整个样本空间上的误差平方和为
J
e
=
∑
i
=
1
c
∑
y
∈
τ
i
∣
∣
y
−
m
i
∣
∣
2
(1.2)
\begin{aligned} J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \end{aligned} \tag{1.2}
Je=i=1∑cy∈τi∑∣∣y−mi∣∣2(1.2)
J
e
J_e
Je越小,**说明聚类结果越优。**通常称该类划分结果为:最小方差划分。
1.2. 样本在类间调整思路
假设已经有一个样本划分的方案,将样本
y
\boldsymbol{y}
y从
τ
i
\tau_i
τi划分到
τ
j
\tau_j
τj中,则
τ
i
\tau_i
τi和
τ
j
\tau_j
τj发生了变化而其他样本类没有发生变化,因此,这两类的均值变化情况为:
m
~
i
=
1
N
i
−
1
∑
y
∈
{
τ
i
−
y
′
}
y
m
i
=
1
N
i
∑
y
∈
{
τ
i
}
y
(2.1)
\begin{aligned} \boldsymbol{\widetilde{m}_i}=\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}\\ \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y}\\ \end{aligned} \tag{2.1}
m
i=Ni−11y∈{τi−y′}∑ymi=Ni1y∈{τi}∑y(2.1)
- 对于失去样本的来来说:
用 m ~ i − m i \boldsymbol{\widetilde{m}_i}-\boldsymbol{m_i} m i−mi得到:
m ~ i = m i + ( 1 N i − 1 ∑ y ∈ { τ i − y ′ } y − 1 N i − 1 N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 ( ∑ y ∈ { τ i − y ′ } y − N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 ( N i N i ∑ y ∈ { τ i } ( y − y ′ ) − N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 [ y − m i ] (2.2) \begin{aligned} \boldsymbol{\widetilde{m}_i} =& \boldsymbol{m_i}+(\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{1}{N_i-1} \frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\frac{N_i}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}(\boldsymbol{y}-y')-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}[\boldsymbol{y}-\boldsymbol{m_i}] \end{aligned} \tag{2.2} m i====mi+(Ni−11y∈{τi−y′}∑y−Ni−11NiNi−1y∈{τi}∑y)mi+Ni−11(y∈{τi−y′}∑y−NiNi−1y∈{τi}∑y)mi+Ni−11(NiNiy∈{τi}∑(y−y′)−NiNi−1y∈{τi}∑y)mi+Ni−11[y−mi](2.2) - 对于得到样本的来说:
m ~ k = m k + 1 N k + 1 [ y − m k ] (2.2) \begin{aligned} \boldsymbol{\widetilde{m}_k} =&\boldsymbol{m_k}+\frac{1}{N_k+1}[\boldsymbol{y}-\boldsymbol{m_k}] \end{aligned} \tag{2.2} m k=mk+Nk+11[y−mk](2.2)
对应的,误差平方和也变为:
J ~ i = J i + N i N i − 1 ∣ ∣ y − m i ∣ ∣ 2 J ~ k = J k + N k N k + 1 ∣ ∣ y − m k ∣ ∣ 2 (2.3) \begin{aligned} \widetilde{J}_i =&J_i+\frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2\\ \widetilde{J}_k =&J_k+\frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3} J i=J k=Ji+Ni−1Ni∣∣y−mi∣∣2Jk+Nk+1Nk∣∣y−mk∣∣2(2.3)
如果移出一个样本会带来某一类均方误差的减少,移入这个样本会带来另一类均方误差的增大,如果减少量大于增大量,那么
N
i
N
i
−
1
∣
∣
y
−
m
i
∣
∣
2
>
N
k
N
k
+
1
∣
∣
y
−
m
k
∣
∣
2
(2.3)
\begin{aligned} \frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2 > \frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3}
Ni−1Ni∣∣y−mi∣∣2>Nk+1Nk∣∣y−mk∣∣2(2.3)
则认为该操作是合理的,否则不移动。
1.3. 具体步骤
- 初始划分c个聚类,计算出这c类的均值和总的均方误差和 J e J_e Je。
- 任取一个样本 y \boldsymbol{y} y,设 y ∈ τ i \boldsymbol{y} \in \tau_i y∈τi
- 计算公式(2.3),其中, k k k是除了 i i i之外的所有类。
- 如果移出的损失大于所有移入的损失,则不移动,否则移入损失最小的类中。
- 重新计算这c类的均值和总的均方误差和 J e J_e Je。
- 若连续N次 J e J_e Je都不发生改变,则停止,否则转(2).
1.4. 初始化类的方法
1.4.1 选择代表点
- 经验选择
- 将全部数据随机划分成c类,计算每一类的重心,以重心为代表点。
- 按照样本天然的排列顺序选择c前c个点作为代表
1.4.2 初始类划分
- 根据其余点与代表点的距离进行划分
- 每个代表点自成一类,将样本按顺序归入该类中,每次某一类的数量发生改变,则重新计算该类的重心。
2. IOSDATA
2.1 简介
ISODATA全称为Iterative Self-Organizing Data Analysis Techniques:迭代自组织数据分析技术,可以看做是改进的C-means算法,与C-means的区别在于:
- C-Means在每次样本所属类别发生变化时,就计算一次均值;而ISODATA 则是在全部样本调整完成之后才重新计算各类的均值。
- ISODATA算法在聚类的过程中引入了对类别的评判准则,根据这些准则可以将某些类别合并或者分裂,使得聚类结果更加合理。
2.2 算法流程
2.2.1 符号释义
- 样本集 { y 1 , y 2 , . . . , y N } \{\boldsymbol{y_1}, \boldsymbol{y_2}, ..., \boldsymbol{y_N}\} {y1,y2,...,yN},其中 y i \boldsymbol{y_i} yi代表第 i i i个样本,是一个 1 × d 1 \times d 1×d维的向量。
- K K K:期望得到的聚类数
- θ N \theta_N θN:一个聚类中最少的样本数目
- θ s \theta_s θs:标准偏差参数
- θ c \theta_c θc:合并参数
- L L L:每次迭代允许合并的最大聚类对数
- I I I:允许迭代的次数
2.2.2 算法步骤
- 初始化聚类数目c(不一定要是K),初始化的方法与C均值差不多,选取代表点。
- 判断其余点与代表点的距离,按照距离对其余点进行划分。
- 若某个类 τ j \tau_j τj中样本的数目过少( N j < θ N N_j<\theta_N Nj<θN),则去掉该类,将该类中的样本分配到其他类中,聚类的数目 c = c − 1 c=c-1 c=c−1
- 重新计算每一类的均值。
m j = 1 N j ∑ y ∈ τ j y \boldsymbol{m_j}=\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}\boldsymbol{y} mj=Nj1y∈τj∑y - 计算第
j
j
j类中,样本与该类均值的平均距离:
δ j ˉ = 1 N j ∑ y ∈ τ j ∣ ∣ y − m j ∣ ∣ , j = 1.... c \bar{\delta_j} =\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}||\boldsymbol{y}-\boldsymbol{m_j}||, j=1....c δjˉ=Nj1y∈τj∑∣∣y−mj∣∣,j=1....c
总平均距离:
δ ˉ = 1 N ∑ i = 1 c N i δ i ˉ \bar{\delta} =\frac{1}{N}\sum_{i=1}^{c}N_i \bar{\delta_i} δˉ=N1i=1∑cNiδiˉ - 如果满足迭代次数满足要求,则结束;如果 c ⩽ K / 2 c \leqslant K/2 c⩽K/2,则执行分裂操作 ;如果 c ⩾ 2 K c \geqslant 2K c⩾2K,则执行合并操作。
- 如果是最后一次迭代,停止,否则转向2。
2.2.3 分裂操作
-
对于每个类,求各维标准偏差 σ j = [ σ j 1 , σ j 2 , . . . , σ j d ] T \boldsymbol{\sigma_j}=[\sigma_{j1}, \sigma_{j2},...,\sigma_{jd}]^T σj=[σj1,σj2,...,σjd]T,(大白话就是对第 j j j类中的每一个特征都计算其标准差),具体计算公式为:
σ j i = 1 N ∑ y k ∈ τ j ( y k i − m j i ) \sigma_{ji}=\sqrt{\frac{1}{N}\sum_{\boldsymbol{y}_k \in \tau_j}(y_{ki}-m_{ji})} σji=N1yk∈τj∑(yki−mji)
在上式中, y k i y_{ki} yki为第 k k k个样本的第 i i i个特征, m j i m_{ji} mji代表第 j j j个聚类均值的第 i i i个分量; σ j i \sigma_{ji} σji是第 j j j个类的第 i i i个分量的标准偏差。 -
对每个类,求出标准偏差最大的分量 σ j max , j = 1 , 2 , . . . , c \sigma_{j\max}, j=1,2,...,c σjmax,j=1,2,...,c。(其实就相当于落实到某一个类的某个特征上)
-
对各类的 σ j max \sigma_{j\max} σjmax,如果满足以下条件(注意,这里仅仅是选出了两个代表点而已):
- 存在某个类的 σ j max > θ s \sigma_{j\max}>\theta_s σjmax>θs, δ j ˉ > δ ˉ \bar{\delta_j}>\bar{\delta} δjˉ>δˉ, N j > 2 ( θ N + 1 ) N_j>2(\theta_N+1) Nj>2(θN+1)
- 存在某个类的 σ j max > θ s \sigma_{j\max}>\theta_s σjmax>θs, δ j ˉ > δ ˉ \bar{\delta_j}>\bar{\delta} δjˉ>δˉ, c ⩽ K / 2 c \leqslant K/2 c⩽K/2
将 τ j \tau_{j} τj分成2类,中心分别为 m j + \boldsymbol{m}_j^+ mj+与 m j − \boldsymbol{m}_j^- mj−,此时 c = c + 1 c=c+1 c=c+1,其中, m j + \boldsymbol{m}_j^+ mj+与 m j − \boldsymbol{m}_j^- mj−的计算公式为:
m j + = m j + γ j m j − = m j − γ j \boldsymbol{m}_j^+=\boldsymbol{m}_j + \boldsymbol{\gamma}_j \\ \boldsymbol{m}_j^-=\boldsymbol{m}_j - \boldsymbol{\gamma}_j mj+=mj+γjmj−=mj−γj
γ j = k σ j , k ∈ ( 0 , 1 ] \boldsymbol{\gamma}_j=k\boldsymbol{\sigma}_j, k \in (0,1 ] γj=kσj,k∈(0,1]或者, γ j = [ 0 , . . . , 0 , σ i max , 0 , . . . , 0 ] T \boldsymbol{\gamma}_j=[0,...,0,\sigma_{i\max},0,...,0]^T γj=[0,...,0,σimax,0,...,0]T
2.2.4 合并操作
- 计算各类中心两两之间的距离
δ i j = ∣ ∣ m i − m j ∣ ∣ , i , j = 1 , 2 , . . . , c , i ≠ j \delta_{ij}=||\boldsymbol{m}_i-\boldsymbol{m}_j||, i, j = 1,2,...,c , i \neq j δij=∣∣mi−mj∣∣,i,j=1,2,...,c,i=j - 比较
δ
i
j
\delta_{ij}
δij与
θ
c
\theta_c
θc(合并参数),对**小于
θ
c
\theta_c
θc**的距离排序:
δ i 1 , j 1 < δ i 2 , j 2 , . . . , δ i l , j l \delta_{i_1,j_1}< \delta_{i_2,j_2},...,\delta_{i_l,j_l} δi1,j1<δi2,j2,...,δil,jl - 从最小的
δ
i
1
,
j
1
\delta_{i_1,j_1}
δi1,j1开始把每个
δ
i
l
,
j
l
\delta_{i_l,j_l}
δil,jl对应的
m
i
l
,
m
j
l
m_{i_l},m_{j_l}
mil,mjl合并,组成新类,新的中心为:
m l = 1 N i l + N j l [ N i l m i l + N j l m j l ] m_l=\frac{1}{N_{i_l}+N_{j_l}}[N_{i_l}m_{i_l}+N_{j_l}m_{j_l}] ml=Nil+Njl1[Nilmil+Njlmjl]
3. 基于样本与核相似度的动态聚类算法
3.1 C-Means与IOSDATA面临的问题
如果数据样本的两类分布如下图所示,这个时候两类的均值不能很好的代表一类,虽然二者都服从正态分布,但是方差比较大,那么,在图中A点明显距离第二类比较近,这可能会导致分类错误。
所以,这个时候需要使用其他方法代表每个聚类。
在C-Means中,准则函数为:整个样本空间上的误差平方和为
J
e
=
∑
i
=
1
c
∑
y
∈
τ
i
∣
∣
y
−
m
i
∣
∣
2
(1.2)
J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2}
Je=i=1∑cy∈τi∑∣∣y−mi∣∣2(1.2)
J
e
J_e
Je越小,**说明聚类结果越优。
针对目前这种分布,我们选用的准则函数为:
J
K
=
∑
i
=
1
c
∑
y
∈
τ
j
Δ
(
y
,
K
j
)
(1.2)
J_K=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_j} \Delta (\boldsymbol{y},\boldsymbol{K_j}) \tag{1.2}
JK=i=1∑cy∈τj∑Δ(y,Kj)(1.2)
其中,
Δ
\Delta
Δ表示某种距离度量,
J
K
J_K
JK越小,说明聚类结果越优。
3.2 具体步骤
- 选择初始划分,将样本集划分成 c c c类,确定每类的初始核 K j , j = 1 , 2 , . . . , c K_j, j=1,2,...,c Kj,j=1,2,...,c。
- 按照下列规则将每个样本划分到对应的类中。
Δ ( y , K j ) = min k Δ ( y , K k ) , k = 1 , 2 , . . . , c \Delta (\boldsymbol{y}, \boldsymbol{K_j})=\min_k \Delta (\boldsymbol{y}, \boldsymbol{K_k}), k=1,2,...,c Δ(y,Kj)=kminΔ(y,Kk),k=1,2,...,c
则 y ∈ τ j \boldsymbol{y} \in \tau_j y∈τj - 重新修正核 K j , j = 1 , 2 , . . . , c K_j, j=1,2,...,c Kj,j=1,2,...,c,若 k k k不变,则算法终止,否则转2.
相对的,在C-Means中,类均值对应核,样本到均值的欧式距离相当于 Δ ( y , K j ) \Delta (\boldsymbol{y}, \boldsymbol{K_j}) Δ(y,Kj)
3.3 常用的核函数
3.3.1 正态核函数
如果数据分布类似于下图:
则可选用正态核:
K
j
(
y
,
V
j
)
=
1
(
2
π
)
d
/
2
∣
Σ
j
^
∣
1
/
2
exp
{
−
1
2
(
y
−
m
j
)
T
Σ
j
^
−
1
(
y
−
m
j
)
}
\boldsymbol{K_j} (\boldsymbol{y}, \boldsymbol{V_j})=\frac{1}{(2\pi)^{d/2}|\hat{\Sigma_j}|^{1/2}}\exp\{-\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})\}
Kj(y,Vj)=(2π)d/2∣Σj^∣1/21exp{−21(y−mj)TΣj^−1(y−mj)}
其中,参数集
V
j
\boldsymbol{V_j}
Vj包括:
m
j
,
Σ
j
^
\boldsymbol{m_j}, \hat{\Sigma_j}
mj,Σj^,分别代表第
j
j
j类的样本均值和协方差矩阵。
样本到核的相似性度量为:
Δ
(
y
,
K
j
)
=
1
2
(
y
−
m
j
)
T
Σ
j
^
−
1
(
y
−
m
j
)
+
1
2
log
∣
Σ
j
^
∣
\Delta (\boldsymbol{y}, \boldsymbol{K_j})=\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})+\frac{1}{2}\log|\hat{\Sigma_j}|
Δ(y,Kj)=21(y−mj)TΣj^−1(y−mj)+21log∣Σj^∣
3.3.2 主轴核函数
4. 模糊C-Means方法(Fuzzy C-means, FCM)
4.1 模糊集的基本知识
4.1.1 什么是模糊集
在传统的集合中,一个元素要么属于一个集合,要么不属于一个集合。但是在模糊集中,一个元素可以是以一定程度属于某个集合,也可以以不同程度的属于多个集合。
4.1.2 隶属度函数
隶属度函数是一个对象 x x x隶属于集合A的程度。记为 μ A ( x ) \mu_A(x) μA(x)。自变量是集合A中的所有对象, 0 ≤ μ A ( x ) ≤ 1 0 \leq \mu_A(x) \leq 1 0≤μA(x)≤1。当 μ A ( x ) = 1 \mu_A(x) = 1 μA(x)=1说明 x x x完全属于A; μ A ( x ) = 0 \mu_A(x) =0 μA(x)=0说明 x x x完全不属于A。
模糊集合A:
对于有限个对象
x
1
,
x
2
,
.
.
.
,
x
n
x_1, x_2, ..., x_n
x1,x2,...,xn来说,若这
n
n
n个值都可能存在于集合A中,则模糊集合A可以表示为:
A
=
{
(
μ
A
(
x
i
)
,
x
i
)
}
(4.1)
A=\{(\mu_A(\boldsymbol{x_i}), \boldsymbol{x_i})\} \tag{4.1}
A={(μA(xi),xi)}(4.1)
或者
A
=
⋃
i
μ
i
/
x
i
(4.2)
A=\bigcup _i\mu_i/ \boldsymbol{x_i} \tag{4.2}
A=i⋃μi/xi(4.2)
支持集
S
(
A
)
S(A)
S(A):
空间X中A的隶属度大于0的对象的集合。
S
(
A
)
=
{
x
,
x
∈
X
,
μ
A
(
x
)
>
0
}
(4.3)
S(A)=\{\boldsymbol{x}, \boldsymbol{x} \in X, \mu_A(\boldsymbol{x})>0\} \tag{4.3}
S(A)={x,x∈X,μA(x)>0}(4.3)
4.3 算法思想
4.3.1 符号说明
- n n n个样本集合: { x i , i = 1 , 2 , . . . , 3 } \{\boldsymbol{x_i}, i=1,2,...,3\} {xi,i=1,2,...,3}
- 预定类别的数目: c c c
- 每个聚类的中心: m i , i = 1 , 2 , . . . , c \boldsymbol{m_i}, i=1,2,...,c mi,i=1,2,...,c
- 第 i i i个样本对于第 j j j类的隶属度: μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)
(因为模糊集表示的是样本属于某个类的程度,所以要考虑所有的样本)
模糊C-means的聚类损失函数可以写成:
J
f
=
∑
j
=
1
c
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
2
(4.4)
J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \tag{4.4}
Jf=j=1∑ci=1∑n[μj(xi)]b∣∣xi−mj∣∣2(4.4)
C-means中的聚类损失函数为:
J
e
=
∑
i
=
1
c
∑
y
∈
τ
i
∣
∣
y
−
m
i
∣
∣
2
(1.2)
J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2}
Je=i=1∑cy∈τi∑∣∣y−mi∣∣2(1.2)
在公式4.4中, b b b代表控制聚类结果模糊程度的常数,通常为2。
- b = 1 b=1 b=1:等同于C-means的确定性聚类结果
- b > 1 b>1 b>1:控制模糊程度的聚类结果
- b → ∞ b \rightarrow \infty b→∞:完全模糊的解,各类算法都收敛到训练样本的中心,所有样本都以等同的概率归属各个类,所以没有聚类的意义。
4.3.2 FCM的损失函数
要求一个样本对于各个聚类的隶属度之和为1,用公式表示为
∑
j
=
1
c
μ
j
(
x
i
)
=
1
,
i
=
1
,
2
,
.
.
.
,
n
\sum_{j=1}^c\mu_j(\boldsymbol{x_i})=1, i=1,2,...,n
∑j=1cμj(xi)=1,i=1,2,...,n,结合限制条件,可以求得:
min
J
f
=
∑
j
=
1
c
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
2
s
.
t
.
∑
j
=
1
c
[
μ
j
(
x
i
)
]
=
1
,
i
=
1
,
2
,
.
.
.
,
n
(4.5)
\min J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \\ s.t. \sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n \tag{4.5}
minJf=j=1∑ci=1∑n[μj(xi)]b∣∣xi−mj∣∣2s.t.j=1∑c[μj(xi)]=1,i=1,2,...,n(4.5)
引入n个拉格朗日因子:
min
J
f
=
∑
j
=
1
c
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
2
−
∑
i
=
1
n
λ
i
(
∑
j
=
1
c
[
μ
j
(
x
i
)
]
−
1
)
(4.6)
\min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n\lambda_i(\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-1) \tag{4.6}
minJf=j=1∑ci=1∑n[μj(xi)]b∣∣xi−mj∣∣2−i=1∑nλi(j=1∑c[μj(xi)]−1)(4.6)
对均值
m
j
\boldsymbol{m_j}
mj求导有:
∂
J
f
∂
m
j
=
−
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
=
−
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
x
i
+
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
m
j
m
j
=
[
μ
j
(
x
i
)
]
b
x
i
[
μ
j
(
x
i
)
]
b
(4.7)
\begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{4.7}
∂mj∂Jfmj=−2i=1∑n[μj(xi)]b∣∣xi−mj∣∣=−2i=1∑n[μj(xi)]bxi+2i=1∑n[μj(xi)]bmj=[μj(xi)]b[μj(xi)]bxi(4.7)
对隶属度
μ
j
(
x
j
)
\mu_j(\boldsymbol{x_j})
μj(xj)求导,记
μ
j
(
x
j
)
\mu_j(\boldsymbol{x_j})
μj(xj)为
μ
j
i
\mu_{ji}
μji,后一半的求导结果为:
∂
J
f
∂
μ
j
i
=
−
∂
∂
μ
j
i
∑
i
=
1
n
λ
i
(
∑
j
=
1
c
[
μ
j
i
]
−
1
)
=
−
∂
∂
μ
j
i
∑
i
=
1
n
(
∑
j
=
1
c
λ
i
[
μ
j
i
]
−
λ
i
)
=
−
∑
i
=
1
n
∑
j
=
1
c
λ
i
=
−
∑
i
=
1
n
c
λ
i
(4.8)
\begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n c \lambda_i \end{aligned} \tag{4.8}
∂μji∂Jf=−∂μji∂i=1∑nλi(j=1∑c[μji]−1)=−∂μji∂i=1∑n(j=1∑cλi[μji]−λi)=−i=1∑nj=1∑cλi=−i=1∑ncλi(4.8)
前一半的求导结果为:
∂
J
f
∂
μ
j
i
=
∑
i
=
1
n
∑
j
=
1
c
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
\begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \end{aligned}
∂μji∂Jf=i=1∑nj=1∑cbμjib−1∣∣xi−mj∣∣2
即令:
∂
J
f
∂
μ
j
i
=
∑
i
=
1
n
∑
j
=
1
c
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
−
∑
i
=
1
n
c
λ
i
=
0
=
∑
i
=
1
n
(
∑
j
=
1
c
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
−
c
λ
i
)
=
0
(4.9)
\begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2-\sum_{i=1}^n c \lambda_i=0\\ &=\sum_{i=1}^n (\sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i) = 0\\ \end{aligned} \tag{4.9}
∂μji∂Jf=i=1∑nj=1∑cbμjib−1∣∣xi−mj∣∣2−i=1∑ncλi=0=i=1∑n(j=1∑cbμjib−1∣∣xi−mj∣∣2−cλi)=0(4.9)
即相当于:
∑
j
=
1
c
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
−
c
λ
i
=
0
∑
j
=
1
c
(
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
−
λ
i
)
=
0
⇒
b
μ
j
i
b
−
1
∣
∣
x
i
−
m
j
∣
∣
2
−
λ
i
=
0
⇒
μ
j
i
=
(
λ
i
b
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
(4.10)
\begin{aligned} \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i =& 0\\ \sum_{j=1}^c (b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i)=& 0 \\ \Rightarrow b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i =& 0 \\ \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \end{aligned} \tag{4.10}
j=1∑cbμjib−1∣∣xi−mj∣∣2−cλi=j=1∑c(bμjib−1∣∣xi−mj∣∣2−λi)=⇒bμjib−1∣∣xi−mj∣∣2−λi=⇒μji=000(b∣∣xi−mj∣∣2λi)b−11(4.10)
因为:
∑
j
=
1
c
[
μ
j
i
]
=
1
\sum_{j=1}^c[\mu_{ji}]=1
j=1∑c[μji]=1
所以(等式4.11中,注意
λ
i
1
b
−
1
\lambda_i^{\frac{1}{b-1}}
λib−11实际上是在分母的位置)
∑
j
=
1
c
(
λ
i
b
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
=
1
(
λ
i
b
∣
∣
x
i
−
m
1
∣
∣
2
)
1
b
−
1
+
.
.
.
+
(
λ
i
b
∣
∣
x
i
−
m
c
∣
∣
2
)
1
b
−
1
=
1
∑
j
=
1
c
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
−
1
b
−
1
(
λ
i
)
−
1
b
−
1
=
1
∑
j
=
1
c
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
−
1
b
−
1
=
(
λ
i
)
−
1
b
−
1
1
∑
j
=
1
c
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
−
1
b
−
1
=
(
λ
i
)
1
b
−
1
1
∑
j
=
1
c
(
1
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
)
1
b
−
1
=
(
λ
i
)
1
b
−
1
(4.11)
\begin{aligned} \sum_{j=1}^c( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}}&=1 \\ ( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_1}||^2})^{\frac{1}{b-1}}+...+( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_c}||^2})^{\frac{1}{b-1}}&=1 \\ \frac{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}{(\lambda_i)^{\frac{-1}{b-1}}}&=1 \\ \sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}&=(\lambda_i)^{\frac{-1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \end{aligned} \tag{4.11}
j=1∑c(b∣∣xi−mj∣∣2λi)b−11(b∣∣xi−m1∣∣2λi)b−11+...+(b∣∣xi−mc∣∣2λi)b−11(λi)b−1−1∑j=1c(b∣∣xi−mj∣∣2)b−1−1j=1∑c(b∣∣xi−mj∣∣2)b−1−1∑j=1c(b∣∣xi−mj∣∣2)b−1−11=∑j=1c((b∣∣xi−mj∣∣2)1)b−111==1=1=1=(λi)b−1−1(λi)b−11(λi)b−11(4.11)
将4.11代入4.10
⇒
μ
j
i
=
(
λ
i
b
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
=
1
∑
j
=
1
c
(
1
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
)
1
b
−
1
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
=
1
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
∑
j
=
1
c
(
1
(
b
∣
∣
x
i
−
m
j
∣
∣
2
)
)
1
b
−
1
=
1
(
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
∑
j
=
1
c
(
1
(
∣
∣
x
i
−
m
j
∣
∣
2
)
)
1
b
−
1
(4.12)
\begin{aligned} \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \\\\ =& \frac{ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}} }{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}}\\\\ =& \frac{ \frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} }\\\\ =& \frac{ \frac{1}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{4.12}
⇒μji====(b∣∣xi−mj∣∣2λi)b−11(b∣∣xi−mj∣∣2)b−11∑j=1c((b∣∣xi−mj∣∣2)1)b−111∑j=1c((b∣∣xi−mj∣∣2)1)b−11(b∣∣xi−mj∣∣2)b−111∑j=1c((∣∣xi−mj∣∣2)1)b−11(∣∣xi−mj∣∣2)b−111(4.12)
4.3.3 具体步骤
- 设定聚类数目c和参数b
- 初始化各个聚类的中心 m i \boldsymbol{m_i} mi
- 重复下列运算,直到各个样本的隶属度稳定
- 根据聚类中心 m j \boldsymbol{m_j} mj计算隶属度函数 μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)
- 使用隶属度函数 μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)更新隶属度。
5. 改进后的模糊C-Means方法
5.1 算法思想
FZM算法从样本的归属性方面进行了改进,但是针对野点的情况无法有效的解决。设想这样一种情况,某个样本远离各类的聚类中心,而FCM中要求该样本对于各类的隶属度之和为1,即 ∑ j = 1 c [ μ j ( x i ) ] = 1 , i = 1 , 2 , . . . , n \sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n ∑j=1c[μj(xi)]=1,i=1,2,...,n,这样某个野点对最终的迭代效果具有很大的影响。
因此,为了克服此类情况,人们对限制条件进行了修改:
∑
j
=
1
c
∑
i
=
1
n
[
μ
j
(
x
i
)
]
=
n
,
i
=
1
,
2
,
.
.
.
,
n
(5.1)
\sum_{j=1}^{c}\sum_{i=1}^{n}[\mu_j(\boldsymbol{x_i})]=n, i=1,2,...,n \tag{5.1}
j=1∑ci=1∑n[μj(xi)]=n,i=1,2,...,n(5.1)
在该条件下,拉格朗日函数为:
min
J
f
=
∑
j
=
1
c
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
2
−
∑
i
=
1
n
λ
i
(
∑
k
=
1
n
∑
j
=
1
c
[
μ
j
(
x
i
)
]
−
n
)
(5.2)
\min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n \lambda_i(\sum_{k=1}^n\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-n) \tag{5.2}
minJf=j=1∑ci=1∑n[μj(xi)]b∣∣xi−mj∣∣2−i=1∑nλi(k=1∑nj=1∑c[μj(xi)]−n)(5.2)
对均值
m
j
\boldsymbol{m_j}
mj求导结果不变,仍然为:
∂
J
f
∂
m
j
=
−
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
∣
∣
x
i
−
m
j
∣
∣
=
−
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
x
i
+
2
∑
i
=
1
n
[
μ
j
(
x
i
)
]
b
m
j
m
j
=
[
μ
j
(
x
i
)
]
b
x
i
[
μ
j
(
x
i
)
]
b
(5.3)
\begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{5.3}
∂mj∂Jfmj=−2i=1∑n[μj(xi)]b∣∣xi−mj∣∣=−2i=1∑n[μj(xi)]bxi+2i=1∑n[μj(xi)]bmj=[μj(xi)]b[μj(xi)]bxi(5.3)
对隶属度
μ
j
(
x
j
)
\mu_j(\boldsymbol{x_j})
μj(xj)求导,记
μ
j
(
x
j
)
\mu_j(\boldsymbol{x_j})
μj(xj)为
μ
j
i
\mu_{ji}
μji,前一半的结果不变,后一半的求导结果为:
∂
J
f
∂
μ
j
i
=
−
∂
∂
μ
j
i
∑
i
=
1
n
λ
i
(
∑
k
=
1
n
∑
j
=
1
c
[
μ
j
i
]
−
1
)
=
−
∂
∂
μ
j
i
∑
i
=
1
n
(
∑
k
=
1
n
∑
j
=
1
c
λ
i
[
μ
j
i
]
−
λ
i
)
=
−
∑
i
=
1
n
∑
k
=
1
n
∑
j
=
1
c
λ
i
=
−
∑
i
=
1
n
∑
k
=
1
n
c
λ
i
(5.4)
\begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{k=1}^n\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{k=1}^n\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{k=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n \sum_{k=1}^n c \lambda_i \end{aligned} \tag{5.4}
∂μji∂Jf=−∂μji∂i=1∑nλi(k=1∑nj=1∑c[μji]−1)=−∂μji∂i=1∑n(k=1∑nj=1∑cλi[μji]−λi)=−i=1∑nk=1∑nj=1∑cλi=−i=1∑nk=1∑ncλi(5.4)
后面的推导思想同(4.9)~(4.12),最后的结果为:
⇒
μ
j
i
=
n
(
∣
∣
x
i
−
m
j
∣
∣
2
)
1
b
−
1
∑
j
=
1
c
∑
k
=
1
n
(
1
(
∣
∣
x
i
−
m
j
∣
∣
2
)
)
1
b
−
1
(5.5)
\begin{aligned} \Rightarrow \mu_{ji} =& \frac{ \frac{n}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c\sum_{k=1}^n (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{5.5}
⇒μji=∑j=1c∑k=1n((∣∣xi−mj∣∣2)1)b−11(∣∣xi−mj∣∣2)b−11n(5.5)
5.2 改进FCM的缺点
- 与C-means一样,仍然对聚类的初始值十分敏感,通常将使用C-means或者FCM处理样本后得到的结果作为初始值。
- 如果在迭代过程中出现某个聚类中心距离某个样本非常近,则最后可能得到只包含这一个样本的聚类
6. 参考文献
- 模式识别-张学工
- 模糊C均值聚类的公式推导
- 模糊C均值论文