FCM算法推导过程

FCM推导过程超详细

最近毕业,然后可能用到FCM,找了挺多博客论文,更多的是关于用法没有推导过程,于是自己总结写一篇详细版尽量小白也能看懂的fcm推导过程,加深对算法的理解。标题或内容可能会挺暴力,个人习惯问题哈哈哈。如果写的有问题望各位多多指导,多多包涵。(好像有个别符号可能不规范,但应该不影响阅读,影响了请告知!)

1、概述

fcm是一个聚类算法。打些标签,模式分类,无监督学习,k-means,HCM(k-means),模糊-c均值算法。其他废话就不写了。
本篇主要讲推导过程,当然不看过程也能使用fcm聚类,那么就把结果和迭代过程写在开头。

1.1公式

目标函数
J m ( u , c ) = ∑ i = 1 K ∑ j = 1 N u i j m ∥ x j − c i ∥ 2 J_m(u,c)=\sum_{i=1}^{K}\sum_{j=1}^{N}u_{ij}^{m}\left \| x_j-c_i\right \|^{2} Jm(u,c)=i=1Kj=1Nuijmxjci2

簇群中心
c i = ∑ j = 1 N u i j m x j ∑ j = 1 N u i j m c_i=\frac{\sum_{j=1}^{N}u_{ij}^{m}x_j}{\sum_{j=1}^{N}u_{ij}^{m}} ci=j=1Nuijmj=1Nuijmxj

隶属值
u i j = 1 ∑ u = 1 k ( ∥ x j − c i ∥ ∥ x j − c u ∥ ) 2 m − 1 u_{ij}=\frac{1}{\sum_{u=1}^{k}(\frac{\left\| x_j-c_i \right\|}{\left \| x_j-c_u\right \|})^\frac{2}{m-1}} uij=u=1k(xjcuxjci)m121

1.2迭代过程

step1. 初始化赋值簇群中心或隶属度(这里先赋值隶属值)
step2. 利用 c i c_i ci公式计算簇群中心
step3. 根据得到的簇群中心利用 u i j u_{ij} uij公式更新隶属值
step4. 计算目标函数 J m ( u , c ) J_m(u,c) Jm(u,c)的值记为 j ( t ) j^{(t)} j(t)(t为本次循环的意思)
step5. If ∥ j ( t ) − j ( t − 1 ) ∥ \left\| j^{(t)}-j^{(t-1)}\right\| j(t)j(t1)<&,本次循环的值减上次的小于给定值,那么stop;否则 return to step 2.(给定值即为循环停止条件)
  迭代过程整体和HCM相似。在计算距离的时候添加了一个隶属值,也就是加权值,在HCM是直接计算距离的基础上,多了个权值。并且隶属值每次循环都会更新,所以在给定初始值时可以给随机值(一开始没想进去就是这里,脑子默认近大远小初始隶属值不知道怎么给定,但这实际是分类完成时的结果,分类开始时不需要考虑)。
  关于m值是一个加权指数,影响的是算法的性能,对于分类没有影响,条件是要大于1,本篇最后会提一下。

2、推导过程

2.1通式

x j x_j xj,需分类的数据集,j = 1,2,……,N
c i c_i ci,分类形成的簇群中心,i = 1,2,……,K
u i j u_{ij} uij,隶属值 Membership Values
   x j x_j xj——> c 1 c_1 c1 u 1 j u_{1j} u1j x j x_j xj点归属于 c 1 c_1 c1群的隶属值记为 u i j u_{ij} uij
   x j x_j xj——> c 2 c_2 c2 u 2 j u_{2j} u2j x j x_j xj点归属于 c 2 c_2 c2群的隶属值记为 u i j u_{ij} uij
m,Fuzzifier,加权指数(模糊控制),影响收敛速度,影响性能,我是这么理解。
综上 x j x_j xj归属哪个 c i c_i ci群由 u i j ( x j − c i ) u_{ij}(x_j-c_i) uij(xjci)距离大小决定,归属于距离小的簇群,是不是和HCM很像。


先举个例 (m的作用可以参考这个例子)
假设要分成两类,分别为 c 1 c_1 c1 c 2 c_2 c2两个群,那么 u 1 j + u 2 j = 1 u_{1j}+u_{2j}=1 u1j+u2j=1
u 1 j = 0.8 u_{1j}=0.8 u1j=0.8 u 2 j = 0.2 u_{2j}=0.2 u2j=0.2,m=2,那么 u 1 j m = 0.64 u_{1j}^m=0.64 u1jm=0.64 u 2 j m = 0.04 u_{2j}^m=0.04 u2jm=0.04 u 2 j m u_{2j}^m u2jm远小于 u 1 j m u_{1j}^m u1jm
因为 u 1 j > u 2 j u_{1j}>u_{2j} u1j>u2j,可知

  • 17
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值