当前位置: 首页 > news >正文

TFS-2005《A Possibilistic Fuzzy c-Means Clustering Algorithm》


2. 核心思想 (Core Idea)

这篇论文的核心思想是提出一种名为可能性-模糊c均值(Possibilistic Fuzzy c-Means, PFCM)的新型混合聚类算法,旨在综合并克服现有主流算法的缺陷。

作者认为,单一的聚类模型存在固有弱点:

  1. 模糊c均值(Fuzzy c-means, FCM): 其隶属度(membership)满足列和约束(∑i=1nuik=1\sum_{i=1}^n u_{ik} = 1i=1nuik=1),这导致一个严重问题:噪声点或离群点(outliers)即使距离所有簇中心都很远,只要它到两个中心的距离相等,就会被赋予较高的、相等的隶属度(如0.5),从而严重扭曲簇中心(原型)的计算。
  2. 可能性c均值(Possibilistic c-means, PCM): 其典型性(typicality)没有列和约束,只关注数据点到单个簇中心的绝对距离,对噪声点不敏感。但这带来了两个新问题:对初始化非常敏感,且容易产生重合簇(coincident clusters)——即多个簇中心收敛到几乎同一个位置。
  3. 模糊-可能性c均值(Fuzzy-possibilistic c-means, FPCM): 作者在1997年提出的模型,同时计算隶属度和典型性,但其典型性被约束为行和等于1(∑k=1ctik=1\sum_{k=1}^c t_{ik} = 1k=1ctik=1)。这导致当数据集很大时,每个数据点的典型性值会变得非常小,失去了实际意义。

PFCM的核心思想是进行一次“混合”(hybridization)

  • 保留FCM的优点:使用隶属度(uiku_{ik}uik)来保证数据点的“相对归属”关系,避免重合簇问题。
  • 保留PCM的优点:使用典型性(tikt_{ik}tik)来衡量数据点到簇中心的“绝对典型程度”,使其对噪声点不敏感。
  • 消除FPCM的缺陷移除FPCM中对典型性矩阵的行和约束(即不再要求∑k=1ctik=1\sum_{k=1}^c t_{ik} = 1k=1ctik=1),让典型性值可以自由地反映数据点的真实典型程度,不再受数据集大小的影响。

因此,PFCM的目标是同时生成一个模糊划分(隶属度矩阵 UUU)和一个可能性划分(典型性矩阵 TTT),并利用两者共同更新簇中心,从而获得对噪声鲁棒、能避免重合簇、且能提供更丰富数据解释的聚类结果。


3. 目标函数 (Objective Function)

PFCM的目标函数 JPFCMJ_{PFCM}JPFCM 是一个加权和,同时包含了FCM和PCM的目标函数项。其形式如下:

JPFCM(U,T,V;X)=∑i=1n∑k=1c(auikm+btikη)∥xi−vk∥2 J_{PFCM}(U, T, V; X) = \sum_{i=1}^n \sum_{k=1}^c \left( a u_{ik}^m + b t_{ik}^\eta \right) \| x_i - v_k \|^2 JPFCM(U,T,V;X)=i=1nk=1c(auikm+btikη)xivk2

其中:

  • X={x1,x2,...,xn}X = \{x_1, x_2, ..., x_n\}X={x1,x2,...,xn} 是包含 nnnppp 维数据点的数据集。
  • V={v1,v2,...,vc}V = \{v_1, v_2, ..., v_c\}V={v1,v2,...,vc}ccc 个簇的中心(原型)。
  • U=[uik]U = [u_{ik}]U=[uik]n×cn \times cn×c隶属度矩阵(fuzzy membership matrix),满足FCM的约束:对于每个数据点 iii,其隶属度之和为1,即 ∑k=1cuik=1\sum_{k=1}^c u_{ik} = 1k=1cuik=1,且 uik∈[0,1]u_{ik} \in [0, 1]uik[0,1]
  • T=[tik]T = [t_{ik}]T=[tik]n×cn \times cn×c典型性矩阵(typicality matrix),没有列和或行和约束,tik∈[0,1]t_{ik} \in [0, 1]tik[0,1]
  • ∥xi−vk∥\| x_i - v_k \|xivk 是数据点 xix_ixi 到簇中心 vkv_kvk 的欧氏距离(论文中指出可推广到任意内积范数)。
  • m>1m > 1m>1η>1\eta > 1η>1 是模糊指数(fuzzifier),控制隶属度和典型性分布的模糊程度。
  • a>0a > 0a>0b>0b > 0b>0 是用户定义的权重参数,用于调节隶属度和典型性在目标函数中的相对重要性。

