C均值聚类

1. 标准C-Means

1.1. 基本思路

通过迭代寻找c个聚类的一种划分方案,使这c个聚类的代表点——各类样本的均值所得到的总体误差最小。
假设第 i i i类样本集合 τ i \tau_i τi的数目为 N i N_i Ni,则该类样本均值向量为 m i \boldsymbol{m_i} mi的计算公式为:
m i = 1 N i ∑ y ∈ τ i y (1.1) \begin{aligned} \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \tau_i}\boldsymbol{y} \end{aligned} \tag{1.1} mi=Ni1yτiy(1.1)
整个样本空间上的误差平方和为
J e = ∑ i = 1 c ∑ y ∈ τ i ∣ ∣ y − m i ∣ ∣ 2 (1.2) \begin{aligned} J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \end{aligned} \tag{1.2} Je=i=1cyτiymi2(1.2)
J e J_e Je越小,**说明聚类结果越优。**通常称该类划分结果为:最小方差划分。

1.2. 样本在类间调整思路

假设已经有一个样本划分的方案,将样本 y \boldsymbol{y} y τ i \tau_i τi划分到 τ j \tau_j τj中,则 τ i \tau_i τi τ j \tau_j τj发生了变化而其他样本类没有发生变化,因此,这两类的均值变化情况为:
m ~ i = 1 N i − 1 ∑ y ∈ { τ i − y ′ } y m i = 1 N i ∑ y ∈ { τ i } y (2.1) \begin{aligned} \boldsymbol{\widetilde{m}_i}=\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}\\ \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y}\\ \end{aligned} \tag{2.1} m i=Ni11y{τiy}ymi=Ni1y{τi}y(2.1)

  • 对于失去样本的来来说:
    m ~ i − m i \boldsymbol{\widetilde{m}_i}-\boldsymbol{m_i} m imi得到:
    m ~ i = m i + ( 1 N i − 1 ∑ y ∈ { τ i − y ′ } y − 1 N i − 1 N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 ( ∑ y ∈ { τ i − y ′ } y − N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 ( N i N i ∑ y ∈ { τ i } ( y − y ′ ) − N i − 1 N i ∑ y ∈ { τ i } y ) = m i + 1 N i − 1 [ y − m i ] (2.2) \begin{aligned} \boldsymbol{\widetilde{m}_i} =& \boldsymbol{m_i}+(\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{1}{N_i-1} \frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\frac{N_i}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}(\boldsymbol{y}-y')-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}[\boldsymbol{y}-\boldsymbol{m_i}] \end{aligned} \tag{2.2} m i====mi+(Ni11y{τiy}yNi11NiNi1y{τi}y)mi+Ni11(y{τiy}yNiNi1y{τi}y)mi+Ni11(NiNiy{τi}(yy)NiNi1y{τi}y)mi+Ni11[ymi](2.2)
  • 对于得到样本的来说:
    m ~ k = m k + 1 N k + 1 [ y − m k ] (2.2) \begin{aligned} \boldsymbol{\widetilde{m}_k} =&\boldsymbol{m_k}+\frac{1}{N_k+1}[\boldsymbol{y}-\boldsymbol{m_k}] \end{aligned} \tag{2.2} m k=mk+Nk+11[ymk](2.2)
    对应的,误差平方和也变为:
    J ~ i = J i + N i N i − 1 ∣ ∣ y − m i ∣ ∣ 2 J ~ k = J k + N k N k + 1 ∣ ∣ y − m k ∣ ∣ 2 (2.3) \begin{aligned} \widetilde{J}_i =&J_i+\frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2\\ \widetilde{J}_k =&J_k+\frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3} J i=J k=Ji+Ni1Niymi2Jk+Nk+1Nkymk2(2.3)

如果移出一个样本会带来某一类均方误差的减少,移入这个样本会带来另一类均方误差的增大,如果减少量大于增大量,那么
N i N i − 1 ∣ ∣ y − m i ∣ ∣ 2 > N k N k + 1 ∣ ∣ y − m k ∣ ∣ 2 (2.3) \begin{aligned} \frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2 > \frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3} Ni1Niymi2>Nk+1Nkymk2(2.3)
则认为该操作是合理的,否则不移动。

1.3. 具体步骤

  1. 初始划分c个聚类,计算出这c类的均值和总的均方误差和 J e J_e Je
  2. 任取一个样本 y \boldsymbol{y} y,设 y ∈ τ i \boldsymbol{y} \in \tau_i yτi
  3. 计算公式(2.3),其中, k k k是除了 i i i之外的所有类。
  4. 如果移出的损失大于所有移入的损失,则不移动,否则移入损失最小的类中。
  5. 重新计算这c类的均值和总的均方误差和 J e J_e Je
  6. 若连续N次 J e J_e Je都不发生改变,则停止,否则转(2).

1.4. 初始化类的方法

1.4.1 选择代表点

  1. 经验选择
  2. 将全部数据随机划分成c类,计算每一类的重心,以重心为代表点。
  3. 按照样本天然的排列顺序选择c前c个点作为代表

1.4.2 初始类划分

  1. 根据其余点与代表点的距离进行划分
  2. 每个代表点自成一类,将样本按顺序归入该类中,每次某一类的数量发生改变,则重新计算该类的重心。

2. IOSDATA

2.1 简介

ISODATA全称为Iterative Self-Organizing Data Analysis Techniques:迭代自组织数据分析技术,可以看做是改进的C-means算法,与C-means的区别在于:

  1. C-Means在每次样本所属类别发生变化时,就计算一次均值;而ISODATA 则是在全部样本调整完成之后才重新计算各类的均值。
  2. ISODATA算法在聚类的过程中引入了对类别的评判准则,根据这些准则可以将某些类别合并或者分裂,使得聚类结果更加合理。

2.2 算法流程

2.2.1 符号释义

  • 样本集 { y 1 , y 2 , . . . , y N } \{\boldsymbol{y_1}, \boldsymbol{y_2}, ..., \boldsymbol{y_N}\} {y1,y2,...,yN},其中 y i \boldsymbol{y_i} yi代表第 i i i个样本,是一个 1 × d 1 \times d 1×d维的向量。
  • K K K:期望得到的聚类数
  • θ N \theta_N θN:一个聚类中最少的样本数目
  • θ s \theta_s θs:标准偏差参数
  • θ c \theta_c θc:合并参数
  • L L L:每次迭代允许合并的最大聚类对数
  • I I I:允许迭代的次数

2.2.2 算法步骤

  1. 初始化聚类数目c(不一定要是K),初始化的方法与C均值差不多,选取代表点。
  2. 判断其余点与代表点的距离,按照距离对其余点进行划分。
  3. 若某个类 τ j \tau_j τj中样本的数目过少( N j < θ N N_j<\theta_N Nj<θN),则去掉该类,将该类中的样本分配到其他类中,聚类的数目 c = c − 1 c=c-1 c=c1
  4. 重新计算每一类的均值。
    m j = 1 N j ∑ y ∈ τ j y \boldsymbol{m_j}=\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}\boldsymbol{y} mj=Nj1yτjy
  5. 计算第 j j j类中,样本与该类均值的平均距离:
    δ j ˉ = 1 N j ∑ y ∈ τ j ∣ ∣ y − m j ∣ ∣ , j = 1.... c \bar{\delta_j} =\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}||\boldsymbol{y}-\boldsymbol{m_j}||, j=1....c δjˉ=Nj1yτjymj,j=1....c
    总平均距离:
    δ ˉ = 1 N ∑ i = 1 c N i δ i ˉ \bar{\delta} =\frac{1}{N}\sum_{i=1}^{c}N_i \bar{\delta_i} δˉ=N1i=1cNiδiˉ
  6. 如果满足迭代次数满足要求,则结束;如果 c ⩽ K / 2 c \leqslant K/2 cK/2,则执行分裂操作 ;如果 c ⩾ 2 K c \geqslant 2K c2K,则执行合并操作
  7. 如果是最后一次迭代,停止,否则转向2。

