FCM(Fuzzy C-Means)模糊C聚类

来源:互联网 发布:暂七师军乐队 知乎 编辑:程序博客网 时间:2024/04/20 07:05

目录(?)[-]

  1. FCM初识
  2. FCM算法
  3. 参数的选择
    1. 1   聚类数目c的选择
    2. 2   模糊系数m的选择

1. FCM初识

FCM的C跟K-Means的K是一样的,指的是聚类的数目。F—Fuzzy是模糊的意思,指的是”一个事件发生的程度“。用在我们的聚类上面,第一条记录以怎样的概率或者说程度属于第一类,又以怎样的程度属于第二类等等。跟传统的聚类有所区别的地方就是,他改变了传统分类的时候非此即彼的一个现象,一个对象可以以不同的程度同时属于多个类。这个其实是跟我们的现实世界是更契合的。比如说,“秃与不秃”,一个人有多少发量就说他是秃的,下面这几张图:

                                            

究竟那几个可以分成:秃“,这个就具有一定的模糊性。

所以说,”模糊“概念的提出,更能描述现实。

模糊的程度我们用模糊函数来衡量

μA(x)
他表示的是集合X中的元素x对集合A的隶属程度。



2.FCM算法

作为一个算法,FCM的输入就是一个待聚类的数据集,每一个数据都有p个特征。它的输出是一个c行n列的矩阵U,c刚才提到是聚类数目,n是数据集中元素的个数,用这个矩阵就可以表示分类的结果,因为你看某一列,表示的就是这个元素对各个类的隶属程度,哪一个值最大,就说这个元素属于哪一类。

还有一个输出是各个类的聚类中心向量集合V,一共有c个元素。每个元素也是有p维的。

X={x1,x2,...,xn},xkRP

V={v1,v2,...,vc}RP

U=u11un1u1cuncnxc

举个例子,直观感受一下,比如现在待分类的数据集有188个点,每个点是二维的,我们要把他分成4类,通过FCM算法得到的输出V就是下面第一张图表示这4个中心向量,下面这第二张图表示的就是矩阵U,横坐标是188个元素,纵坐标是隶属度值,可以看到,可以根据这个值把大家区分开。

                 

那我们怎么实现这样的结果呢?FCM有他自己的目标函数[1],

Jm(U,V)=i=1cj=1numijd2ij

μij指的就是隶属度值,元素j对类别i的隶属程度,dij平方指的就是欧氏距离下元素j跟中心点i之间的距离,整个表示的就是各个点到各个类的加权距离的和。

m是一个模糊化程度的参数,待会我们会提到它对算法性能的影响。这个算法有一个约束条件,就是某一个元素对所有类别的隶属程度的值加起来要等于1.

聚类要达到的最终效果就是类内相似度最小,类间相似度最大,这个时候点和中心的加权距离之和就是最小的。所以我们我们只要使得目标函数取得最小值就可以了。所以最优解的的表达式就是:

min(Jm(U,V))=min(i=1cj=1numijd2ij)

对于有约束条件的求极值问题,一般使用拉格朗日乘子法解决。先构造拉格朗日函数:

F=i=1cj=1numijd2ij+j=1nλj(i=1cuij1)

函数中共有三个变量,μij, vi, 和(lanmuda)j,分别求偏导


得到U和V的最优解

uij=k=1c(dijdkj)2m11

 

vi=nj=1xjμmijnj=1μmij


算法的步骤

  • 初始化

             设定聚类个数c (1<c<n), 模糊指数m(m>1),最大迭代数T,收敛的精度ε,用随机数初始化隶属度矩阵U(0)

  • 优化过程

t0

tt+1

             计算类中心
Vt=F(Ut1)

             更新隶属度矩阵
Ut=G(Vt1)

  • 重复优化过程,直到满足如下的终止条件

t=TORUtUt1<ε,t1

(U,V)(Ut,Vt)


3. 参数的选择

前面提到,在应用FCM对给定数据集进行聚类分析时,需要涉及两个参数的选取问题:c和m。只有选取正确了才能得到好的聚类效果。所以说怎样选取好的参数是关键所在。

3.1   聚类数目c的选择

对c的选取我们有一个评价指标,就是L(c)这个函数,分子表示的是类间距离之和,分母表示的是类内间距之和,因此整个L的值就越大越好。

Lc)=i=1cj=1numijvix¯2/(c1)i=1cj=1numijxjvi2/(nc)

下面四个图是论文[2]里面对不同的c做的一个实验,表格第一行指的是最佳的分类数目,第二行是L函数对不同分类数目的值,可以看到用L函数就可以选择出最佳的c。



3.2   模糊系数m的选择

另外,目标函数里面的m值也是需要我们确定好的。那这个m值我们怎样选择呢,首先m代表的是模糊C平均算法的模糊系数,它可以影响分类的准确程度。

我们看下面四张图,第一个图是原始的数据集,我们给定c等于9,2,3,4这三个图里我们只给出中心向量,当m=1.2的时候,这9个点比较分散,这样就会受噪声点的影响比较大,远离了我们的主流,而当m=3.5的时候这些点又比较集中,对偏离主流的点的控制力又比较弱。

通常来说,m选取2.0是比较合理的。


References

[1] J.Bezdek,“Cluster validity with fuzzy sets”, Cybernetics and Systems, 1973

[2] “FCM算法中参数优选方法及应用实例”



1 0
原创粉丝点击