模糊聚类总结--基于对距离的改进

mo模糊聚类算法总结
基础的常用聚类算法:k-means (Macqueen, 1967), C-means (Bezdek, 1981) (Dunn, 1974), and possibilistic C-means (Krishnapuram & Keller, 1996).

根据模糊聚类的更新公式和参数,模糊聚类可从以下方式改进:
Fuzzy trees and forests—Review

Fuzzy-C-means:

目标函数:最小化簇内误差平方和(Within-Cluster Sum of Squares, WCSS)
J = ∑ i = 1 c ∑ k = 1 N μ i k m d i k 2 J = \sum_{i=1}^{c} \sum_{k=1}^{N}\mu_{ik}^m d_{ik}^2 J=i=1ck=1Nμikmdik2
其中, N N N是训练集中的样本数量, μ i k \mu_{ik} μik是第 i i i个簇中第 k k k个样本的隶属度, m m m是模糊化参数, d i k d_{ik} dik是第 k k k个样本与第 i i i个簇之间的距离。令 x k x_k xk 为样本, v i v_i vi i i i 簇的原型(簇中心)。距离 d i k d_{ik} dik定义为:
d i k = ∣ ∣ x k − v i ∣ ∣ d_{ik} = \mid\mid x_k - v_i \mid\mid dik=∣∣xkvi∣∣
这是一个距离函数。针对不同问题,可采用欧式距离、核函数距离、曼哈顿距离、切比雪夫距离或马哈拉诺比斯距离等。
簇中心更新公式:
v i = ∑ k = 1 N μ i k m x k ∑ k = 1 N μ i k m v_i = \frac{\sum_{k=1}^{N}\mu_{ik}^m x_k}{\sum_{k=1}^{N}\mu_{ik}^m} vi=k=1Nμikmk=1Nμikmxk
其中, i = 1 , 2 , … , c i = 1,2,\dots,c i=1,2,,c.
模糊划分矩阵更新公式为:
μ i k = 1 ∑ j = 1 c ( d i k d i k ) 2 m − 1 \mu_{ik} = \frac{1}{\sum_{j=1}^{c}(\frac{d_{ik}}{d_{ik}})^{\frac{2}{m-1}}} μik=j=1c(dikdik)m121
其中, i = 1 , 2 , … , c i = 1,2,\dots,c i=1,2,,c k = 1 , 2 , … , N k = 1,2,\dots,N k=1,2,,N.

基于Minkowski 距离的模糊聚类算法:

优势: 适用不同的簇形状 优势:\textbf{适用不同的簇形状} 优势:适用不同的簇形状
Minkowski 距离距离公式:
d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d(\mathbf{x}, \mathbf{y}) = \left( \sum_{i=1}^n |x_i - y_i|^p \right)^{\frac{1}{p}} d(x,y)=(i=1nxiyip)p1
Groenen、Kaymak 和 van Rosmalen (2007) 提出了采用 Minkowski 距离函数方法的模糊聚类。最小化目标函数:
J = ∑ i = 1 c ∑ k = 1 N u i k m d i k 2 λ J = \sum_{i=1}^c \sum_{k=1}^N u_{ik}^m d_{ik}^{2\lambda} J=i=1ck=1Nuikmdik2λ
限制条件: 0 ≤ u i k ≤ 1 , ∑ i = 1 c u i k = 1 0 \leq u_{ik} \leq 1, \quad \sum_{i=1}^c u_{ik} = 1 0uik1,i=1cuik=1。其中,λ 为 Minkowski 距离的 λ 次根,sh 为定义簇形状的参数。样本 x k x_k xk 和簇 c i c_i ci之间的距离可以通过以下方式定义:
d i k 2 λ = ( ∑ j = 1 n ∣ x k j − v i j ∣ s h ) 2 λ s h , 1 ≤ s h < ∞ , 0 ≤ λ ≤ 1 d_{ik}^{2\lambda} = \left( \sum_{j=1}^n \left| x_{kj} - v_{ij} \right|^{sh} \right)^{\frac{2\lambda}{sh}}, \quad 1 \leq sh < \infty, \quad 0 \leq \lambda \leq 1 dik2λ=(j=1nxkjvijsh)sh2λ,1sh<,0λ1
注意: j = 1 , 2 ⋯   , n j = 1,2\cdots,n j=1,2,n是样本为度。其实,Minkowski 距离公式没变,只是等式两边都进行了 2 λ 2\lambda 2λ次方。 λ 值越大,小距离和大距离之间的差异非常显著。λ 值越大,差异会减小。