这个目标函数清晰地体现了“混合”思想:第一项 a∑i∑kuikmdik2a \sum_{i} \sum_{k} u_{ik}^m d_{ik}^2aikuikmdik2 来自FCM,第二项 b∑i∑ktikηdik2b \sum_{i} \sum_{k} t_{ik}^\eta d_{ik}^2biktikηdik2 来自PCM。通过调整 aaabbb,可以控制算法的行为偏向FCM(aaa 大)还是PCM(bbb 大)。


4. 目标函数的详细优化过程 (Optimization Process)

PFCM采用交替优化(Alternating Optimization, AO)策略来最小化目标函数 JPFCMJ_{PFCM}JPFCM。该过程在隶属度 UUU、典型性 TTT 和簇中心 VVV 之间迭代进行,每次固定其中两个变量,优化另一个变量。

步骤1: 固定 TTTVVV,优化 UUU

TTTVVV 固定的情况下,最小化 JPFCMJ_{PFCM}JPFCM 等价于最小化 ∑i=1n∑k=1cauikmdik2\sum_{i=1}^n \sum_{k=1}^c a u_{ik}^m d_{ik}^2i=1nk=1cauikmdik2,这与FCM的优化问题完全相同。根据拉格朗日乘子法,可以得到最优隶属度 uiku_{ik}uik 的解析解:

uik=1∑j=1c(dik2dij2)1m−1 u_{ik} = \frac{1}{\sum_{j=1}^c \left( \frac{d_{ik}^2}{d_{ij}^2} \right)^{\frac{1}{m-1}}} uik=j=1c(dij2dik2)m111

步骤2: 固定 UUUVVV,优化 TTT

UUUVVV 固定的情况下,最小化 JPFCMJ_{PFCM}JPFCM 等价于最小化 ∑i=1n∑k=1cbtikηdik2\sum_{i=1}^n \sum_{k=1}^c b t_{ik}^\eta d_{ik}^2i=1nk=1cbtikηdik2。由于 TTT 的各个元素相互独立,我们可以对每个 tikt_{ik}tik 单独求偏导并令其为零:

∂JPFCM∂tik=bηtikη−1dik2=0 \frac{\partial J_{PFCM}}{\partial t_{ik}} = b \eta t_{ik}^{\eta-1} d_{ik}^2 = 0 tikJPFCM=bηtikη1dik2=0

解得:
tik=(γkdik2)1η−1 t_{ik} = \left( \frac{\gamma_k}{d_{ik}^2} \right)^{\frac{1}{\eta-1}} tik=(dik2γk)η11

其中,γk\gamma_kγk 是一个正的常数。在PCM中,γk\gamma_kγk 通常被解释为簇 kkk 的平均散布度(average variance),并且建议通过FCM的最终结果来设定,例如 γk=∑i=1nuikmdik2∑i=1nuikm\gamma_k = \frac{\sum_{i=1}^n u_{ik}^m d_{ik}^2}{\sum_{i=1}^n u_{ik}^m}γk=i=1nuikmi=1nuikmdik2在PFCM中,γk\gamma_kγk 仍然是一个需要用户设定或通过FCM初始化获得的关键参数

步骤3: 固定 UUUTTT,优化 VVV

UUUTTT 固定的情况下,最小化 JPFCMJ_{PFCM}JPFCM 是一个关于 VVV 的无约束优化问题。对 vkv_kvk 求偏导并令其为零:

∂JPFCM∂vk=2∑i=1n(auikm+btikη)(vk−xi)=0 \frac{\partial J_{PFCM}}{\partial v_k} = 2 \sum_{i=1}^n \left( a u_{ik}^m + b t_{ik}^\eta \right) (v_k - x_i) = 0 vkJPFCM=2i=1n(auikm+btikη)(vkxi)=0

解得簇中心 vkv_kvk 的更新公式为:

vk=∑i=1n(auikm+btikη)xi∑i=1n(auikm+btikη) v_k = \frac{\sum_{i=1}^n \left( a u_{ik}^m + b t_{ik}^\eta \right) x_i}{\sum_{i=1}^n \left( a u_{ik}^m + b t_{ik}^\eta \right)} vk=i=1n(auikm+btikη)i=1n(auikm+btikη)xi

