---
# System prepended metadata

title: 資料探勘 - Clustering

---

[toc]

# 什麼是 Clustering？

Clustering（分群）是一種無監督學習的技術，這意味著它不依賴於標籤數據。沒有「正確答案」可供參照，因此我們難以評估分群的結果是否「正確」。無監督學習的目的是從未標記的數據中探索內在結構，並挖掘資料點之間的潛在關聯。

Clustering 的目標是將數據點分成相似的群組，目的是將資料點根據相似性分成多個群組。每個群組中的資料點應該彼此之間很相似，而不同群組之間的資料點應該有較大的差異。但「相似性」的定義本質上是模糊的，並且依賴於選擇的距離度量方式（例如歐幾里得距離、曼哈頓距離等）。此外，不同的 Clustering 演算法（如 K-means、階層式分群、DBSCAN 等）有不同的假設和適用範圍，這使得 Clustering 無法有一個普遍且精確的定義。

### Clustering 的特性

1. 相似性（Similarity）： Clustering 的關鍵是資料點的「相似性」或「距離」。在不同應用中，相似性的定義可能不同。常見的相似性測量方式包括：

* 歐幾里得距離（Euclidean Distance）：兩個點之間的直線距離，常用於 K-means 分群。

* 曼哈頓距離（Manhattan Distance）：兩個點在多維空間中沿坐標軸移動的總距離。

* 餘弦相似度（Cosine Similarity）：用於高維向量之間的角度來衡量相似性，常應用於文本數據。

    > 補充：不同的距離度量方式對分群結果有顯著影響，選擇正確的度量方式能更好地反映數據間的真實關係。

2. 群組內的同質性（Homogeneity within clusters）： 群組內的資料應該是相似的。理論上，分群結果越好，群組內的數據點彼此之間的距離越短。

3. 群組之間的異質性（Heterogeneity between clusters）： 群組之間應該是彼此不同的，也就是說，群組之間的距離應該盡量大，這樣能夠清楚地區分不同群組。

    如何衡量分群的質量： 在 Clustering 中，無法用標籤來評估結果的好壞，但可以通過以下指標來衡量分群的質量：

    * SSE（Sum of Squared Errors）：衡量群組內的資料點與其質心的距離平方和，值越小，群內的相似性越高。
    * 輪廓係數（Silhouette Score）：此指標可以評估每個資料點與所屬群組以及最近的其他群組的距離，分數越高表示該資料點越適合它所分配的群組。

4. 分群數目的選擇： 一個重要問題是「必須分幾群較適合？」這可以通過幾種方法來解決：
    * Elbow Method（肘部法）：透過觀察 SSE 隨著群組數目增加的變化曲線，找到曲線彎曲的地方作為最佳分群數目。
    * Silhouette Score：可以用來判斷每個樣本是否被合理地分配到適合的群組，值越高表示分群效果越好。

舉個例子:
想像你有一籃水果，我們想根據顏色或大小來將這些水果分類成幾個不同的群組，這樣每個群組裡的水果看起來就會很相似，而不同群組裡的水果看起來會有明顯的差異。這就是分群的概念。

# Clustering VS. Classification

Clustering 跟分類本質上是不同的方法，雖然都是將樣本點分門別類，但分類在訓練時有提供標籤，屬於監督式學習。分類已經事先給定分類的範圍與大小，可能找不到更細或更廣的資料範疇資訊。例如，已給定的分類中其實還能細分成其他小類別。

在分群分析中，有兩個較難回答的問題：

1. 什麼樣的個體適合被分在一個群體中？
2. 這麼多樣本點必須分做幾群較適合？

這些問題可以從兩個角度來思考：緊緻性（Compactness）和連通性（Connectedness）。

* 緊緻性（Compactness）： 會希望「個體之間的距離越小越好」，讓群體內部越緊密：
    * 階層式分群（Hierarchical Clustering）：不需指定分群數目，讓資料自動由上往下或由下往上結合起來。
    * 分割式分群（Partitional Clustering）：需事先指定分群數目，經過不斷的迭代，直到群內的變異最小。
* 連通性（Connectedness）： 會希望「可以串接的個體分在同一群」：
    * 譜分群（Spectral Clustering）：基於圖論和 Graph Laplacian 的方法，能把「資料的形狀（shape）」考量進來，特別適合於資料呈現複雜形狀時，如環狀或弧形分佈的數據。

# Clustering 演算法

## K-means

# reference
[機器學習: 集群分析 K-means Clustering](https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E9%9B%86%E7%BE%A4%E5%88%86%E6%9E%90-k-means-clustering-e608a7fe1b43)
[Clustering 分群懶人包](https://medium.com/ai-academy-taiwan/clustering-%E5%88%86%E7%BE%A4%E6%87%B6%E4%BA%BA%E5%8C%85-9c0bb861a3ba)
[聚類分析](https://zh.wikipedia.org/zh-tw/%E8%81%9A%E7%B1%BB%E5%88%86%E6%9E%90)
[Manufacturing-Data-Science](https://github.com/PO-LAB/Manufacturing-Data-Science/blob/master/MDS/11.%20Clustering/clustering.ipynb)
[分群?分類?傻傻分不清楚-分群演算法介紹](https://ithelp.ithome.com.tw/articles/10298327)
[分群與分類. 一個輕鬆有趣的dataset](https://medium.com/@joey110119/my-pen-is-a-funny-data-train-d93b459a5921)
