歡迎來到 K-means 分群的世界!
你好!在準備 Exam SRM 的過程中,你會發現非監督式學習 (Unsupervised Learning) 是考試大綱中最有趣的部分之一。與你之前學過的迴歸或分類模型不同(那些模型都有目標變數 \(Y\)),非監督式學習的重點在於當我們沒有特定的「答案」或標籤作為指導時,如何從數據中找出隱藏的模式。
今天,我們要來探討 K-means 分群。你可以將其視為一種「分組」的藝術。無論你是保險精算師,想要將保戶進行分群,或是行銷人員想根據購物習慣將顧客分組,K-means 都是你不可或缺的工具。別擔心這聽起來很專業;我們將一步步為你拆解!
什麼是 K-means 分群?
K-means 分群的目標很簡單:我們想將觀察值劃分為 K 個不重疊的組別(群集,clusters)。為了達成這個目標,我們必須確保:
1. 每個觀察值都剛好屬於一個組別。
2. 同一組內的觀察值越相似越好。
3. 不同組之間的觀察值越不同越好。
生活中的類比
想像你有一大堆沒整理的衣服。你決定要將它們分成 K=3 堆。你可能會依照「深色」、「白色」和「彩色」來分類。在「白色」這堆衣服裡,彼此非常相似,而且與「深色」那堆截然不同。這正是 K-means 對數據點所做的事情!
數學原理:定義「相似性」
要將項目分組,我們需要一種方法來衡量它們有多「靠近」。在 K-means 中,我們使用平方歐幾里得距離 (Squared Euclidean Distance)。演算法的目標是最小化群內變異數 (Within-Cluster Variation)。
對於群集 \(C_k\),其數學公式如下:
\( W(C_k) = \sum_{i \in C_k} \sum_{j=1}^p (x_{ij} - \bar{x}_{kj})^2 \)
其中:
- \(x_{ij}\) 是第 \(i\) 個觀察值的第 \(j\) 個特徵值。
- \(\bar{x}_{kj}\) 是該特徵在群集 \(k\) 中所有觀察值的平均數 (Mean)。
- \(p\) 是特徵(變數)的數量。
簡單來說:我們希望每個點與其所屬組別的「中心」(平均值)之間的距離越小越好。
演算法是如何運作的(步驟詳解)
K-means 演算法是迭代式 (iterative) 的。它會不斷重複一系列步驟,直到無法再改善分組結果為止。別擔心剛開始覺得複雜;這只是一個重複的迴圈!
步驟 1:選擇 K。 決定你想要多少個群集(例如 \(K=3\))。
步驟 2:初始化。 隨機給每個觀察值分配一個 1 到 \(K\) 的數字。這就是你最初「不穩定」的群集。
步驟 3:迭代! 重複以下步驟,直到分配結果不再改變為止:
(a) 尋找質心 (Centroids): 對於每一個 \(K\) 群集,計算該群集內所有點的平均值。這個點稱為質心 (Centroid)。
(b) 重新分配點: 觀察每一個數據點,將其分配給距離其質心最近的那個群集(使用歐幾里得距離)。
小撇步:質心就是「重心」
將質心想像成群組裡的「平均代表」。在步驟 3b 中,每個數據點都會環顧四周並問:「我和哪一個『平均代表』最像?」,然後移動到那個群組。
重要細節:局部最佳解 (Local Optima)
K-means 有點像是在黑夜裡的群山中健行。你想要找到最低的谷底(全域最佳解,Global Optimum),但你可能會卡在半山腰的一個小窪地裡(局部最佳解,Local Optimum)。
由於演算法是從隨機分配開始的,最終結果可能會根據起點的不同而改變。
考試重點:為了找到最佳解,務必要使用不同的隨機起點多次執行 K-means 演算法,並選擇總群內變異數最小的那一次結果。
變數標準化的重要性
這是 Exam SRM 非常熱門的話題!因為 K-means 依賴於距離,所以變數的尺度(Scale)至關重要。
例子: 如果你要根據年齡(範圍 0–100)和年收入(範圍 0–200,000)來對客戶分群,收入變數會主導距離計算,因為數字大太多了。收入上 $1,000 的差距看起來會比 50 歲的年齡差距「更遙遠」。
解決方案:在執行 K-means 之前,務必標準化 (Standardize) 你的變數(平均值 = 0,標準差 = 1),這樣每個變數在分群過程中都有平等的「投票權」。
如何選擇群集數量 (K)?
我們怎麼知道該分成 2 群還是 10 群呢?
隨著我們增加 \(K\),群內變異數將永遠下降。(如果每個點都自成一群,變異數就是零!)。
我們通常會使用肘部法則 (Elbow Method)。我們繪製總群內變異數對應 \(K\) 的圖。我們尋找曲線的「肘部」——即增加更多群集已無法顯著降低變異數的那個點。這個「彎折處」通常是 \(K\) 的良好選擇。
常見陷阱與錯誤
1. 忘記標準化: 如前所述,如果不標準化,結果會偏向範圍較大的變數。
2. 離群值 (Outliers): K-means 對離群值非常敏感。單一個遠離群體的點可能會將質心拉得離其他組員很遠。
3. 類別數據: K-means 是為數值型數據設計的(因為你無法輕易計算顏色或名稱的「平均值」)。
4. 非球狀形狀: K-means 偏好圓形塊狀的群集。如果你的群集形狀像長條蛇或新月形,K-means 將很難偵測到它們。
重點複習箱
- 類型: 非監督式學習。
- 目標: 最小化群內變異數。
- 度量: 平方歐幾里得距離。
- 必做: 事先標準化數據!
- 弱點: 可能陷入局部最佳解;對離群值敏感。
總結:關鍵重點
K-means 是一個簡單但強大的演算法,用於找出數據中的群組。它的運作方式是迭代地計算質心,並將點重新分配到最近的中心。由於它對初始的隨機起點很敏感,請務必多次執行。最後,請記住,預處理(標準化數據)與演算法本身一樣重要!
你知道嗎? K-means 常被用於影像壓縮!透過將相似的像素顏色歸為一類,你可以用較小的色彩「調色盤」來呈現複雜的圖像,從而節省檔案空間。
持續練習這些概念,你很快就能精通 Exam SRM 的非監督式學習部分!你一定做得到的!