这个公式是PFCM最核心的创新之一。它表明,新的簇中心 vkv_kvk 是所有数据点 xix_ixi 的加权平均,权重是隶属度的 mmm 次方和典型性的 η\etaη 次方的线性组合。这意味着:

  • 一个数据点 xix_ixi 对簇中心 vkv_kvk 的贡献由 auikm+btikηa u_{ik}^m + b t_{ik}^\etaauikm+btikη 决定。
  • 如果 xix_ixi 是噪声点,它的 uiku_{ik}uiktikt_{ik}tik 都会很小,因此权重极低,对 vkv_kvk 的影响微乎其微。
  • 通过调整 aaabbb,可以控制是更依赖“相对归属”(隶属度)还是“绝对典型”(典型性)来计算中心。

5. 主要贡献点 (Main Contributions)

  1. 提出PFCM新模型:创造性地将FCM和PCM模型融合,提出了PFCM这一新的混合聚类框架。
  2. 解决关键缺陷:成功解决了三种经典模型的致命问题:
    • 解决了FCM对噪声敏感的问题(通过引入典型性)。
    • 解决了PCM易产生重合簇的问题(通过引入隶属度及其列和约束)。
    • 解决了FPCM因行和约束导致典型性值过小的问题(通过移除行和约束)。
  3. 提供更丰富的信息:PFCM输出三个结果:隶属度矩阵 UUU、典型性矩阵 TTT 和簇中心 VVV。这为数据提供了更全面的解读:UUU 告诉我们一个点“属于”哪个簇(相对关系),TTT 告诉我们一个点“有多典型”(绝对关系),从而可以更可靠地识别出噪声点(TTT 值很低的点)。
  4. 增强鲁棒性:由于同时利用了 UUUTTT,PFCM的簇中心对噪声和离群点具有很强的鲁棒性。
  5. 参数灵活性:通过参数 aaabbb,用户可以灵活地调整算法的行为,使其在FCM和PCM之间平滑过渡。

6. 算法实现过程 (Algorithm Implementation)

以下是PFCM算法的详细实现步骤(基于文中的Theorem PFCM和Appendix的PFCM-AO算法):

输入:数据集 X={x1,...,xn}X = \{x_1, ..., x_n\}X={x1,...,xn},簇数 ccc,模糊指数 m>1m > 1m>1, η>1\eta > 1η>1,权重参数 a>0a > 0a>0, b>0b > 0b>0,收敛阈值 ϵ\epsilonϵ,最大迭代次数。
输出:隶属度矩阵 UUU,典型性矩阵 TTT,簇中心 VVV

  1. 初始化

    • 初始化簇中心 V(0)V^{(0)}V(0)。一个常用且稳健的方法是先运行FCM算法得到其最终的簇中心,然后用这些中心作为PFCM的初始 VVV
    • (可选)根据初始 VVV 运行一次FCM,得到初始隶属度 U(0)U^{(0)}U(0)
    • 使用初始 VVVU(0)U^{(0)}U(0),根据公式 γk=∑i=1nuikmdik2∑i=1nuikm\gamma_k = \frac{\sum_{i=1}^n u_{ik}^m d_{ik}^2}{\sum_{i=1}^n u_{ik}^m}γk=i=1nuikmi=1nuikmdik2 计算每个簇的参数 γk\gamma_kγk
    • 使用 γk\gamma_kγk 和初始 VVV,根据公式 tik=(γkdik2)1η−1t_{ik} = \left( \frac{\gamma_k}{d_{ik}^2} \right)^{\frac{1}{\eta-1}}tik=(dik2γk)η11 计算初始典型性 T(0)T^{(0)}T(0)
    • 设置迭代计数器 l=0l = 0l=0
  2. 迭代优化

    • 重复执行以下步骤,直到收敛
      • (a) 更新隶属度 UUU:使用当前的簇中心 V(l)V^{(l)}V(l),根据公式更新每个 uiku_{ik}uik
        uik(l+1)=1∑j=1c(∥xi−vk(l)∥2∥xi−vj(l)∥2)1m−1 u_{ik}^{(l+1)} = \frac{1}{\sum_{j=1}^c \left( \frac{\| x_i - v_k^{(l)} \|^2}{\| x_i - v_j^{(l)} \|^2} \right)^{\frac{1}{m-1}}} uik(l+1)=j=1c(xivj(l)2xivk(l)2)m111
      • (b) 更新典型性 TTT:使用当前的簇中心 V(l)V^{(l)}V(l) 和预先设定/计算的 γk\gamma_kγk,根据公式更新每个 tikt_{ik}tik
        tik(l+1)=(γk∥xi−vk(l)∥2)1η−1 t_{ik}^{(l+1)} = \left( \frac{\gamma_k}{\| x_i - v_k^{(l)} \|^2} \right)^{\frac{1}{\eta-1}} tik(l+1)=(xivk(l)2γk)η11
      • © 更新簇中心 VVV:使用更新后的 U(l+1)U^{(l+1)}U(l+1)T(l+1)T^{(l+1)}T(l+1),根据公式更新每个 vkv_kvk
        vk(l+1)=∑i=1n(a(uik(l+1))m+b(tik(l+1))η)xi∑i=1n(a(uik(l+1))m+b(tik(l+1))η) v_k^{(l+1)} = \frac{\sum_{i=1}^n \left( a (u_{ik}^{(l+1)})^m + b (t_{ik}^{(l+1)})^\eta \right) x_i}{\sum_{i=1}^n \left( a (u_{ik}^{(l+1)})^m + b (t_{ik}^{(l+1)})^\eta \right)} vk(l+1)=i=1n(a(uik(l+1))m+b(tik(l+1))η)i=1n(a(uik(l+1))m+b(tik(l+1))η)xi
      • (d) 检查收敛:计算簇中心的变化量 Δ=max⁡k∥vk(l+1)−vk(l)∥\Delta = \max_k \| v_k^{(l+1)} - v_k^{(l)} \|Δ=maxkvk(l+1)vk(l)。如果 Δ<ϵ\Delta < \epsilonΔ<ϵ 或达到最大迭代次数,则停止迭代;否则,令 l=l+1l = l + 1l=l+1,并返回步骤(a)。
  3. 输出结果:返回最终的 U(l+1)U^{(l+1)}U(l+1), T(l+1)T^{(l+1)}T(l+1), V(l+1)V^{(l+1)}V(l+1)

