AI 互動教室 ‹ 學基礎機器學習
下載 .py 單獨開啟實驗場 ↗ 留言回報
CLUSTERING · 分群

分群:沒有答案
也能找出結構

前兩課機器都有答案可以抄——每顆水果、每天銷量都附了正解。 這一課把答案整疊抽走:只剩一堆灰點,沒有人說誰是誰。 機器還能學到東西嗎?先猜猜下面藏了幾群,再按按鈕對答案:

你看到幾群?

右邊的實驗場是真的 Python(在你的瀏覽器裡跑,不用安裝任何東西)。 首次載入約需 30–60 秒,正好夠你讀完第 1 節。每一格程式碼都能改、能重跑, 改壞了重新整理就復原——這是你的沙盒,盡量玩。

01 · 觀察

一堆沒有標籤的顧客

右邊是一間咖啡店 90 位會員的紀錄:每月來店次數平均單筆消費。 店長想分眾行銷,但沒有人幫顧客貼過「你是哪種客人」的標籤—— 這種沒有正解可學的情境,叫非監督學習。

先用眼睛看:點的分佈不是均勻的霧,而是幾坨明顯的聚落。 「資料自己長出來的結構」就是這課要機器去找的東西。 數一下你覺得有幾群,待會跟機器對答案。

02 · 方法

K-means:猜中心、分邊、再修正

K-means 全部的邏輯只有三步,重複到不再變動: 隨便放 k 個中心點每個點歸給最近的中心中心搬到自己那群的平均位置。到右邊拉動 k(圖上的 X 是每群中心):

  • k = 3:機器分出來的三群,跟你眼睛看到的幾乎一樣—— 散客、常客、豪客。它沒看過任何答案
  • k = 2:其中兩種人被硬併成一群。
  • k = 6、7:真實的群被硬切碎。K-means 你要幾群它就給幾群, 從不回嘴——這是它最大的方便,也是最大的陷阱。
03 · 判斷

手肘法:k 到底該選多少

既然 K-means 不會回嘴,k 就得自己決定。線索是群內距離總和 (每個點到自己群中心的距離平方和):k 越大它一定越小, 但重點是變小的速度——

  • k 從 1 → 2 → 3:大幅下降,每加一群都真的切中一種人。
  • k = 3 之後:下降突然變平緩——再加的群只是在切碎真實的聚落。

到右邊看那條折線:像手肘一樣彎的位置,就是資料自己說出來的群數。 這招叫手肘法——不是定理,是經驗法則,但在實務上出奇地好用。

04 · 實戰

換你動手

右邊最下面有一格「你的實驗區」。三個挑戰,由易到難:

LEVEL 1

my_k 改成 6,看每群人數——被切碎的是哪一群?

LEVEL 2

回到 1️⃣ 把豪客改成只有 5 人(rng.normal(260, 35, 5)), 手肘還看得出 3 嗎?小群很容易被 K-means 忽略。

LEVEL 3

在 1️⃣ 加入第四群「你設計的顧客」,先猜手肘會移到哪,再跑 3️⃣ 驗證。

Python 環境載入中(首次約 30–60 秒)…讀完第 1 節它就好了