2.2.3 分裂操作

  1. 对于每个类,求各维标准偏差 σ j = [ σ j 1 , σ j 2 , . . . , σ j d ] T \boldsymbol{\sigma_j}=[\sigma_{j1}, \sigma_{j2},...,\sigma_{jd}]^T σj=[σj1,σj2,...,σjd]T,(大白话就是对第 j j j类中的每一个特征都计算其标准差),具体计算公式为:
    σ j i = 1 N ∑ y k ∈ τ j ( y k i − m j i ) \sigma_{ji}=\sqrt{\frac{1}{N}\sum_{\boldsymbol{y}_k \in \tau_j}(y_{ki}-m_{ji})} σji=N1ykτj(ykimji)
    在上式中, y k i y_{ki} yki为第 k k k个样本的第 i i i个特征, m j i m_{ji} mji代表第 j j j个聚类均值的第 i i i个分量; σ j i \sigma_{ji} σji是第 j j j个类的第 i i i个分量的标准偏差。

  2. 对每个类,求出标准偏差最大的分量 σ j max ⁡ , j = 1 , 2 , . . . , c \sigma_{j\max}, j=1,2,...,c σjmax,j=1,2,...,c。(其实就相当于落实到某一个类的某个特征上)

  3. 对各类的 σ j max ⁡ \sigma_{j\max} σjmax,如果满足以下条件(注意,这里仅仅是选出了两个代表点而已):

    1. 存在某个类的 σ j max ⁡ > θ s \sigma_{j\max}>\theta_s σjmax>θs δ j ˉ > δ ˉ \bar{\delta_j}>\bar{\delta} δjˉ>δˉ N j > 2 ( θ N + 1 ) N_j>2(\theta_N+1) Nj>2(θN+1)
    2. 存在某个类的 σ j max ⁡ > θ s \sigma_{j\max}>\theta_s σjmax>θs δ j ˉ > δ ˉ \bar{\delta_j}>\bar{\delta} δjˉ>δˉ c ⩽ K / 2 c \leqslant K/2 cK/2

    τ j \tau_{j} τj分成2类,中心分别为 m j + \boldsymbol{m}_j^+ mj+ m j − \boldsymbol{m}_j^- mj,此时 c = c + 1 c=c+1 c=c+1,其中, m j + \boldsymbol{m}_j^+ mj+ m j − \boldsymbol{m}_j^- mj的计算公式为:
    m j + = m j + γ j m j − = m j − γ j \boldsymbol{m}_j^+=\boldsymbol{m}_j + \boldsymbol{\gamma}_j \\ \boldsymbol{m}_j^-=\boldsymbol{m}_j - \boldsymbol{\gamma}_j mj+=mj+γjmj=mjγj
    γ j = k σ j , k ∈ ( 0 , 1 ] \boldsymbol{\gamma}_j=k\boldsymbol{\sigma}_j, k \in (0,1 ] γj=kσj,k(0,1]或者, γ j = [ 0 , . . . , 0 , σ i max ⁡ , 0 , . . . , 0 ] T \boldsymbol{\gamma}_j=[0,...,0,\sigma_{i\max},0,...,0]^T γj=[0,...,0,σimax,0,...,0]T