注意 \textbf{注意} 注意:可以使用参数 sh 调整簇的形状以适应特定问题。对于 sh = 2,簇是圆形的。当 sh = 1 时,簇呈菱形或旋转方形。 s h → ∞ sh \rightarrow ∞ sh ,簇是矩形且平行于轴。当数据结构的形状类似于矩形且具有锐利边缘时,接近 1 或 ∞ 的参数 sh 值可能很有用(Bobrowski & Bezdek,1991)。

簇中心更新公式:
v i j = ∑ k = 1 N a i j k x k j ∑ k = 1 N a i j k , i = 1 , 2 , … , c , j = 1 , 2 , … , n v_{ij} = \frac{\sum_{k=1}^N a_{ijk} x_{kj}}{\sum_{k=1}^N a_{ijk}}, \quad i = 1, 2, \dots, c, \quad j = 1, 2, \dots, n vij=k=1Naijkk=1Naijkxkj,i=1,2,,c,j=1,2,,n
其中, a i j k = u i k m d i k 2 λ − s h ( x k j − v i j ) s h − 2 a_{ijk} = u_{ik}^m d_{ik}^{2\lambda - sh} \left( x_{kj} - v_{ij} \right)^{sh - 2} aijk=uikmdik2λsh(xkjvij)sh2

隶属度更新公式为:
u i k = ( d i k 2 λ ) − 1 m − 1 ∑ l = 1 c ( d l k 2 λ ) − 1 m − 1 u_{ik} = \frac{\left( d_{ik}^{2\lambda} \right)^{-\frac{1}{m-1}}}{\sum_{l=1}^c \left( d_{lk}^{2\lambda} \right)^{-\frac{1}{m-1}}} uik=l=1c(dlk2λ)m11(dik2λ)m11
其中 m 是模糊化参数,其取值范围为 m ≥ 1 , m 越大, − 1 m − 1 \frac{−1}{ m−1 } m11越接近 0。因此, ( d i k 2 λ ) − 1 m − 1 \left( d_{ik}^{2\lambda} \right)^{-\frac{1}{m-1}} (dik2λ)m11越接近 1。大多数情况下 m 值相对较小,常取值2.

基于包含度的模糊聚类算法:

将距离概念换为包含度:
基于包含的模糊聚类的概念是在(Nefti-Meziani & Oussalah,2007)中提出的。在执行该聚类方法之前应该做的第一件事是构建包含索引。设 G i G_i Gi 为第 i i i 个高斯模糊集, m i m_i mi 为第 i i i个高斯模糊集的平均值, σ i σ_i σi 为第 i 个高斯模糊集的标准差(SD), σ i \sigma_i σi = σ i \sigma_i σi为第 i i i 个高斯模糊集的 SD 乘以3(这种简化是因为高斯模糊集 98% 的值集中在区间 [ m − σ , m + σ ] [m − \sigma, m + \sigma] [mσ,m+σ]。包含索引可以定义为:
I d 1 ( G 1 , G 2 ) = { σ 1 ′ + σ 2 ′ − ∣ m 1 − m 2 ∣ 2 σ 1 ′ , if  0 ≤ σ 1 ′ + σ 2 ′ − ∣ m 1 − m 2 ∣ ≤ 2 σ 1 ′ 0 , if  σ 1 ′ + σ 2 ′ − ∣ m 1 − m 2 ∣ < 0 1 , if  σ 1 ′ + σ 2 ′ − ∣ m 1 − m 2 ∣ > 2 σ 1 ′ Id_1(G_1, G_2) = \begin{cases} \frac{\sigma_1' + \sigma_2' - |m_1 - m_2|}{2\sigma_1'}, & \text{if } 0 \leq \sigma_1' + \sigma_2' - |m_1 - m_2| \leq 2\sigma_1' \\ 0, & \text{if } \sigma_1' + \sigma_2' - |m_1 - m_2| < 0 \\ 1, & \text{if } \sigma_1' + \sigma_2' - |m_1 - m_2| > 2\sigma_1' \end{cases} Id1(G1,G2)= 2σ1σ1+σ2m1m2,0,1,if 0σ1+σ2m1m22σ1if σ1+σ2m1m2<0if σ1+σ2m1m2>2σ1
为了避免在计算 i d 1 id_1 id1 时使用绝对值,可以用以下方式:
I d 2 ( G 1 , G 2 ) = { ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 4 ( σ 1 ′ ) 2 , if  0 ≤ ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 ≤ 4 ( σ 1 ′ ) 2 0 , if  ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 < 0 1 , if  ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 > 4 ( σ 1 ′ ) 2 Id_2(G_1, G_2) = \begin{cases} \frac{(\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2}{4(\sigma_1')^2}, & \text{if } 0 \leq (\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2 \leq 4(\sigma_1')^2 \\ 0, & \text{if } (\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2 < 0 \\ 1, & \text{if } (\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2 > 4(\sigma_1')^2 \end{cases} Id2(G1,G2)= 4(σ1)2(σ1+σ2)2(m1m2)2,0,1,if 0(σ1+σ2)2(m1m2)24(σ1)2if (σ1+σ2)2(m1m2)2<0if (σ1+σ2)2(m1m2)2>4(σ1)2
使用阶跃函数 ST 定义为:
S T ( x , a ) = { 0 , if  x < a 1 2 , if  x = a 1 , if  x > a ST(x, a) = \begin{cases} 0, & \text{if } x < a \\ \frac{1}{2}, & \text{if } x = a \\ 1, & \text{if } x > a \end{cases} ST(x,a)= 0,21,1,if x<aif x=aif x>a
公式改为:
I d 2 ( G 1 , G 2 ) = ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 4 ( σ 1 ′ ) 2 S T ( ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 ) + 4 ( σ 1 ′ ) 2 − ( σ 1 ′ + σ 2 ′ ) 2 + ( m 1 − m 2 ) 2 4 ( σ 1 ′ ) 2 S T ( ( σ 1 ′ + σ 2 ′ ) 2 − ( m 2 − m 2 ) 2 − 4 ( σ 1 ′ ) 2 ) Id_2(G_1, G_2) = \frac{(\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2}{4(\sigma_1')^2} ST\left((\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2\right)+ \frac{4(\sigma_1')^2 - (\sigma_1' + \sigma_2')^2 + (m_1 - m_2)^2}{4(\sigma_1')^2} ST\left((\sigma_1' + \sigma_2')^2 - (m_2 - m_2)^2 - 4(\sigma_1')^2\right) Id2(G1,G2)=4(σ1)2(σ1+σ2)2(m1m2)2ST((σ1+σ2)2(m1m2)2)+4(σ1)24(σ1)2(σ1+σ2)2+(m1m2)2ST((σ1+σ2)2(m2m2)24(σ1)2)
当第一组完全包含于第二组中时,以上形式的方程达到最大值。当第一组包含第二组时,下面的公式可以处理这种情况:
I d 3 ( G 1 , G 2 ) = { ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 4 ( σ 1 ′ ) 2 , for  ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 ≥ 0 0 , for  ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 < 0 Id_3(G_1, G_2) = \begin{cases} \frac{(\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2}{4(\sigma_1')^2}, & \text{for } (\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2 \geq 0 \\ 0,& \text{for } (\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2 < 0 \end{cases} Id3(G1,G2)={4(σ1)2(σ1+σ2)2(m1m2)2,0,for (σ1+σ2)2(m1m2)20for (σ1+σ2)2(m1m2)2<0
或者使用阶跃函数的形式
I d 3 ( G 1 , G 2 ) = ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 4 ( σ 1 ′ ) 2 S T ( ( σ 1 ′ + σ 2 ′ ) 2 − ( m 1 − m 2 ) 2 ) Id_3(G_1, G_2) = \frac{(\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2}{4(\sigma_1')^2} ST\left((\sigma_1' + \sigma_2')^2 - (m_1 - m_2)^2\right) Id3(G1,G2)=4(σ1)2(σ1+σ2)2(m1m2)2ST((σ1+σ2)2(m1m2)2)
通过这种方式获得的包含指数用于基于包含的模糊聚类方法。该算法是为每个类找到一个原型,使属于该类的高斯集合上的总体包含度最大化。问题转换为最大化目标函数(加了负号):
J = − ∑ i = 1 c ∑ k = 1 N I d 3 ( G k , G v i ) u i k m J = - \sum_{i=1}^c \sum_{k=1}^N Id_3(G_k, G_{vi}) u_{ik}^m J=i=1ck=1NId3(Gk,Gvi)uikm
以上方程容易导致所有原型的分布(SD)趋向于其最大值。为了避免这种影响,可以使用以下公式:
J = − ∑ i = 1 c ∑ k = 1 N I d 3 ( G k , G v i ) u i k m w + ∑ i = 1 c ∑ k = 1 N ( x k − v i ) T I ( x k − v i ) u i k m w > 0 J = - \sum_{i=1}^c \sum_{k=1}^N Id_3(G_k, G_{vi}) u_{ik}^m w+ \sum_{i=1}^c \sum_{k=1}^N (x_k - v_i)^T I (x_k - v_i) u_{ik}^m w > 0 J=i=1ck=1NId3(Gk,Gvi)uikmw+i=1ck=1N(xkvi)TI(xkvi)uikmw>0
其中 I I I是单位矩阵, w w w 是权重。

在这种形式中,方程表示最大化簇中心 G v i Gv_i Gvi 中每个元素的包含指数与最小化原型到这些元素的距离之间的平衡。该方程可用于实现划分矩阵 U 值的迭代过程。该算法将一直工作,直到该矩阵达到稳定值。

基于上下文的模糊聚类

Context-based clustering(Pedrycz,1996)的思想是通过应用上下文来搜索数据组。聚类的一般任务,表述为揭示数据 X X X 中的结构,基于上下文的聚类被重新表述为揭示上下文 A A A 中数据 X X X 的结构,其中 A A A 是感兴趣的信息颗粒(聚类的上下文)。

算法中使用聚类机制的条件方面(上下文敏感性),考虑条件变量(上下文),假设相应样本上的值 f 1 f_1 f1, f 2 , … , f N f_2,\dots, f_N f2,fN。换句话说, f k f_k fk x k x_k xk 在所考虑的上下文中的参与度, f k = A ( x k ) f_k = A(x_k) fk=A(xk) f k f_k fk x k x_k xk 对各个簇隶属度值(例如 μ 1 k , μ 2 k , . . . , μ C k \mu_{1k}, \mu_{2k},..., \mu_{Ck} μ1k,μ2k,...,μCk)连接,如下式所示:
∑ i = 1 c u i k = f k , k = 1 , 2 , … , N \sum_{i=1}^c u_{ik} = f_k, \quad k = 1, 2, \dots, N i=1cuik=fk,k=1,2,,N
所选上下文直接影响聚类结果。上下文 A A A的有限的支持没有考虑这些隶属值等于0的数据点。这意味着只有原始数据的某个子集可用于进一步聚类。考虑到这一事实,划分矩阵 U U U 之前的定义
U = { u i k ∈ [ 0 , 1 ]   ∣   ∑ i = 1 c u i k = 1  and  0 < ∑ k = 1 N u i k < N ∀ i } U = \left\{ u_{ik} \in [0, 1] \, \Bigg| \, \sum_{i=1}^c u_{ik} = 1 \text{ and } 0 < \sum_{k=1}^N u_{ik} < N \forall i \right\} U={uik[0,1] i=1cuik=1 and 0<k=1Nuik<Ni}
被修改为
U ( A ) = { u i k ∈ [ 0 , 1 ]   ∣   ∑ i = 1 c u i k = f k   ∀ k  and  0 < ∑ k = 1 N u i k < N ∀ i } U(A) = \left\{ u_{ik} \in [0, 1] \, \Bigg| \, \sum_{i=1}^c u_{ik} = f_k \, \forall k \text{ and } 0 < \sum_{k=1}^N u_{ik} < N \forall i \right\} U(A)={uik[0,1] i=1cuik=fkk and 0<k=1Nuik<Ni}
整个基于上下文的模糊聚类算法可以概括为以下步骤:

  1. 聚类数 C C C,确定聚类终止条件 ε (ε > 0)、距离函数 ∣ ∣ ∗ ∣ ∣ \mid\mid * \mid\mid ∣∣∣∣,模糊化参数 m m m(默认 2),然后初始化划分矩阵 U U U,目标函数为: J = ∑ i = 1 c ∑ k = 1 N μ i k m d i k 2 J = \sum_{i=1}^{c} \sum_{k=1}^{N}\mu_{ik}^m d_{ik}^2 J=i=1ck=1Nμikmdik2
  2. 使用标准 FCM 算法计算簇中心
    v i = ∑ k = 1 N μ i k m x k ∑ k = 1 N μ i k m v_i = \frac{\sum_{k=1}^{N}\mu_{ik}^m x_k}{\sum_{k=1}^{N}\mu_{ik}^m} vi=k=1Nμikmk=1Nμikmxk
  3. 更新分区矩阵
    μ i k = f k ∑ j = 1 c ( d i k d i k ) 2 m − 1 \mu_{ik} = \frac{f_k}{\sum_{j=1}^{c}(\frac{d_{ik}}{d_{ik}})^{\frac{2}{m-1}}} μik=j=1c(dikdik)m12fk
    其中, i , j = 1 , 2 , … , c i , j= 1,2,\dots,c i,j=1,2,,c k = 1 , 2 , … , N k = 1,2,\dots,N k=1,2,,N.
  4. 比较 U o l d U_{old} Uold U n e w U_{new} Unew。如果 ∣ U n e w − U o l d ∣ ≤ ε \mid U_{new}-U_{old}\mid \leq ε UnewUold∣≤ε,则停止聚类(这里也可以设置更新前后的目标函数差小于一个常数 δ \delta δ)。否则返回步骤2,并设置 U n e w U_{new} Unew等于 U o l d U_{old} Uold继续迭代计算。

参考文献:Fuzzy trees and forests—Review 为了解模糊聚类提供了不一样的视角

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值