模糊聚类

模糊聚类（Fuzzy clustering，亦称软聚类或软k-平均）是聚类的一种形式，在这种聚类中，每个数据点可以属于不止一个聚类簇。

聚类或聚类分析涉及将数据点分配到不同的聚类簇中，使得同一聚类簇中的项尽可能相似，而属于不同聚类簇的项尽可能不同。聚类簇是通过相似性度量来识别的。这些相似性度量包括距离、连通性和强度。可以根据数据或特定的应用选择不同的相似性度量。

## 与硬聚类的比较

在非模糊聚类（也称为硬聚类）中，数据被划分为完全不同的聚类簇，每个数据点只能严格属于一个特定的聚类簇。而在模糊聚类中，数据点可能同时属于多个聚类簇。例如，一个苹果可以是红色的或绿色的（硬聚类），但一个苹果也可以既是红色的又是绿色的（模糊聚类）。在这里，这个苹果可以在一定程度上属于红色，也可以在一定程度上属于绿色。苹果不再是只属于绿色 绿色 = 1 且不属于红色 红色 = 0，而是可以以一定比例属于绿色 绿色 = 0.5 和红色 红色 = 0.5。这些值在0和1之间被归一化；然而，它们并不代表概率，因此这两个值的总和不需要等于1。

## 隶属度

每个数据点（标签）都会被分配隶属度（Membership grades）。这些隶属度表明了数据点属于各个聚类簇的程度。因此，位于聚类簇边缘、隶属度较低的点，其“身处该聚类簇”的程度可能低于位于聚类簇中心的点。

## 模糊C-平均聚类

最广泛使用的模糊聚类算法之一是模糊C-平均聚类（Fuzzy C-means clustering，简称FCM）算法。

### 历史

模糊C-平均（FCM）聚类由J.C. Dunn于1973年提出，并由James C. Bezdek于1981年进行改进。

### 概述

模糊c-平均算法与k-平均算法非常相似：

- 选择聚类数量。
- 随机为每个数据点分配其属于各个聚类簇的系数。
- 重复以下步骤直至算法收敛（即两次迭代之间系数的变化不超过给定的灵敏度阈值 $\varepsilon$）：
- 计算每个聚类簇的质心（计算方法见下文）。
- 对于每个数据点，计算其属于各个聚类簇的系数。

### 质心

任何点 x 都有一个系数集合，用于表示该点处于第 k 个聚类簇的程度 wk(x)。在模糊c-平均中，聚类簇的质心是所有点的平均值，且按它们对该聚类簇的隶属程度进行加权；在数学上表示为：

$$c_k = {{\sum_x {w_k(x)} ^ {m} x} \over {\sum_x {w_k(x)} ^ {m}}},$$

其中 m 是控制聚类模糊程度的超参数（聚类越模糊，意味着该聚类越不清晰，一个数据点可以同时属于多个聚类簇）。该值越高，最终的聚类效果就会越模糊。

### 算法

FCM算法试图根据某个给定的标准，将 $n$ 个元素的有限集合 $X = \{ \mathbf{x}_1, . . . , \mathbf{x}_n \}$ 划分为 c 个模糊聚类簇。

给定有限的数据集，该算法返回一个包含 $c$ 个聚类中心的列表 $C = \{ \mathbf{c}_1, . . . , \mathbf{c}_c \}$ 以及一个划分矩阵

$W = w_{i,j} \in[0, 1],\; i = 1, . . . , n,\; j = 1, . . . , c$，其中每个元素 $w_{ij}$ 表示元素 $\mathbf{x}_i$ 属于聚类簇 $\mathbf{c}_j$ 的程度。

FCM旨在最小化目标函数：

$J(W,C) = \sum_{i=1}^{n} \sum_{j=1}^{c} w_{ij}^m \left\|\mathbf{x}_i - \mathbf{c}_j \right\|^2$。

其中：

$w_{ij} = \frac{1}{\displaystyle \sum_{k=1}^{c} \left(\frac{\left\|\mathbf{x}_i - \mathbf{c}_j \right\|}{\left\|\mathbf{x}_i - \mathbf{c}_k \right\|}\right)^{\frac{2}{m-1}}}$。

### 与K-平均聚类的比较

