|
FCM算法需要两个参数一个是聚类数目C,另一个是参数m。一般来讲c要远远小于聚类样本的总个数,同时要保证C>1。对于m,它是一个控制算法的柔性的参数,如果m过大,则聚类效果会很次,而如果m过小则算法会接近HCM聚类算法(有的例子中m=2)。算法的输出是C个聚类中心点向量和C*N的一个模糊划分矩阵,这个矩阵表示的是每个样本点属于每个类的隶属度。
FCM把向量xi(i=1,2,…,n)分为c个模糊组,并求每组的聚类中心,使得非相似性指标的价值函数达到最小。FCM与HCM的主要区别在于FCM用模糊划分,使得每个给定数据点用值在0,1间的隶属度来确定其属于各个组的程度。与引入模糊划分相适应,隶属矩阵U允许有取值在0,1间的元素。一个数据集的隶属度的和总等于1:
FCM的目标函数:
这里uij介于0,1间;ci为模糊组I的聚类中心,dij=||ci-xj||为第I个聚类中心与第j个数据点间的欧几里德距离;且m是一个加权指数。
构造如下新的目标函数,采用拉格朗日乘数法将约束条件拿到目标函数中去,前面加上系数,并把式(3.1)式的所有j展开,那么式(3.2)变成下列所示:
使得(3.2)式中的J得到最小值的必要条件为:
步骤
1:用值在0,1间的随机数初始化隶属矩阵U,使其满足式(3.1)中的约束条件;
2:用式(3.4)计算c个聚类中心ci,i=1,…,c;
3:根据式(3.2)计算价值函数。如果它小于某个确定的阀值,或它相对上次价值函数值的改变量小于某个阀值,则算法停止;
步骤4:用(3.5)计算新的U矩阵。返回步骤2;
上述算法也可以先初始化聚类中心,然后再执行迭代过程。由于不能确保FCM收敛于一个最优解。算法的性能依赖于初始聚类中心。因此,我们要么用另外的快速算法确定初始聚类中心,要么每次用不同的初始聚类中心启动该算法,多次运行FCM。
推导过程
FCM算法的数学模型其实是一个条件极值问题,
需要把上面的条件极值问题转化为无条件的极值问题,这个在数学分析上经常用到的一种方法就是拉格朗日乘数法把条件极值转化为无条件极值问题,需要引入n个拉格朗日因子,如下所示:
然后对各个变量进行求导,从而得到各个变量的极值点:
对C中心点进行求导:
拉格朗日函数分为两部分,我们需要分别对其进行求导,先算简单的,对后一部分进行求导:
对前一部分进行求导就比较复杂和困难了:
把两部分放到一起则是:
引用:
https://www.cnblogs.com/wxl845235800/p/11053261.html
https://blog.51cto.com/9269309/1867818
https://blog.csdn.net/on2way/article/details/47087201
Copyright ©2011-2014 bbs.06climate.com All Rights Reserved. Powered by Discuz! (京ICP-10201084)
本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论