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

1. FCM初识

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

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

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

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

模糊的程度我们用模糊函数来衡量《FCM(Fuzzy C-Means)模糊C聚类》他表示的是集合X中的元素x对集合A的隶属程度。



2.FCM算法

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

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

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

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

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

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

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

那我们怎么实现这样的结果呢?FCM有他自己的目标函数[1],
《FCM(Fuzzy C-Means)模糊C聚类》

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

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

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

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

《FCM(Fuzzy C-Means)模糊C聚类》
函数中共有三个变量,μij, vi, 和(lambda)j,分别求偏导

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

得到U和V的最优解

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

算法的步骤

  • 初始化

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

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

  • 优化过程         

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

             计算类中心
《FCM(Fuzzy C-Means)模糊C聚类》

             更新隶属度矩阵

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

  • 重复优化过程,直到满足如下的终止条件      《FCM(Fuzzy C-Means)模糊C聚类》

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

3. 参数的选择

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

3.1   聚类数目c的选择

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

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

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

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

3.2   模糊系数m的选择

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

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

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

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

References

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

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

    原文作者:聚类算法
    原文地址: https://blog.csdn.net/zjsghww/article/details/50922168
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