关键实现要点

  • γk\gamma_kγk 的设定至关重要。如果 γk\gamma_kγk 太小,典型性值会过高,导致所有点都显得很典型;如果 γk\gamma_kγk 太大,典型性值会过低,导致所有点都不典型。使用FCM的最终结果来初始化 γk\gamma_kγk 是一个非常有效的策略。
  • 参数 aaabbb 的选择:通常建议 bbb 不要太小,以确保典型性能够有效抑制噪声的影响。论文中的例子多使用 a=b=1a=b=1a=b=1 作为起点。
  • 初始化的重要性:虽然PFCM比PCM更鲁棒,但良好的初始化(如使用FCM的结果)仍然能显著提高算法的稳定性和收敛速度。
http://www.dtcms.com/a/359924.html

相关文章:

  • 商业航天:中、美、欧“软件定义卫星” 路线全解析
  • Iterative loop of ML development|机器学习的迭代发展
  • JavaEE初阶网络原理-初识
  • PythonDay42
  • 提取动漫图像轮廓并拟合为样条曲线(MATLAB)
  • Mysql学习 Day3 Explain详解与索引优化
  • APB验证VIP Agent的各个组件之间的通信
  • SpringAI应用开发面试实录:核心技术、架构设计与业务场景全解析
  • React前端开发_Day12_极客园移动端项目
  • 解决 uni-app 中大数据列表的静默UI渲染失败问题
  • UniApp 基础开发第一步:HBuilderX 安装与环境配置
  • Wi-Fi技术——物理层技术
  • 【C++】构造函数初始化详解
  • 漫谈《数字图像处理》之基函数与基图像
  • 分布式测试平台ITP:让自动化测试更高效、更稳定
  • IS-IS 与 OSPF 协议机制比较
  • 软考 系统架构设计师系列知识点之杂项集萃(138)
  • 【Proteus仿真】开关控制系列仿真——开关控制LED/拨码开关二进制计数/开关和继电器控制灯灭
  • Java试题-选择题(26)
  • zkML-JOLT——更快的ZK隐私机器学习:Sumcheck +Lookup
  • 【iOS】MVC架构
  • OpenCL C 内核(Kernel)
  • 在实践中学Java(中)面向对象
  • Elasticsearch vs Solr vs OpenSearch:搜索引擎方案对比与索引设计最佳实践
  • [光学原理与应用-353]:ZEMAX - 设置 - 可视化工具:2D视图、3D视图、实体模型三者的区别,以及如何设置光线的数量
  • 设计模式概述:为什么、是什么与如何应用
  • Ethers.js vs Wagmi 的差异
  • 如何利用AI IDE快速构建一个简易留言板系统
  • Playwright Python 教程:实战篇
  • 外贸服装跟单软件怎么选才高效?