2.2.4 合并操作

  1. 计算各类中心两两之间的距离
    δ i j = ∣ ∣ m i − m j ∣ ∣ , i , j = 1 , 2 , . . . , c , i ≠ j \delta_{ij}=||\boldsymbol{m}_i-\boldsymbol{m}_j||, i, j = 1,2,...,c , i \neq j δij=mimj,i,j=1,2,...,c,i=j
  2. 比较 δ i j \delta_{ij} δij θ c \theta_c θc(合并参数),对**小于 θ c \theta_c θc**的距离排序:
    δ i 1 , j 1 < δ i 2 , j 2 , . . . , δ i l , j l \delta_{i_1,j_1}< \delta_{i_2,j_2},...,\delta_{i_l,j_l} δi1,j1<δi2,j2,...,δil,jl
  3. 从最小的 δ i 1 , j 1 \delta_{i_1,j_1} δi1,j1开始把每个 δ i l , j l \delta_{i_l,j_l} δil,jl对应的 m i l , m j l m_{i_l},m_{j_l} mil,mjl合并,组成新类,新的中心为:
    m l = 1 N i l + N j l [ N i l m i l + N j l m j l ] m_l=\frac{1}{N_{i_l}+N_{j_l}}[N_{i_l}m_{i_l}+N_{j_l}m_{j_l}] ml=Nil+Njl1[Nilmil+Njlmjl]

