在介绍模糊聚类之前,首先说一下k-means聚类模型。
这是聚类算法中很常用的一种,算法最大的特点是简单易懂:
迭代的条件可根据具体情况自行设定,其中比较运用广泛的有:
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把每个待辨识的对象严格划分到某个类中,具有非此即彼的特性,我们称之为硬聚类。然而实际上大多数的对象没有这么严格的区别,具有亦此亦彼的性质,其需要一种更能体现该性质的聚类算法。因此研究者将“隶属度”引入聚类,将硬聚类算法推广成模糊聚类算法 。
首先是模糊集,隶属度的概念:
若对论域(研究范围) 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的值就是最终的隶属度矩阵和聚类中心。
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的目标函数不仅要最小化各个数据点到每个聚类中心的加权平方和,还要让每个类的聚类中心尽量靠近本类多数数据点的位置范围。消除噪声数据的影响。