抑制式(半抑制式)模糊C-均值聚类算法(S-FCM)

聚类算法的大致发展过程HCM - FCM - RCFCM - S-FCM - HSFCM。

HCM

传统的硬C均值聚类算法的突出特点是非此即彼,隶属度函数的取值只有0和1两个数,用这种方法对样本进行分类时,由于分类标准是硬性的,聚类结果往往不够准确。


FCM

模糊C均值聚类算法通过将隶属度函数的取值从HCM算法的二值
{0,1}扩展到(0,1)这个区间,使得聚类结果更加合理。

算法具体介绍:http://blog.csdn.net/in_nocence/article/details/78306297

【发现问题】

但是,将HCM扩展为FCM提高聚类准确度的同时还带来了另外一个问题:算法的收敛速度变慢,这个问题在样本数大的情况下尤为明显。而且,当某一个聚类中心离所有的样本数据距离都很远时,所有数据对它都没有吸引力,这样一来,这个中心的位置就得不到调整,即它的位置在整个聚类过程中不会改变,这种现象叫做“死结点”,死结点的存在,会使HCM算法陷入局部极值,最终得到错误的聚类结果。

【分析原因】

在HCM算法中,由于聚类是硬性的,它的隶属度值非0即1,也就是说,样本只对其属于的类别有隶属度,换句话说,样本只对离它最近的聚类中心有吸引力(不受其他类吸引的干扰),因此收敛速度比较快。

但是,FCM算法就不同了,它的隶属度函数的取值情况决定了每一个样本都会对各类的聚类中心产生影响,同理,样本对于各类聚类中心都有一定的吸引力(隶属度越大,吸引力越大,聚类中心下一次的迭代值所受影响就越大),这样一来,样本由于受到不同聚类中心的牵制,收敛速度自然就下降了。

【解决办法】

以上情况,就属于竞争学习机制的范畴。在分类时,我们自然希望隶属度大的样本更具有竞争优势。所以也就出现了对手抑制式模糊C均值聚类算法(RCFCM)。


RCFCM

对手抑制式模糊C均值算法通过放大最大隶属度,抑制次大隶属度,提高分类速度并且避免HCM中可能出现的死结点现象。此外,该算法对模糊因子m不敏感,从而避免了FCM算法中选择m的问题。该算法引入了抑制因子α(0<=α<=1),1-α称为抑制率

  • 初始化:选定ε>0,抑制因子α,迭代次数T;
    -1. 根据公式计算隶属矩阵Uij,若存在dij = 0,则Uij = 1;若dkj = 0,则Ukj = 1,当k ≠ i时,Uij = 0;
  • 2.修正隶属矩阵

对样本xj,记它对第p类的隶属度最大,为Upj;
它对第s类的隶属度次大,为Usj;
修正后的值为:
Upj = Upj + (1 - α)Usj;
Usj = αUsj;
xj对其余各类的隶属度不变

  • 3.计算聚类中心
  • 4.|J(T+1)-J(T)|<ε停止,否则T = T + 1,返回步骤1

以上算法相比于之前已经改进很多,但是,由于该算法只关注了最大隶属度和次大隶属度,因此一旦α的选择不合适,就可能导致最大隶属度的修正值小于某个次大隶属度的值,这样就会打乱原本的隶属度次序关系,导致聚类结果不准确。另外,有些资料还提到,不能保证RCFCM算法的收敛性。


S-FCM

抑制式模糊C均值算法在上面算法的基础上,同样也是通过对隶属矩阵的修正,突出主要因素,抑制次要因素。即如果一个数据点属于某类 , 就在提高它对该类的隶属度的同时降低它对其他类的隶属度。

隶属矩阵的修正:
- Upj = 1-α + αUpj;
- Uij = αUij ( i≠p );

以上公式推导过程如下:
抑制式(半抑制式)模糊C-均值聚类算法(S-FCM)
通过以上方式对隶属矩阵的修正,可以增强样本对第p类聚类中心的吸引力,降低对其余类聚类中心的吸引力,从而提高了聚类中心的收敛速度。

当α = 0时,S-FCM变为HCM;
当α = 1时,它变为FCM;

因而S-FCM建立起了HCM和FCM之间自然合理的联系。

【发现问题】

尽管S-FCM提高了模糊聚类算法的收敛速度,但是其聚类效果却不及FCM。

【分析原因】(摘)

S-FCM在修正隶属度值时只考虑了隶属度的相对值,而没有考虑到隶属度的绝对值。因此,如果最大隶属度本来就很小,那么通过S-FCM算法对隶属度的修正,会使最大隶属度对应的聚类中心向该样本靠近,而其余的聚类中心则会远离该样本,从而会使样本对该类的隶属度进一步增大,造成该类的最大隶属度类别不变,使算法过早收敛。

【解决办法】

针对这一缺点 , 提出半抑制式模糊 C 均值聚类算法 , 在收敛速度下降不大的前提下改善聚类效果。

HSFCM

半抑制式模糊C均值聚类算法中又引入另一个参数 ——抑制门限β。将最大隶属度值与该门限进行比较 , 若其大于该门限 , 则对其进行修正,否则就不修正。

设Upj为最大隶属度值,则:

  • Upj > β:Upj = 1-α + αUpj ;
  • Upj ≤ β:Upj = Upj ;
  • Upj > β:Uij = αUpj ( i≠p ) ;
  • Upj ≤ β:Uij = Uij ( i≠p ) ;

这样就可以避免过早地将某个数据点判归某一类而导致聚类结果的不准确。

当β = 0时,由于Uij总是大于等于0 , 故HSFCM 退化为 S - FCM 。
当β = 1时, 由于 Uij ≤ 1 = β总是满足, 因而隶属度值不再被修正。此时, HSFCM 与 FCM 相同。
而当β取0 和 1之间的值时 , β越小HSFCM 越接 近 S - FCM ,β越大HSFCM 越接近 FCM。

因而 HSFCM 可以看作在 S - FCM 和 FCM 之间建立起 了另一种联系。

参数选择

注意:
为了达到速度和效果之间比较好的折衷 , 建议抑制因子α取0.5,抑制门限也取0.5~