机器学习之模糊聚类——FCM,PCM模型

在介绍模糊聚类之前,首先说一下k-means聚类模型。

k-means

这是聚类算法中很常用的一种,算法最大的特点是简单易懂:

  1. 事先设置好聚类中心 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
  2. 这样可以算出每个数据点与每个聚类中心的距离: d i s t ( c i , x ) dist(c_{i},x) dist(ci,x),每个点都能得到 k k k 个距离,选取最近的那个距离,把这个点归到该类。
  3. 将数据集 X X X 中所有点分好类,计算每类所有点的中心点,作为该类新的聚类中心 C n e w C^{new} Cnew
  4. 当满足要求的迭代条件,就得到最后的聚类结果;如果没有满足条件,从第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=1Kxcidist(ci,x)2

我们更喜欢 J ( C ) J(C) J(C) 小的那个。

很明显k-means把每个待辨识的对象严格划分到某个类中,具有非此即彼的特性,我们称之为硬聚类。然而实际上大多数的对象没有这么严格的区别,具有亦此亦彼的性质,其需要一种更能体现该性质的聚类算法。因此研究者将“隶属度”引入聚类,将硬聚类算法推广成模糊聚类算法 。

模糊C均值算法(FCM)

  1. 首先是模糊集,隶属度的概念:

    若对论域(研究范围) D D D 中任一元素 x x x,都有一个数 U ( x ) ∈ [ 0 , 1 ] U(x)∈[0,1] U(x)[01] 与之对应,则称 U U U D D D 上的模糊集, U ( x ) U(x ) U(x) 称为 x x x D D D 的隶属度。
    图1机器学习之模糊聚类——FCM,PCM模型_第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的时候,正常的隶属度函数值最高,表示此时’应该‘是正常温度。

  2. 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=1Ni=1K(uis)mdist(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=1Ni=1K(uis)mdist(ci,xs)2}=min{i=1K(uis)mdist(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=1K(uis)mdistis2+λ(i=1Kuis1)uisF=muism1distis2λ=0uis=(mλ)m11(distis21)m11(2.2.1)λF=(i=1Kuis1)=0(2.2.1)i=1K(mλ)m11(distis21)m111=0(mλ)m11=i=1K(distis2)m111(2.2.1)uis=j=1K(distjs2distis2)m121(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) ciJ(U,C)=cis=1Ni=1K(uis)mdist(ci,xs)2.dist(ci,xs)2=cixsA=(cixs)TA(cixs),A.ciJ(U,C)=s=1Nuismci(cixs)TA(cixs)=s=1Nuism(2A(cixs))=0,2A(s=1Nuismcis=1Nuismxs)=0ci=s=1Nuisms=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的值就是最终的隶属度矩阵和聚类中心。
    机器学习之模糊聚类——FCM,PCM模型_第2张图片

可能性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=1Nuis<=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=1Ks=1N(uis)mdist(ci,xs)2+i=1Kηis=1N(1uis)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=1Nuisms=1Nuismdist(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}}} uisJ(U,C)=muism1dist(ci,xs)2mηi(1uis)m1=0uis=1+(ηidist2)m111

通过不段迭代 U U U C C C ,直到目标函数到达一个稳定状态。

目标函数3.1的第一项与FCM的目标函数2.1是相同的,是各个数据点到每个聚类中心的加权平方和。这里的第二项通俗来说, u i s u_{is} uis是指属于某类的程度, 1 − u i s 1-u_{is} 1uis 就是指不属于该类的程度。PCM的目标函数不仅要最小化各个数据点到每个聚类中心的加权平方和,还要让每个类的聚类中心尽量靠近本类多数数据点的位置范围。消除噪声数据的影响。

你可能感兴趣的:(机器学习,聚类,机器学习,聚类)