K-平均聚类同样试图最小化上述目标函数，不同之处在于，在K-平均算法中，隶属度的值要么是0，要么是1，不能取介于两者之间的值，即 $w_{ij} \in \{0,1\}$。在模糊C-平均中，模糊程度由参数 $m \in (1, \infty )$ 参数化，其中较大的 $m$ 会导致更模糊的聚类。在 $m \rightarrow 1$ 的极限情况下，隶属度 $w_{ij}$ 收敛于0或1，模糊C-平均的目标函数便与K-平均的目标函数一致。在缺乏实验或领域知识的情况下，$m$ 通常设置为2。该算法也能最小化聚类簇内的方差，但也存在与k-平均算法相同的问题：得到的最小值是局部最小值，且结果依赖于权重的初始选择。

### 实现

目前已有一些公开可用的该算法的实现版本。

## 相关算法

能够自动确定聚类数量的模糊C-平均（FCM）可以提高检测的准确性。使用高斯混合模型并结合期望最大化算法是一种在统计上更加规范的方法，它也包含了类别的部分隶属关系这一思想。

## 示例

为了更好地理解这一原理，下面提供了一个分布在x轴上的一维数据的经典示例。

<image>

传统上，该数据集可以被分为两个聚类簇。通过在x轴上选择一个阈值，数据被分成两组。生成的聚类簇标记为“A”和“B”，如下方图像所示。因此，属于该数据集的每个点将拥有1或0的隶属度系数。通过添加y轴来表示每个对应数据点的隶属度系数。

<image>

在模糊聚类中，每个数据点可以具有对多个聚类簇的隶属度。通过放宽隶属度系数只能严格为1或0的限制，这些值可以是1到0之间的任何范围。下图显示了前面聚类的数据集，但此时应用了模糊C-平均聚类。首先，可以生成定义两个聚类簇的新阈值。接下来，根据聚类簇的质心以及与每个聚类簇质心的距离，为每个数据点生成新的隶属度系数。

<image>

如你所见，中间的数据点同时属于聚类A和聚类B。0.3这个值即为该数据点对于聚类A的隶属度系数。

## 应用与扩展

聚类问题在表面科学、生物学、医学、心理学、经济学及许多其他学科中都有广泛应用。

模糊c-平均已经在多个方面得到了扩展（如Gustafson-Kessel算法、Gath-Geva算法、可能性c-平均、基于核的模糊c-平均，以及部分提供质心的模糊c-平均）。

### 生物信息学

在生物信息学领域，聚类被用于众多应用中。其中一个应用是作为一种模式识别技术，用于分析来自RNA测序数据或其他技术的基因表达数据。在这种情况下，具有相似表达模式的基因被分组到同一个聚类簇中，不同的聚类簇则展现出明显且界限分明的表达模式。使用聚类有助于深入了解基因功能和调控机制。由于模糊聚类允许基因属于多个聚类簇，这就使得能够识别在特定条件下共调控或共表达的基因成为可能。例如，一个基因可能受到多个转录因子的作用，或者一个基因可能编码具有多种功能的蛋白质。因此，在这些场景下，模糊聚类比硬聚类更加合适。

### 图像分析

在聚类图像中的对象时，模糊C-平均一直是图像处理中的一个非常重要的工具。20世纪70年代，数学家将空间项引入FCM算法中，以提高噪声条件下的聚类精度。此外，FCM算法已经被用来使用基于图像的特征（如Hu矩和Zernike矩）来区分不同的活动。另一方面，可以在定义于HSL色彩空间（HSL和HSV）三个分量上的模糊集上描述模糊逻辑模型；其隶属函数旨在描述遵循人类颜色识别直觉的颜色体系。

### 市场营销

在市场营销中，可以根据客户的需求、品牌偏好、心理图谱特征或其他营销相关的划分维度，将客户群体归入不同的模糊聚类。

## 图像处理示例

<image>

使用k-平均聚类算法进行的图像分割早已被用于模式识别、目标检测和医学成像。然而，由于现实世界中的限制因素，如噪声、阴影和相机性能差异等，传统的硬聚类常常无法如上所述地可靠执行图像处理任务。模糊聚类被提出作为在执行这些任务时更为适用的一种算法。右图展示了一幅在Matlab中经历了模糊聚类的灰度图像。原始图像显示在聚类图像旁边。颜色被用于视觉展示三个用于识别每个像素隶属度的不同聚类簇。在下方，提供了一个图表，定义了与其对应强度值相关联的模糊隶属度系数。

取决于要使用模糊聚类系数的具体应用，可以对RGB图像应用不同的预处理技术。将RGB转换为HCL色彩空间是一种常见的做法。

## 参见

- FLAME聚类
- 聚类分析
- 期望最大化算法（一种类似，但在统计上更规范的方法）