模糊C均值(FCM)算法更新公式推导
Jm∑i1n∑j1kuijm∥xi−cj∥2Jmi1∑nj1∑kuijm∥xi−cj∥2隶属度更新公式:uij1∑l1k∥xi−cj∥∥xi−cl∥2m−1uij∑l1k∥xi−cl∥∥xi−cj∥m−121簇中心更新公式:cj∑i1nuij。
模糊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=1∑nj=1∑kuijm∥xi−cj∥2
其中:
- 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=1∑nj=1∑kuijm∥xi−cj∥2
2. 引入约束条件
∑j=1kuij=1∀i \sum_{j=1}^k u_{ij} = 1 \quad \forall i j=1∑kuij=1∀i
使用拉格朗日乘数法,引入拉格朗日乘子 λ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=1∑nj=1∑kuijm∥xi−cj∥2+i=1∑nλi(j=1∑kuij−1)
3. 对 uiju_{ij}uij 求偏导数并设为零
对拉格朗日函数 L\mathcal{L}L 求 uiju_{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 ∂uij∂L=muijm−1∥xi−cj∥2+λi=0
解这个方程得到:
uijm−1=−λim∥xi−cj∥2 u_{ij}^{m-1} = -\frac{\lambda_i}{m \|x_i - c_j\|^2} uijm−1=−m∥xi−cj∥2λ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} uijm−1=∥xi−cj∥2ζ
即:
uij=(ζ∥xi−cj∥2)1m−1 u_{ij} = \left( \frac{\zeta}{\|x_i - c_j\|^2} \right)^{\frac{1}{m-1}} uij=(∥xi−cj∥2ζ)m−11
4. 求解拉格朗日乘子 ζ\zetaζ
利用约束条件 ∑j=1kuij=1\sum_{j=1}^k u_{ij} = 1∑j=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=1∑k(∥xi−cj∥2ζ)m−11=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=1∑k(∥xi−cj∥21)m−11)1−m
代入 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(∥xi−cl∥∥xi−cj∥)m−121
5. 对簇中心 cjc_jcj 求偏导数并设为零
对目标函数 JmJ_mJm 对 cjc_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 ∂cj∂Jm=i=1∑nuijm(cj−xi)=0
解这个方程得到:
∑i=1nuijmcj=∑i=1nuijmxi \sum_{i=1}^n u_{ij}^m c_j = \sum_{i=1}^n u_{ij}^m x_i i=1∑nuijmcj=i=1∑nuijmxi
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=1nuijm∑i=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(∥xi−cl∥∥xi−cj∥)m−121
- 簇中心更新公式:
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=1nuijm∑i=1nuijmxi
这些公式在每次迭代中交替更新,直到目标函数收敛。
更多推荐
所有评论(0)