模糊C均值(FCM)算法更新公式推导

目标函数

FCM的目标函数为:

Jm=∑i=1n∑j=1kuijm∥xi−cj∥2 J_m = \sum_{i=1}^n \sum_{j=1}^k u_{ij}^m \|x_i - c_j\|^2 Jm=i=1nj=1kuijmxicj2

其中:

  • xix_ixi 是数据点,i=1,2,…,ni = 1, 2, \ldots, ni=1,2,,n
  • cjc_jcj 是第 jjj 个簇的中心,j=1,2,…,kj = 1, 2, \ldots, kj=1,2,,k
  • uiju_{ij}uij 是数据点 xix_ixi 属于第 jjj 个簇的隶属度。
  • mmm 是模糊度参数,通常 m>1m > 1m>1

更新公式推导过程

1. 定义目标函数

Jm=∑i=1n∑j=1kuijm∥xi−cj∥2 J_m = \sum_{i=1}^n \sum_{j=1}^k u_{ij}^m \|x_i - c_j\|^2 Jm=i=1nj=1kuijmxicj2

2. 引入约束条件

∑j=1kuij=1∀i \sum_{j=1}^k u_{ij} = 1 \quad \forall i j=1kuij=1i

使用拉格朗日乘数法,引入拉格朗日乘子 λi\lambda_iλi,构造拉格朗日函数:

L=∑i=1n∑j=1kuijm∥xi−cj∥2+∑i=1nλi(∑j=1kuij−1) \mathcal{L} = \sum_{i=1}^n \sum_{j=1}^k u_{ij}^m \|x_i - c_j\|^2 + \sum_{i=1}^n \lambda_i \left( \sum_{j=1}^k u_{ij} - 1 \right) L=i=1nj=1kuijmxicj2+i=1nλi(j=1kuij1)

3. 对 uiju_{ij}uij 求偏导数并设为零

对拉格朗日函数 L\mathcal{L}Luiju_{ij}uij 的偏导数并设为零:

∂L∂uij=muijm−1∥xi−cj∥2+λi=0 \frac{\partial \mathcal{L}}{\partial u_{ij}} = m u_{ij}^{m-1} \|x_i - c_j\|^2 + \lambda_i = 0 uijL=muijm1xicj2+λi=0

解这个方程得到:

uijm−1=−λim∥xi−cj∥2 u_{ij}^{m-1} = -\frac{\lambda_i}{m \|x_i - c_j\|^2} uijm1=mxicj2λi

为了保证 (u_{ij}) 非负,设 λi=−mζ\lambda_i = -m\zetaλi=mζ,则:

uijm−1=ζ∥xi−cj∥2 u_{ij}^{m-1} = \frac{\zeta}{\|x_i - c_j\|^2} uijm1=xicj2ζ
即:

uij=(ζ∥xi−cj∥2)1m−1 u_{ij} = \left( \frac{\zeta}{\|x_i - c_j\|^2} \right)^{\frac{1}{m-1}} uij=(xicj2ζ)m11

4. 求解拉格朗日乘子 ζ\zetaζ

利用约束条件 ∑j=1kuij=1\sum_{j=1}^k u_{ij} = 1j=1kuij=1

∑j=1k(ζ∥xi−cj∥2)1m−1=1 \sum_{j=1}^k \left( \frac{\zeta}{\|x_i - c_j\|^2} \right)^{\frac{1}{m-1}} = 1 j=1k(xicj2ζ)m11=1

解这个方程得到:

ζ=(∑j=1k(1∥xi−cj∥2)1m−1)1−m \zeta = \left( \sum_{j=1}^k \left( \frac{1}{\|x_i - c_j\|^2} \right)^{\frac{1}{m-1}} \right)^{1-m} ζ=(j=1k(xicj21)m11)1m

代入 uiju_{ij}uij 的表达式,得到隶属度更新公式:

uij=1∑l=1k(∥xi−cj∥∥xi−cl∥)2m−1 u_{ij} = \frac{1}{\sum_{l=1}^k \left( \frac{\|x_i - c_j\|}{\|x_i - c_l\|} \right)^{\frac{2}{m-1}}} uij=l=1k(xiclxicj)m121

5. 对簇中心 cjc_jcj 求偏导数并设为零

对目标函数 JmJ_mJmcjc_jcj 求偏导数并设为零:

∂Jm∂cj=∑i=1nuijm(cj−xi)=0 \frac{\partial J_m}{\partial c_j} = \sum_{i=1}^n u_{ij}^m (c_j - x_i) = 0 cjJm=i=1nuijm(cjxi)=0

解这个方程得到:

∑i=1nuijmcj=∑i=1nuijmxi \sum_{i=1}^n u_{ij}^m c_j = \sum_{i=1}^n u_{ij}^m x_i i=1nuijmcj=i=1nuijmxi

cj=∑i=1nuijmxi∑i=1nuijm c_j = \frac{\sum_{i=1}^n u_{ij}^m x_i}{\sum_{i=1}^n u_{ij}^m} cj=i=1nuijmi=1nuijmxi

总结

通过上述推导过程,我们得到了FCM算法的更新公式:

  • 隶属度更新公式:

uij=1∑l=1k(∥xi−cj∥∥xi−cl∥)2m−1 u_{ij} = \frac{1}{\sum_{l=1}^k \left(\frac{\|x_i - c_j\|}{\|x_i - c_l\|}\right)^{\frac{2}{m-1}}} uij=l=1k(xiclxicj)m121

  • 簇中心更新公式:

cj=∑i=1nuijmxi∑i=1nuijm c_j = \frac{\sum_{i=1}^n u_{ij}^m x_i}{\sum_{i=1}^n u_{ij}^m} cj=i=1nuijmi=1nuijmxi

这些公式在每次迭代中交替更新,直到目标函数收敛。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