小孩都看得懂的聚類

  • 2019 年 10 月 7 日
  • 筆記

全文共 1448 字,45 幅圖,

預計閱讀時間 8 分鐘。

本文是「小孩都看得懂」系列的第四篇,本系列的特點是沒有公式,沒有程式碼,只有圖畫,只有故事。內容不長,碎片時間完全可以看完,但我背後付出的心血卻不少。喜歡就好!

  1. 小孩都看得懂的神經網路
  2. 小孩都看得懂的推薦系統
  3. 小孩都看得懂的逐步提升
  4. 小孩都看得懂的聚類

本文所有思路都來自 Luis Serrano 的YouTube視屏「Clustering: K-means and Hierarchical」,純純的致敬!我只是加了點場景使得內容更通俗點。

聚類是無監督學習中的最常見的方法,本帖介紹兩種聚類方法:

  1. K 均值聚類 (K-Means Clustering), 1-3 節
  2. 層次聚類 (Hierarchical Clustering), 4-6 節

1

新加坡唐人街 (Chinatown) 開了家王大爺燒烤,店裡每天生意不錯,而且還有很多人叫外賣。

今天,店裡收到很多外賣單子,如下圖灰點所示,那麼王大爺應該派多少個外賣員去送貨呢?

直觀來說,應該派 3 名送外賣的,每個人負責一區,如下圖紅、藍、黃區所示。

那麼這三個區是怎麼聚類出來的呢?

2

方法太簡單了,首先隨機選三個點作為簇心 (centroid),如下圖紅、藍、黃色五角星。為什麼選三個下節解釋,先接受它。

對每個灰點,計算它們到三個簇心的距離,離什麼顏色簇心最近,就塗成什麼顏色。

第一次「聚類」過程完畢,如下圖。

根據最新聚類結果重新計算它們的簇心,如下圖。

問題來了,有三個藍點明顯離黃色簇心更近呢。怎麼辦呢?把它們變成黃色唄。

同理,對下圖兩個紅點。

根據最新聚類結果重新計算它們的簇心,如下圖。

再繼續更正聚類錯誤的點。

根據最新聚類結果重新計算它們的簇心,直到沒有任何聚類錯誤的點,如下圖。

聚類完畢,一個值得思考的問題是到底需要多少個簇 (cluster) 呢?用肘部法則 (elbow method)。

3

實現我們是不知道有多少個簇心的,那就試著窮舉幾個,比如 1 到 6 個。按照上節的思路,做 6 次聚類過程直到收斂,如下圖。

  • 1 個簇心不需要任何聚類 ...
  • 3 個簇心是上節結果 ...
  • 6 個簇心聚成 6 組

極限情況,我們有 22 個點,如果設 22 個簇心,那麼每個點都被塗成不同顏色,但這樣毫無意義。

在每種情況下,計算同一簇內兩點間距離最大值。

將距離值 (y) 和簇心個數 (x) 畫圖,連線,找到一個類似胳膊肘的點,就選對應的簇心個數,解釋在圖中寫出了。

4

K 均值聚類講完了,接下來看看層次聚類。這次數據用少點,因為畫著太累

。

5

層次聚類的規則不要太簡單,每次找到距離最近的兩個點,聚成一組,再重複直到。。。

直到兩點距離太遠了!!!這都能聚成一組真有點說不過去了,停了!

層次聚類完畢,一個值得思考的問題是如何決定兩點之間距離「過大」而停止繼續聚類呢?用樹形圖 (dendrogram)。

6

將數據點編號,作為樹形圖的橫軸刻度,而縱軸是距離值,如下圖所示。

按照上節的規則,找到找到距離最近的兩個點,聚成一組。記下這兩點的標號,在樹形圖上畫出其距離 (紅色半圈)。

不停的這樣做,知道把所有數據聚成一組。

畫完樹形圖後,我們可以根據「不希望兩點距離超過 d」來對其裁剪,如下圖。這樣我們得到上節的結果,把數據聚成兩類。

此外,我們還可以根據「希望聚成 4 類」來對其裁剪,如下圖。

小結

K 均值聚類和層級聚類都非常簡單,而確定它們聚類的停止條件,分別是肘部法則和樹形圖也很直觀。不管數據有多少維,肘部法則和樹形圖永遠是二維圖。

聚類方法的應用也特別多,比如多因子投資中聚類數目繁多的因子,膠囊網路裡面也有 K 均值聚類的影子等等。

這次你看懂了么?

Tags: