在介绍模糊聚类之前,首先说一下k-means聚类模型。
k-means
这是聚类算法中很常用的一种,算法最大的特点是简单易懂:
- 事先设置好聚类中心 C C C 的数量 K K K,并初始化这 K K K 个聚类中心的位置 C 0 = { c 1 , c 2 , . . , c i . . , c k } C^{0}=\{c_{1},c_{2},..,c_{i}..,c_{k}\} C0={c1,c2,..,ci..,ck}; 输入数据集为 X X X;
- 这样可以算出每个数据点与每个聚类中心的距离: d i s t ( c i , x ) dist(c_{i},x) dist(ci,x),每个点都能得到 k k k 个距离,选取最近的那个距离,把这个点归到该类。
- 将数据集 X X X 中所有点分好类,计算每类所有点的中心点,作为该类新的聚类中心 C n e w C^{new} Cnew。
- 当满足要求的迭代条件,就得到最后的聚类结果;如果没有满足条件,从第2步继续重复。
迭代的条件可根据具体情况自行设定,其中比较运用广泛的有:
J
(
C
)
=
∑
i
=
1
K
∑
x
∈
c
i
d
i
s
t
(
c
i
,
x
)
2
J(C)=\sum^{K}_{i=1}\sum_{x \in c_{i}}{dist(c_{i},x)}^{2}
J(C)=i=1∑Kx∈ci∑dist(ci,x)2
我们更喜欢 J ( C ) J(C) J(C) 小的那个。
很明显k-means把每个待辨识的对象严格划分到某个类中,具有非此即彼的特性,我们称之为硬聚类。然而实际上大多数的对象没有这么严格的区别,具有亦此亦彼的性质,其需要一种更能体现该性质的聚类算法。因此研究者将“隶属度”引入聚类,将硬聚类算法推广成模糊聚类算法 。
模糊C均值算法(FCM)
-
首先是模糊集,隶属度的概念:
若对论域(研究范围) D D D 中任一元素 x x x,都有一个数 U ( x ) ∈ [ 0 , 1 ] U(x)∈[0,1] U(x)∈[0,1] 与之对应,则称 U U U 为 D D D 上的模糊集, U ( x ) U(x ) U(x) 称为 x x x 对 D D D 的隶属度。
图1当 x x x 在 D D D 中变动时, U ( x ) U( x) U(x)就是一个函数,称为 U U U 的隶属函数。隶属度 U ( x ) U(x) U(x) 越接近于1,表示 x x x 属于 U U U 的程度越高, U ( x ) U(x) U(x)越接近于0表示 x x x 属于 U U U 的程度越低。用取值于区间 ( 0 , 1 ) (0,1) (0,1) 的隶属函数 U ( x ) U(x) U(x)表征 x 属于U的程度高低。
图1表示温度有三个隶属度函数,分别是低,正常,和高;如当温度是100的时候,正常的隶属度函数值最高,表示此时’应该‘是正常温度。
-
FCM与硬聚类的不同,就是用一个隶属度矩阵 U = [ u i s ] U=[u_{is}] U=[uis]来表示每个对象属于每个类的程度大小,模糊聚类的目标函数:
J ( U , C ) = ∑ s = 1 N ∑ i = 1 K ( u i s ) m ∗ d i s t ( c i , x s ) 2 ( 2.1 ) J(U,C)=\sum^{N}_{s=1}\sum_{i=1}^{K}{(u_{is})^{m}*dist(c_{i},x_{s})}^{2} \quad (2.1) J(U,C)=s=1∑Ni=1∑K(uis)m∗dist(ci,xs)2(2.1)
N是数据集大小,K是聚类中心个数,m 是加权指数。也就是说模糊聚类的目 标函数 J(U,C) 就是各个数据点到每个聚类中心的加权平方和。模糊聚类除了计算聚类中心 C 之外,并不会直接将数据点归到某一类中,而是计算隶属度矩阵 U,取 { i , u } = m a x i { U } \{i,u\}=max_{i}\{U\} {i,u}=maxi{U}
上述问题即为:在隶属度 ∑ i = 1 K u i s = 1 \sum_{i=1}^{K}{u_{is}}=1 ∑i=1Kuis=1 的约束条件下,求:
m i n { J ( U , C ) } = m i n { ∑ s = 1 N ∑ i = 1 K ( u i s ) m ∗ d i s t ( c i , x s ) 2 } = m i n { ∑ i = 1 K ( u i s ) m ∗ d i s t ( c i , x s ) 2 } min\{J(U,C)\}=min\{\sum^{N}_{s=1}\sum_{i=1}^{K}{(u_{is})^{m}*dist(c_{i},x_{s})}^{2}\}=min\{ \sum_{i=1}^{K}{(u_{is})^{m}*dist(c_{i},x_{s})}^{2}\} min{J(U,C)}=min{s=1∑Ni=1∑K(uis)m∗dist(ci,xs)2}=min{i=1∑K(uis)m∗dist(ci,xs)2}
拉格朗日方法可解:
F = ∑ i = 1 K ( u i s ) m ∗ d i s t i s 2 + λ ( ∑ i = 1 K u i s − 1 ) ∂ F ∂ u i s = m ∗ u i s m − 1 ∗ d i s t i s 2 − λ = 0 ⇒ u i s = ( λ m ) 1 m − 1 ( 1 d i s t i s 2 ) 1 m − 1 ( 2.2.1 ) ∂ F ∂ λ = ( ∑ i = 1 K u i s − 1 ) = 0 将 ( 2.2.1 ) 带 入 本 式 : ∑ i = 1 K ( λ m ) 1 m − 1 ( 1 d i s t i s 2 ) 1 m − 1 − 1 = 0 ⇒ ( λ m ) 1 m − 1 = 1 ∑ i = 1 K ( d i s t i s 2 ) 1 m − 1 将 本 式 再 代 入 ( 2.2.1 ) 得 : u i s = 1 ∑ j = 1 K ( d i s t i s 2 d i s t j s 2 ) − 2 m − 1 ( 2.2.2 ) F = \sum_{i=1}^{K}{(u_{is})^{m}*dist_{is}^{2}}+\lambda(\sum_{i=1}^{K}{u_{is}}-1) \\ \frac{\partial F}{\partial u_{is}}=m*u_{is}^{m-1}*dist_{is}^{2}-\lambda=0 \quad \Rightarrow \quad u_{is}=(\frac{\lambda}{m})^{\frac{1}{m-1}}(\frac{1}{dist_{is}^{2}})^{\frac{1}{m-1}} \quad (2.2.1) \\ \frac{\partial F}{\partial\lambda}= (\sum_{i=1}^{K}{u_{is}}-1)=0 \quad 将(2.2.1)带入本式: \\ \sum_{i=1}^{K}{(\frac{\lambda}{m})^{\frac{1}{m-1}}(\frac{1}{dist_{is}^{2}})^{\frac{1}{m-1}} -1}=0 \quad \Rightarrow \quad (\frac{\lambda}{m})^{\frac{1}{m-1}}=\frac{1}{\sum_{i=1}^{K}(dist_{is}^{2})^{\frac{1}{m-1}}} \\ 将本式再代入(2.2.1)得:u_{is}=\frac{1}{\sum_{j=1}^{K}(\frac{dist_{is}^{2}}{dist_{js}^{2}})^{-\frac{2}{m-1}}} \quad (2.2.2) F=i=1∑K(uis)m∗distis2+λ(i=1∑Kuis−1)∂uis∂F=m∗uism−1∗distis2−λ=0⇒uis=(mλ)m−11(distis21)m−11(2.2.1)∂λ∂F=(i=1∑Kuis−1)=0将(2.2.1)带入本式:i=1∑K(mλ)m−11(distis21)m−11−1=0⇒(mλ)m−11=∑i=1K(distis2)m−111将本式再代入(2.2.1)得:uis=∑j=1K(distjs2distis2)−m−121(2.2.2)
得到隶属度矩阵U。聚类中心C的求解:
∂ J ( U , C ) ∂ c i = ∑ s = 1 N ∑ i = 1 K ( u i s ) m ∗ ∂ d i s t ( c i , x s ) 2 ∂ c i . d i s t ( c i , x s ) 2 = ∣ ∣ c i − x s ∣ ∣ A = ( c i − x s ) T A ( c i − x s ) , A 为 权 重 , 则 : . ∂ J ( U , C ) ∂ c i = ∑ s = 1 N u i s m ∂ ( c i − x s ) T A ( c i − x s ) ∂ c i = ∑ s = 1 N u i s m ( 2 A ( c i − x s ) ) = 0 , 得 : 2 A ( ∑ s = 1 N u i s m c i − ∑ s = 1 N u i s m x s ) = 0 ⇒ c i = ∑ s = 1 N u i s m x s ∑ s = 1 N u i s m ( 2.2.3 ) \frac{\partial J(U,C)}{\partial c_{i}}=\frac{\sum^{N}_{s=1}\sum_{i=1}^{K}{(u_{is})^{m}*\partial dist(c_{i},x_{s})}^{2}}{\partial c_{i}} \\ . \\ dist(c_{i},x_{s})^{2}=||c_{i}-x_{s}||_{A}=(c_{i}-x_{s})^{T}A(c_{i}-x_{s}), \quad A 为权重,则:\\ . \\ \\ \frac{\partial J(U,C)}{\partial c_{i}}=\sum_{s=1}^{N}{u_{is}^{m}}\frac{\partial (c_{i}-x_{s})^{T}A(c_{i}-x_{s})}{\partial c_{i}}=\sum_{s=1}^{N}{u_{is}^{m}}(2A(c_{i}-x_{s}))=0, \quad 得:\\ 2A(\sum_{s=1}^{N}u_{is}^{m}c_{i}-\sum_{s=1}^{N}u_{is}^{m}x_{s})=0 \quad \Rightarrow \quad c_{i}=\frac{\sum_{s=1}^{N}u_{is}^{m}x_{s}}{\sum_{s=1}^{N}u_{is}^{m}} \quad (2.2.3) ∂ci∂J(U,C)=∂ci∑s=1N∑i=1K(uis)m∗∂dist(ci,xs)2.dist(ci,xs)2=∣∣ci−xs∣∣A=(ci−xs)TA(ci−xs),A为权重,则:.∂ci∂J(U,C)=s=1∑Nuism∂ci∂(ci−xs)TA(ci−xs)=s=1∑Nuism(2A(ci−xs))=0,得:2A(s=1∑Nuismci−s=1∑Nuismxs)=0⇒ci=∑s=1Nuism∑s=1Nuismxs(2.2.3)
可以发现U和C是相互关联,彼此包含的。在算法初始时既没有U也没有C,这个时候就要先自赋值给其中一个变量,再根据公式(2.2.2),(2.2.3)得到另一个变量,这样U,C不断迭代和更新,向着目标函数 J ( U , C ) J(U,C) J(U,C)不断减小的方向走,最终达到一个稳定状态,这个状态下的U,C的值就是最终的隶属度矩阵和聚类中心。
可能性C-均值聚类(PCM)
PCM是FCM的一种改进。从上一节可知FCM会计算每个数据点对每个类的隶属度,且
∑
i
=
1
K
u
i
s
=
1
,
u
i
s
>
0
\sum_{i=1}^{K}{u_{is}}=1,u_{is}>0
∑i=1Kuis=1,uis>0,也就是说默认每个数据点都在不同程度上属于每个类。然而实际的情况是不一定的,比如西红柿可以是水果,也可以是蔬菜,但不可能属于肉类。不准确的隶属度会影响聚类中心的位置,求得的聚类中心又会反过来影响隶属度的取值。当数据存在噪声的时候,FCM算法准确度会大大降低。
Krishnapuram提出了可能性C-均值聚类(PCM1),其放弃了FCM的可能性约束条件,改为:
0
<
∑
s
=
1
N
u
i
s
<
=
N
,
f
o
r
a
l
l
i
,
a
n
d
m
a
x
i
{
u
i
s
}
>
0
,
f
o
r
a
l
l
s
0<\sum_{s=1}^{N}{u_{is}}<=N , for \quad all \quad i , \quad and \\ max_{i}\{{u_{is}}\}>0,for \quad all \quad s
0<s=1∑Nuis<=N,foralli,andmaxi{uis}>0,foralls
构造了一个新的目标函数:
J
(
U
,
C
)
=
∑
i
=
1
K
∑
s
=
1
N
(
u
i
s
)
m
∗
d
i
s
t
(
c
i
,
x
s
)
2
+
∑
i
=
1
K
η
i
∑
s
=
1
N
(
1
−
u
i
s
)
m
(
3.1
)
J(U,C)=\sum_{i=1}^{K}\sum^{N}_{s=1}{(u_{is})^{m}*dist(c_{i},x_{s})}^{2} +\sum_{i=1}^{K}\eta _{i}\sum^{N}_{s=1}(1-u_{is})^{m} \quad (3.1) \\
J(U,C)=i=1∑Ks=1∑N(uis)m∗dist(ci,xs)2+i=1∑Kηis=1∑N(1−uis)m(3.1)
η
\eta
η取值为:
η
i
=
∑
s
=
1
N
u
i
s
m
∗
d
i
s
t
(
c
i
,
x
s
)
2
∑
s
=
1
N
u
i
s
m
\eta_{i}=\frac{\sum^{N}_{s=1}u_{is}^{m}*dist(c_{i},x_{s})^{2}}{\sum^{N}_{s=1}u_{is}^{m}} \\
ηi=∑s=1Nuism∑s=1Nuism∗dist(ci,xs)2
这里的
η
\eta
η一般是先用FCM算法得出的
U
,
C
U,C
U,C直接计算作为定值。
目标函数的极值求法与FCM时相同:
∂
J
(
U
,
C
)
∂
u
i
s
=
m
∗
u
i
s
m
−
1
∗
d
i
s
t
(
c
i
,
x
s
)
2
−
m
η
i
(
1
−
u
i
s
)
m
−
1
=
0
⇒
u
i
s
=
1
1
+
(
d
i
s
t
2
η
i
)
1
m
−
1
\frac{\partial J(U,C)}{\partial u_{is}}= m*u_{is}^{m-1}*dist(c_{i},x_{s})^{2} -m\eta_{i}(1-u_{is})^{m-1}=0 \\ \Rightarrow \quad u_{is}=\frac{1}{1+(\frac{dist^{2}}{\eta_{i}})^{\frac{1}{m-1}}}
∂uis∂J(U,C)=m∗uism−1∗dist(ci,xs)2−mηi(1−uis)m−1=0⇒uis=1+(ηidist2)m−111
通过不段迭代 U U U和 C C C ,直到目标函数到达一个稳定状态。
目标函数3.1的第一项与FCM的目标函数2.1是相同的,是各个数据点到每个聚类中心的加权平方和。这里的第二项通俗来说, u i s u_{is} uis是指属于某类的程度, 1 − u i s 1-u_{is} 1−uis 就是指不属于该类的程度。PCM的目标函数不仅要最小化各个数据点到每个聚类中心的加权平方和,还要让每个类的聚类中心尽量靠近本类多数数据点的位置范围。消除噪声数据的影响。