模糊聚類

模糊聚類（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聚類
- 聚類分析
- 期望最大化演算法（一種類似，但在統計上更規範的方法）