3. 基于样本与核相似度的动态聚类算法

3.1 C-Means与IOSDATA面临的问题

如果数据样本的两类分布如下图所示,这个时候两类的均值不能很好的代表一类,虽然二者都服从正态分布,但是方差比较大,那么,在图中A点明显距离第二类比较近,这可能会导致分类错误。
在这里插入图片描述
所以,这个时候需要使用其他方法代表每个聚类
在C-Means中,准则函数为:整个样本空间上的误差平方和为
J e = ∑ i = 1 c ∑ y ∈ τ i ∣ ∣ y − m i ∣ ∣ 2 (1.2) J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2} Je=i=1cyτiymi2(1.2)
J e J_e Je越小,**说明聚类结果越优。

针对目前这种分布,我们选用的准则函数为:
J K = ∑ i = 1 c ∑ y ∈ τ j Δ ( y , K j ) (1.2) J_K=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_j} \Delta (\boldsymbol{y},\boldsymbol{K_j}) \tag{1.2} JK=i=1cyτjΔ(y,Kj)(1.2)
其中, Δ \Delta Δ表示某种距离度量, J K J_K JK越小,说明聚类结果越优。

3.2 具体步骤

  1. 选择初始划分,将样本集划分成 c c c类,确定每类的初始核 K j , j = 1 , 2 , . . . , c K_j, j=1,2,...,c Kj,j=1,2,...,c
  2. 按照下列规则将每个样本划分到对应的类中。
    Δ ( y , K j ) = min ⁡ k Δ ( y , K k ) , k = 1 , 2 , . . . , c \Delta (\boldsymbol{y}, \boldsymbol{K_j})=\min_k \Delta (\boldsymbol{y}, \boldsymbol{K_k}), k=1,2,...,c Δ(y,Kj)=kminΔ(y,Kk),k=1,2,...,c
    y ∈ τ j \boldsymbol{y} \in \tau_j yτj
  3. 重新修正核 K j , j = 1 , 2 , . . . , c K_j, j=1,2,...,c Kj,j=1,2,...,c,若 k k k不变,则算法终止,否则转2.

相对的,在C-Means中,类均值对应样本到均值的欧式距离相当于 Δ ( y , K j ) \Delta (\boldsymbol{y}, \boldsymbol{K_j}) Δ(y,Kj)

3.3 常用的核函数

3.3.1 正态核函数

如果数据分布类似于下图:
在这里插入图片描述
则可选用正态核:
K j ( y , V j ) = 1 ( 2 π ) d / 2 ∣ Σ j ^ ∣ 1 / 2 exp ⁡ { − 1 2 ( y − m j ) T Σ j ^ − 1 ( y − m j ) } \boldsymbol{K_j} (\boldsymbol{y}, \boldsymbol{V_j})=\frac{1}{(2\pi)^{d/2}|\hat{\Sigma_j}|^{1/2}}\exp\{-\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})\} Kj(y,Vj)=(2π)d/2Σj^1/21exp{21(ymj)TΣj^1(ymj)}
其中,参数集 V j \boldsymbol{V_j} Vj包括: m j , Σ j ^ \boldsymbol{m_j}, \hat{\Sigma_j} mj,Σj^,分别代表第 j j j类的样本均值和协方差矩阵。
样本到核的相似性度量为:
Δ ( y , K j ) = 1 2 ( y − m j ) T Σ j ^ − 1 ( y − m j ) + 1 2 log ⁡ ∣ Σ j ^ ∣ \Delta (\boldsymbol{y}, \boldsymbol{K_j})=\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})+\frac{1}{2}\log|\hat{\Sigma_j}| Δ(y,Kj)=21(ymj)TΣj^1(ymj)+21logΣj^

