跳到主要内容

模糊 C-均值聚类

一、直观理解:一个人可以“七分像 A 类、三分像 B 类”​

硬聚类强迫每个样本只属于一个簇。模糊 C-均值(Fuzzy C-Means, FCM)允许隶属度 uik∈[0,1]u_{ik}\in[0,1],表示样本 ii 属于簇 kk 的程度,且通常 ∑kuik=1\sum_k u_{ik}=1。

像口味测评:一道菜不必非甜即咸,可以 0.7 甜、0.3 咸。边界样本不再被粗暴一刀切,适合类与类有过渡带的社会经济、遥感像元、体质分型等问题。

二、适用场景与优缺点​

类型说明
适用场景簇边界模糊;需要隶属度做软标签或二次分析;球状簇结构;中等规模数值数据。
核心优点软分配信息丰富;目标函数清晰;可退化为接近硬聚类(m→1+m\to 1^+ 时更硬)。
局限与缺点要定簇数 cc 与模糊度 mm;对噪声/离群仍敏感(有 PCM 等改进);非凸簇不擅长;可能收敛到局部最优。

三、核心原理​

目标:

Jm=∑i=1n∑k=1cuikm∥xi−vk∥2J_m=\sum_{i=1}^{n}\sum_{k=1}^{c}u_{ik}^m\|x_i-v_k\|^2

约束 uik≥0, ∑k=1cuik=1u_{ik}\ge 0,\ \sum_{k=1}^{c}u_{ik}=1。m>1m>1 为模糊指数,常用 m=2m=2。

交替更新:

vk=∑iuikmxi∑iuikmv_k=\frac{\sum_i u_{ik}^m x_i}{\sum_i u_{ik}^m} uik=(∑j=1c(∥xi−vk∥∥xi−vj∥)2m−1)−1u_{ik}=\Big(\sum_{j=1}^{c}\Big(\frac{\|x_i-v_k\|}{\|x_i-v_j\|}\Big)^{\frac{2}{m-1}}\Big)^{-1}

直觉:离中心越近隶属度越高;所有簇中心以隶属度幂为权重的加权均值。

硬标签可取 arg⁡max⁡kuik\arg\max_k u_{ik};也可保留隶属度向量。

四、关键决策​

决策点建议
cc模糊划分系数、XB 指数、轮廓(硬化后)
mm默认 2;增大则更模糊
初值多随机;或用 K-means 中心启动
标准化需要
噪声高噪声考虑减噪或可能性 C-均值等

五、MATLAB 示例​

rng(3);
X = [randn(40,2)+[0 0]; randn(40,2)+[3 1]];
Xz = zscore(X);

c = 2;
opts = [2, 100, 1e-5, false]; % [m, maxIter, minImprov, display]
[centers, U] = fcm(Xz, c, opts);

% U: c x n 隶属度
[~, idx] = max(U, [], 1);
idx = idx';

figure;
scatter(Xz(:,1), Xz(:,2), 40, U(1,:), "filled");
colorbar; hold on;
plot(centers(:,1), centers(:,2), "kx", "MarkerSize", 12, "LineWidth", 2);
title("FCM:颜色表示属于簇1的隶属度");

% 模糊划分系数(越近1越清晰)
n = size(Xz,1);
PC = sum(U(:).^2) / n;
fprintf("Partition Coefficient = %.3f\n", PC);

% 不同 c 比较
for cc = 2:5
[~, Ucc] = fcm(Xz, cc, opts);
PC = sum(Ucc(:).^2) / n;
% 简化 XB:紧致/分离
fprintf("c=%d, PC=%.3f\n", cc, PC);
end

% 输出边界样本:max 隶属度不高
maxu = max(U, [], 1);
bound = find(maxu < 0.65);
fprintf("模糊边界样本数:%d\n", numel(bound));

若无 fcm,可自写迭代:随机初始化 UU,交替更新 vv 与 UU 直至 ∥U(t+1)−U(t)∥\|U^{(t+1)}-U^{(t)}\| 小。

六、如何解释结果​

  1. 中心 + 高隶属度成员 画像;
  2. 隶属度直方图:是否多数样本很硬、边界多少;
  3. 地图/散点着色:展示过渡带;
  4. 硬化后指标:与 K-means 对比;
  5. 报告:c,mc,m、停止准则、PC/XB、典型模糊点。

七、常见误区​

1. 把隶属度当后验概率​

它是目标函数下的归属程度,未必是生成模型概率(GMM 才是)。

2. mm 过大致所有 u≈1/cu\approx 1/c​

过度模糊失去信息。

3. 忽视局部最优​

多次初始化。

4. 非球状簇硬用 FCM​

与 K-means 类似局限。

5. 离群点高隶属干扰中心​

可先清洗或改稳健模糊聚类。

附:建模论文中的写法要点​

  1. 问题对应:用一两句话说明为何该方法匹配题目数据结构与目标(分类/分群/排序/效率)。
  2. 符号与步骤:按“输入 → 预处理 → 核心计算 → 输出指标”列出编号步骤,公式与代码变量名一致。
  3. 参数表:列出全部可调参数、取值、选取依据(CV、信息准则、业务约束或灵敏度)。
  4. 结果呈现:主结果用表格;辅以 1–2 张图(边界、树状图、得分条形图、效率分解等)。
  5. 稳健性:至少做一种扰动——删点、换权重、换距离、换初值或换阈值,观察结论是否保持。
  6. 局限:主动写明假设(球状簇、线性可分、CRS、完全补偿等)及适用边界,避免被质询时被动。

若主方法结论与合理基线(如 K-means 对 GMM、加权和对 TOPSIS、CCR 对 BCC)严重冲突,应回到数据质量与指标方向检查,而不是只报告“更好看”的一种结果。

附:计算检查清单​

在提交结果前,建议按下列清单快速自检:

  1. 输入矩阵:行/列含义是否与正文一致,有无缺失、重复行、单位混用。
  2. 方向与尺度:极小型是否已正向化;聚类/距离类是否已标准化;评价类权重是否归一。
  3. 参数来源:所有阈值、簇数、核宽、理想解定义能否在正文找到依据。
  4. 数值稳定:协方差/相关是否接近奇异;DEA 线性规划是否全部求解成功;对数/除零是否加保护。
  5. 随机性:涉及随机初值的算法是否固定种子并报告多次结果的稳定性。
  6. 验证协议:分类任务是否严格隔离测试集;重采样/SMOTE 是否仅用于训练折。
  7. 图表编号:主结论表与图在正文中被引用,而不是只放附录。
  8. 可复现:给出软件版本(如 MATLAB R20xx)与关键函数名,使读者能重跑最小示例。

不满足清单中任一项时,优先修正流程,再讨论“方法先进性”。对综合评价题,额外检查:更换一种合理权重后,前三名是否大体稳定;若剧烈跳动,应降低对精细名次的措辞强度。

八、小结​

模糊 C-均值用隶属度描述软归属,在球状簇与边界过渡明显的问题中比硬划分更贴近现实。

当论文需要“属于各类的程度”而非非黑即白标签时,FCM 是直接选择;若要概率生成解释,可进一步采用 GMM。