3.3.2 主轴核函数

在这里插入图片描述

4. 模糊C-Means方法(Fuzzy C-means, FCM)

4.1 模糊集的基本知识

4.1.1 什么是模糊集

在传统的集合中,一个元素要么属于一个集合,要么不属于一个集合。但是在模糊集中,一个元素可以是以一定程度属于某个集合,也可以以不同程度的属于多个集合。

4.1.2 隶属度函数

隶属度函数是一个对象 x x x隶属于集合A的程度。记为 μ A ( x ) \mu_A(x) μA(x)。自变量是集合A中的所有对象, 0 ≤ μ A ( x ) ≤ 1 0 \leq \mu_A(x) \leq 1 0μA(x)1。当 μ A ( x ) = 1 \mu_A(x) = 1 μA(x)=1说明 x x x完全属于A; μ A ( x ) = 0 \mu_A(x) =0 μA(x)=0说明 x x x完全不属于A。

模糊集合A:
对于有限个对象 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn来说,若这 n n n个值都可能存在于集合A中,则模糊集合A可以表示为:
A = { ( μ A ( x i ) , x i ) } (4.1) A=\{(\mu_A(\boldsymbol{x_i}), \boldsymbol{x_i})\} \tag{4.1} A={(μA(xi),xi)}(4.1)
或者
A = ⋃ i μ i / x i (4.2) A=\bigcup _i\mu_i/ \boldsymbol{x_i} \tag{4.2} A=iμi/xi(4.2)

支持集 S ( A ) S(A) S(A)
空间X中A的隶属度大于0的对象的集合。
S ( A ) = { x , x ∈ X , μ A ( x ) > 0 } (4.3) S(A)=\{\boldsymbol{x}, \boldsymbol{x} \in X, \mu_A(\boldsymbol{x})>0\} \tag{4.3} S(A)={x,xX,μA(x)>0}(4.3)

4.3 算法思想

4.3.1 符号说明

  1. n n n个样本集合: { x i , i = 1 , 2 , . . . , 3 } \{\boldsymbol{x_i}, i=1,2,...,3\} {xi,i=1,2,...,3}
  2. 预定类别的数目: c c c
  3. 每个聚类的中心: m i , i = 1 , 2 , . . . , c \boldsymbol{m_i}, i=1,2,...,c mi,i=1,2,...,c
  4. i i i个样本对于第 j j j类的隶属度: μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)

(因为模糊集表示的是样本属于某个类的程度,所以要考虑所有的样本
模糊C-means的聚类损失函数可以写成:
J f = ∑ j = 1 c ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ 2 (4.4) J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \tag{4.4} Jf=j=1ci=1n[μj(xi)]bximj2(4.4)

C-means中的聚类损失函数为:
J e = ∑ i = 1 c ∑ y ∈ τ i ∣ ∣ y − m i ∣ ∣ 2 (1.2) J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2} Je=i=1cyτiymi2(1.2)

在公式4.4中, b b b代表控制聚类结果模糊程度的常数,通常为2。

  • b = 1 b=1 b=1:等同于C-means的确定性聚类结果
  • b > 1 b>1 b>1:控制模糊程度的聚类结果
  • b → ∞ b \rightarrow \infty b:完全模糊的解,各类算法都收敛到训练样本的中心,所有样本都以等同的概率归属各个类,所以没有聚类的意义。

4.3.2 FCM的损失函数

要求一个样本对于各个聚类的隶属度之和为1,用公式表示为 ∑ j = 1 c μ j ( x i ) = 1 , i = 1 , 2 , . . . , n \sum_{j=1}^c\mu_j(\boldsymbol{x_i})=1, i=1,2,...,n j=1cμj(xi)=1,i=1,2,...,n,结合限制条件,可以求得:
min ⁡ J f = ∑ j = 1 c ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ 2 s . t . ∑ j = 1 c [ μ j ( x i ) ] = 1 , i = 1 , 2 , . . . , n (4.5) \min J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \\ s.t. \sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n \tag{4.5} minJf=j=1ci=1n[μj(xi)]bximj2s.t.j=1c[μj(xi)]=1,i=1,2,...,n(4.5)
引入n个拉格朗日因子:
min ⁡ J f = ∑ j = 1 c ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ 2 − ∑ i = 1 n λ i ( ∑ j = 1 c [ μ j ( x i ) ] − 1 ) (4.6) \min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n\lambda_i(\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-1) \tag{4.6} minJf=j=1ci=1n[μj(xi)]bximj2i=1nλi(j=1c[μj(xi)]1)(4.6)
对均值 m j \boldsymbol{m_j} mj求导有:
∂ J f ∂ m j = − 2 ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ = − 2 ∑ i = 1 n [ μ j ( x i ) ] b x i + 2 ∑ i = 1 n [ μ j ( x i ) ] b m j m j = [ μ j ( x i ) ] b x i [ μ j ( x i ) ] b (4.7) \begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{4.7} mjJfmj=2i=1n[μj(xi)]bximj=2i=1n[μj(xi)]bxi+2i=1n[μj(xi)]bmj=[μj(xi)]b[μj(xi)]bxi(4.7)

对隶属度 μ j ( x j ) \mu_j(\boldsymbol{x_j}) μj(xj)求导,记 μ j ( x j ) \mu_j(\boldsymbol{x_j}) μj(xj) μ j i \mu_{ji} μji,后一半的求导结果为:
∂ J f ∂ μ j i = − ∂ ∂ μ j i ∑ i = 1 n λ i ( ∑ j = 1 c [ μ j i ] − 1 ) = − ∂ ∂ μ j i ∑ i = 1 n ( ∑ j = 1 c λ i [ μ j i ] − λ i ) = − ∑ i = 1 n ∑ j = 1 c λ i = − ∑ i = 1 n c λ i (4.8) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n c \lambda_i \end{aligned} \tag{4.8} μjiJf=μjii=1nλi(j=1c[μji]1)=μjii=1n(j=1cλi[μji]λi)=i=1nj=1cλi=i=1ncλi(4.8)

前一半的求导结果为:
∂ J f ∂ μ j i = ∑ i = 1 n ∑ j = 1 c b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \end{aligned} μjiJf=i=1nj=1cbμjib1ximj2

即令:
∂ J f ∂ μ j i = ∑ i = 1 n ∑ j = 1 c b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 − ∑ i = 1 n c λ i = 0 = ∑ i = 1 n ( ∑ j = 1 c b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 − c λ i ) = 0 (4.9) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2-\sum_{i=1}^n c \lambda_i=0\\ &=\sum_{i=1}^n (\sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i) = 0\\ \end{aligned} \tag{4.9} μjiJf=i=1nj=1cbμjib1ximj2i=1ncλi=0=i=1n(j=1cbμjib1ximj2cλi)=0(4.9)
即相当于:
∑ j = 1 c b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 − c λ i = 0 ∑ j = 1 c ( b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 − λ i ) = 0 ⇒ b μ j i b − 1 ∣ ∣ x i − m j ∣ ∣ 2 − λ i = 0 ⇒ μ j i = ( λ i b ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 (4.10) \begin{aligned} \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i =& 0\\ \sum_{j=1}^c (b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i)=& 0 \\ \Rightarrow b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i =& 0 \\ \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \end{aligned} \tag{4.10} j=1cbμjib1ximj2cλi=j=1c(bμjib1ximj2λi)=bμjib1ximj2λi=μji=000(bximj2λi)b11(4.10)
因为:
∑ j = 1 c [ μ j i ] = 1 \sum_{j=1}^c[\mu_{ji}]=1 j=1c[μji]=1
所以(等式4.11中,注意 λ i 1 b − 1 \lambda_i^{\frac{1}{b-1}} λib11实际上是在分母的位置)
∑ j = 1 c ( λ i b ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 = 1 ( λ i b ∣ ∣ x i − m 1 ∣ ∣ 2 ) 1 b − 1 + . . . + ( λ i b ∣ ∣ x i − m c ∣ ∣ 2 ) 1 b − 1 = 1 ∑ j = 1 c ( b ∣ ∣ x i − m j ∣ ∣ 2 ) − 1 b − 1 ( λ i ) − 1 b − 1 = 1 ∑ j = 1 c ( b ∣ ∣ x i − m j ∣ ∣ 2 ) − 1 b − 1 = ( λ i ) − 1 b − 1 1 ∑ j = 1 c ( b ∣ ∣ x i − m j ∣ ∣ 2 ) − 1 b − 1 = ( λ i ) 1 b − 1 1 ∑ j = 1 c ( 1 ( b ∣ ∣ x i − m j ∣ ∣ 2 ) ) 1 b − 1 = ( λ i ) 1 b − 1 (4.11) \begin{aligned} \sum_{j=1}^c( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}}&=1 \\ ( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_1}||^2})^{\frac{1}{b-1}}+...+( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_c}||^2})^{\frac{1}{b-1}}&=1 \\ \frac{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}{(\lambda_i)^{\frac{-1}{b-1}}}&=1 \\ \sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}&=(\lambda_i)^{\frac{-1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \end{aligned} \tag{4.11} j=1c(bximj2λi)b11(bxim12λi)b11+...+(bximc2λi)b11(λi)b11j=1c(bximj2)b11j=1c(bximj2)b11j=1c(bximj2)b111=j=1c((bximj2)1)b111==1=1=1=(λi)b11(λi)b11(λi)b11(4.11)
将4.11代入4.10
⇒ μ j i = ( λ i b ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 = 1 ∑ j = 1 c ( 1 ( b ∣ ∣ x i − m j ∣ ∣ 2 ) ) 1 b − 1 ( b ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 = 1 ( b ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 ∑ j = 1 c ( 1 ( b ∣ ∣ x i − m j ∣ ∣ 2 ) ) 1 b − 1 = 1 ( ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 ∑ j = 1 c ( 1 ( ∣ ∣ x i − m j ∣ ∣ 2 ) ) 1 b − 1 (4.12) \begin{aligned} \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \\\\ =& \frac{ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}} }{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}}\\\\ =& \frac{ \frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} }\\\\ =& \frac{ \frac{1}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{4.12} μji====(bximj2λi)b11(bximj2)b11j=1c((bximj2)1)b111j=1c((bximj2)1)b11(bximj2)b111j=1c((ximj2)1)b11(ximj2)b111(4.12)

4.3.3 具体步骤

  1. 设定聚类数目c和参数b
  2. 初始化各个聚类的中心 m i \boldsymbol{m_i} mi
  3. 重复下列运算,直到各个样本的隶属度稳定
    1. 根据聚类中心 m j \boldsymbol{m_j} mj计算隶属度函数 μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)
    2. 使用隶属度函数 μ j ( x i ) \mu_j(\boldsymbol{x_i}) μj(xi)更新隶属度。

5. 改进后的模糊C-Means方法

5.1 算法思想

FZM算法从样本的归属性方面进行了改进,但是针对野点的情况无法有效的解决。设想这样一种情况,某个样本远离各类的聚类中心,而FCM中要求该样本对于各类的隶属度之和为1,即 ∑ j = 1 c [ μ j ( x i ) ] = 1 , i = 1 , 2 , . . . , n \sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n j=1c[μj(xi)]=1,i=1,2,...,n,这样某个野点对最终的迭代效果具有很大的影响。

因此,为了克服此类情况,人们对限制条件进行了修改:
∑ j = 1 c ∑ i = 1 n [ μ j ( x i ) ] = n , i = 1 , 2 , . . . , n (5.1) \sum_{j=1}^{c}\sum_{i=1}^{n}[\mu_j(\boldsymbol{x_i})]=n, i=1,2,...,n \tag{5.1} j=1ci=1n[μj(xi)]=n,i=1,2,...,n(5.1)
在该条件下,拉格朗日函数为:
min ⁡ J f = ∑ j = 1 c ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ 2 − ∑ i = 1 n λ i ( ∑ k = 1 n ∑ j = 1 c [ μ j ( x i ) ] − n ) (5.2) \min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n \lambda_i(\sum_{k=1}^n\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-n) \tag{5.2} minJf=j=1ci=1n[μj(xi)]bximj2i=1nλi(k=1nj=1c[μj(xi)]n)(5.2)
对均值 m j \boldsymbol{m_j} mj求导结果不变,仍然为:
∂ J f ∂ m j = − 2 ∑ i = 1 n [ μ j ( x i ) ] b ∣ ∣ x i − m j ∣ ∣ = − 2 ∑ i = 1 n [ μ j ( x i ) ] b x i + 2 ∑ i = 1 n [ μ j ( x i ) ] b m j m j = [ μ j ( x i ) ] b x i [ μ j ( x i ) ] b (5.3) \begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{5.3} mjJfmj=2i=1n[μj(xi)]bximj=2i=1n[μj(xi)]bxi+2i=1n[μj(xi)]bmj=[μj(xi)]b[μj(xi)]bxi(5.3)

对隶属度 μ j ( x j ) \mu_j(\boldsymbol{x_j}) μj(xj)求导,记 μ j ( x j ) \mu_j(\boldsymbol{x_j}) μj(xj) μ j i \mu_{ji} μji,前一半的结果不变,后一半的求导结果为:
∂ J f ∂ μ j i = − ∂ ∂ μ j i ∑ i = 1 n λ i ( ∑ k = 1 n ∑ j = 1 c [ μ j i ] − 1 ) = − ∂ ∂ μ j i ∑ i = 1 n ( ∑ k = 1 n ∑ j = 1 c λ i [ μ j i ] − λ i ) = − ∑ i = 1 n ∑ k = 1 n ∑ j = 1 c λ i = − ∑ i = 1 n ∑ k = 1 n c λ i (5.4) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{k=1}^n\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{k=1}^n\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{k=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n \sum_{k=1}^n c \lambda_i \end{aligned} \tag{5.4} μjiJf=μjii=1nλi(k=1nj=1c[μji]1)=μjii=1n(k=1nj=1cλi[μji]λi)=i=1nk=1nj=1cλi=i=1nk=1ncλi(5.4)
后面的推导思想同(4.9)~(4.12),最后的结果为:
⇒ μ j i = n ( ∣ ∣ x i − m j ∣ ∣ 2 ) 1 b − 1 ∑ j = 1 c ∑ k = 1 n ( 1 ( ∣ ∣ x i − m j ∣ ∣ 2 ) ) 1 b − 1 (5.5) \begin{aligned} \Rightarrow \mu_{ji} =& \frac{ \frac{n}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c\sum_{k=1}^n (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{5.5} μji=j=1ck=1n((ximj2)1)b11(ximj2)b11n(5.5)

5.2 改进FCM的缺点

  1. 与C-means一样,仍然对聚类的初始值十分敏感,通常将使用C-means或者FCM处理样本后得到的结果作为初始值。
  2. 如果在迭代过程中出现某个聚类中心距离某个样本非常近,则最后可能得到只包含这一个样本的聚类

6. 参考文献

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值