國立臺北護理健康大學 NTUHS
Clustering
Orozco Hsu
2021-12-06
1
About me
• Education
• NCU (MIS)、NCCU (CS)
• Work Experience
• Telecom big data Innovation
• AI projects
• Retail marketing technology
• User Group
• TW Spark User Group
• TW Hadoop User Group
• Taiwan Data Engineer Association Director
• Research
• Big Data/ ML/ AIOT/ AI Columnist
2
Tutorial
Content
3
K-means algorithm and other algorithms demo
Hard clustering v.s. Soft clustering
Homework
Clustering introduction
Recommendation on K-means
Code
• Download code
• https://github.com/orozcohsu/ntunhs_2021.git
• Folder
• 20211206_day_master
4
Clustering introduction
• 為一種非監督式學習,用來解決分群問題
• 事前不須要對數據進行標記
• 應用情境
• 文件分群: 結合文字探勘技術,利用斷詞後的文字做為特徵值,如分群後
的結果以人工的方式判斷某一群比較像政治類新聞,並且給予該群名稱
• 市場區隔: 透過產品的特徵值進行分群,分群的結果可比較產品間的差異
• 客戶分群: 透過客戶行為擷取出特徵值,分群後的結果將客戶進行區隔,
針對不同群的客戶執行特別的行銷方案
• 生物分群: 界、門、綱、目、科、屬、種
5
Clustering introduction
• 顧客分群常見做法介紹
• 透過銷售紀錄找出三個關
鍵指標
• R – 最近互動時間
• F – 購買頻次
• M – 購買金額
6
參考: https://couplehonest.com/rfm-nes-cohort-google-sheet-excel-crm/
Clustering introduction
• 利用客戶RFM作為分群的樣本資料集
7
參考: https://towardsdatascience.com/segmenting-customers-using-k-means-and-transaction-records-76f4055d856a
Clustering introduction
• 常見的演算法
• K-Menas
• Hierarchical Clustering
• Mini-Batch K-Means
• BIRCH
• DBSCAN
• Spectral Clustering
• Gaussian Mixture Model
8
Mini-Batch K-Means
• 步驟簡述
• 傳統的K-Means可能會遇到大資
料集產生的時間、空間的問題,
因為所有資料都必須置放於記憶
體當中
• 採用隨機較小的樣本資料集,以
便於放置記憶體當中,計算過程
中不斷拿取小樣本進行更新,直
到模型收斂為止
9
參考: https://www.itread01.com/content/1546477941.html
Hierarchical Clustering
• 步驟簡述
• 把每一個點當作一個群組
• 透過掃描過整個資料及尋找出最近的
兩個群組,並把這兩個點榜再一起變
成一個群組
• 尋找下一個最近的的兩個群組,再綁
再一起變成一個群組
• 直到所有資料都被分成一群,或是透
過設定參數到分到幾個群時自動停止
• 特色
• 比較耗能,每一次迴圈都要比對所有
樣本資料
• 透過樹狀圖可以完整了解群組關係
10
參考:
https://www.researchgate.net/figure/Dendrogram-
obtained-by-hierarchical-cluster-analysis-HCA-of-the-
morphological_fig1_335658239
DBSCAN
11
• 步驟簡述
• 計算樣本的密度,透過設定多長
的半徑內,有出現幾個點,不斷
延伸,延伸到無法延伸,所有出
現在前面延伸範圍的點分成一個
群組
• 特色
• 不須設定群的數量
• 常用來偵測 noise 樣本 參考: https://zhuanlan.zhihu.com/p/353705498
BIRCH
• 步驟簡述
• 利用樹結構來幫助實現快速的分群,
該結構類似於平衡B+樹
• 稱之為分群特徵樹(Clustering
Feature Tree,簡稱CF Tree)
• 該樹的每一個節點是由若干個分群特
徵(Clustering Feature,簡稱CF)組成
• 執行速度很快,只需要單遍掃描資料
集就能進行聚類
• 適合於資料量大,分群數量 K也比較
多的情況
• 特色
• 不須設定群的數量
12
參考: https://www.gushiciku.cn/dc_tw/104504172
Spectral Clustering
• 步驟簡述
• 結合圖論的分析,將資料點間的關係建構權重圖(weighted graph),
也就是將頂點(vertex)作為資料點,邊(edge)則表示資料點間的距離
• 透過鄰接矩陣,則可把兩點間連接的強度一一表示。接下來將圖切割成數
個子圖以達到分群的效果。然而,裁切的方式應最小化子圖間的連接關係,
同時最大化每個子圖內的連接關係
• 特色
• 對於稀疏資料點的分群有顯著的效果
• 相似矩陣的計算方式得到不同的分群效果
• 相似的定義
13
參考: https://www.jianshu.com/p/9ada98cd322b
Spectral Clustering
14
參考: https://www.researchgate.net/figure/Comparison-between-K-Means-and-spectral-clustering_fig1_319284000
Gaussian Mixture Model
• 步驟簡述
• 可以被視為k-means的延伸,目的是做更正確的數據
分群
• 當資料分布於各群的邊界上時,容易會出現資料分類
不正確,透過最大期望演算法(EM)方法,持續實作
E-M步驟,重複直到收斂為止,目的就是找出適當的
資料分群
• E步驟:對於每個點,找到每個聚類中成員的權重
• M步驟:對於每個群集「權重」,根據所有數據點更新
其位置
• 特色
• 需事先決定k群分布
• 常用於語音識別
15
參考: https://towardsdatascience.com/gaussian-mixture-models-explained-6986aaf5a95
Gaussian Mixture Model
16
• GMM 則是藉由統計後,計算
機率分布得到中心點和sigma
作為模型資訊
• 在一維空間中就是高斯分佈的
鐘型二維空間中會出現類似陀
圓形的樣子
參考: https://jarvus.dragonbeef.net/note/noteKmeansGMM.php
K-means
• 為非監督式學習一種
• 不需要準備數據標記
17
參考: https://zhuanlan.zhihu.com/p/97510390
K-means
• 演算法步驟
• 定義K值,決定分群數目
• 隨機給各K群中心點,計算所有訓練樣本,把每個訓練樣本分配到距離最
近的K群當中
• 移動各K群的中心點,讓該中心點為該群所有樣本距離和的平均處
• 重複上述動作,直到中心點不再移動為止
• 算法說明 (1)
• 輸入: K值
• 訓練樣本: x(1), x(2), x(3), x(4)… x(m)
• 隨機選擇各K群中心點: u1, u2, u3…uk
18
K-means
• 算法說明 (2)
• 紀錄距離最短的群,然後把該點分配到該群
19
K-means
• 算法說明 (3)
• 從 1 ~ K 查訪所有中心點,並移動開中心點到新的位置,也就是該群的
所有樣本至中心點的平均值處
• 重複步驟,直到各K群中心點不再移動為止
20
K-means
• 算法說明 (4)
• 根據成本函數的定義,模型預測值與實際值的誤差
21
K-means
• 常見的問題
• 選擇K群予各別的中心點為隨機取樣,最終分群的結果與隨機中心點有關
• 不同的隨機中心點可能會得到不同的分群結果
• 成本函數可能會收斂在一個局部最佳解,而不是全域最佳解
• 通常作法為多做幾次隨機中心點,最終訓練出不同K群中心點後,再用這
些值計算出成本函數,從中選擇成本函數最小的
22
次數編號 K值 各K群中心點 計算成本函數
001 8 001: u1, u2, u3…uk 0.5
002 8 002: u1, u2, u3…uk 0.3
003 8 003: u1, u2, u3…uk 0.1
K-means
• K值的選擇
• 經驗法則
• 先分100群,透過觀察每一群的特徵後,人工進行合併各群
• 透過輪廓係數,觀察成本函數與K值間的關係,找出鞍點 (Saddle point)
即為K值
23
a: 一個樣本與其所在的群(同群)之間的平均距離
b: 一個樣本與其距離最近的下一個群內的樣本點的平均距離
S: 介於 [-1,1],該值則越大越好,代表越好
kmeans.ipynb
K-means + Canopy 的快速算法
• 原因
• K-means的計算複雜度低,但演算法本身效能十分依賴各群隨機取樣的
中心點,同時對於噪音數據也十分敏感
• 為解決以上問題,引進 Canopy 算法,為 K-means 先粗略生成各群隨
機中心點,因此可以減少計算時本身的迭代次數
• 演算法步驟
• 根據 T1, T2 兩個參數確定群的中心點,大於 T1 會被認為是離群中心點
過遠而去除,小於T2 會被認為離自身的群過近,不適合作為群的中心點
• 通過以上邏輯對於每一個訓練樣本進行計算篩選,首先會過濾掉偏離的
噪音數據之外,也會生成一定數量的相對合理的中心點
24
K-means + Canopy 的快速算法
• 算法說明(1)
• 將訓練樣本進行排序,紀錄於列表中,排序後不可以改變,
• 設定初始值 T1, T2,且 T1 > T2
• 從訓練樣本中,隨機取一個樣本為中心點,計算與其他所有的距離
• 若距離小於 T1 但大於 T2,則該點屬於該中心點所在的 canopy 內
• 若距離小於 T2,則該點與該中心點距離過近,不適合在做中心點,於是將該點從
列表中刪除
• 重複上述步驟,完成列表上的樣本點
• 此時會得出 n 個中心點,將這些點用於 K-means 的隨機中心點
• n 為初始 K值
• 檢視最終分群結果 (視覺化圖表),如果某群內的樣本數量小於一定數據,則可判定
為噪音數據
25
K-means + Canopy 的快速算法
26
參考: https://zh.codeprj.com/blog/b1b65d1.html
canopy.ipynb
Hard clustering v.s. Soft clustering
• Hard clustering
• Each point is assigned to a one and only one cluster (hard assignment)
• With K-means we try to find K centroids {μ1,…,μK} and the corresponding
• Soft clustering (Fuzzy C-Means Clustering: FCM)
• Each point is assigned to all the clusters with different weights or probabilities
(soft assignment)
27
Hard clustering v.s. Soft clustering
• 演算法步驟
• 透過模糊分群的方式,計算每個訓練樣本屬於各群的程度
• 該方法利用了隸屬值 (membership value) 進行模糊化
• 類似機率的概念,每個樣本最終的隸屬值之和為1
• 演算法步驟 (1)
• 訓練樣本 x
• 劃分 c 群
• ci 為該群的中心點
• 某樣本 xj 屬於 ci ,隸屬值表示為 uij
28
Hard clustering v.s. Soft clustering
• 演算法步驟 (2)
• 欲取得一個函數的最小值,只要將該成本函數求導,並令為0
29
成本函數:
fcm.ipynb
Hard clustering v.s. Soft clustering
30
參考: http://wyj-learning.blogspot.com/2017/12/fuzzy-c-means-clustering.html
Recommendation (K-means)
• 透過 movies.csv 數據集,進行用戶行為分析
• 利用 K-means 演算法進行電影推薦
• 數據集介紹
• 9742部電影
• 100836用戶評分
31
Recommendation (K-means)
• 探討 science fiction and romance 兩種類型的電影客戶偏好
32
Recommendation
• 嘗試說明推薦系統與分群的關係
33
參考: https://comsysto.wordpress.com/2013/04/03/background-of-collaborative-filtering-with-mahout/
Recommendation
• 如何定義相似度
• 角度
• 餘弦相似性 (Cosine similarity)
• 距離
• 歐氏距離 (Euclidean distance)
• 漢明距離 (Hamming distance)
• 曼哈頓距離 (Manhattan distance)
• 切比雪夫距離 (Chebyshev distance)
• 馬氏距離 (Mahalanobis distance)
• 係數
• 雅卡爾指數 (Jaccard similarity coefficient)
34
參考: https://towardsdatascience.com/log-book-guide-to-distance-measuring-approaches-for-k-means-clustering-f137807e8e21
Recommendation
35
作業
• 什麼是 K-means? 基本迭代步驟是什麼?
• 有哪些方法可以加快K-means的執行效率?
• 繼續完成 homework.ipynb,完成客戶分群
• 決定K值
• 每一群客戶的客戶評分分析
• 是否有存在相似的群,如果存在,可以手動合併
36

3 clustering 1

  • 1.
  • 2.
    About me • Education •NCU (MIS)、NCCU (CS) • Work Experience • Telecom big data Innovation • AI projects • Retail marketing technology • User Group • TW Spark User Group • TW Hadoop User Group • Taiwan Data Engineer Association Director • Research • Big Data/ ML/ AIOT/ AI Columnist 2
  • 3.
    Tutorial Content 3 K-means algorithm andother algorithms demo Hard clustering v.s. Soft clustering Homework Clustering introduction Recommendation on K-means
  • 4.
    Code • Download code •https://github.com/orozcohsu/ntunhs_2021.git • Folder • 20211206_day_master 4
  • 5.
    Clustering introduction • 為一種非監督式學習,用來解決分群問題 •事前不須要對數據進行標記 • 應用情境 • 文件分群: 結合文字探勘技術,利用斷詞後的文字做為特徵值,如分群後 的結果以人工的方式判斷某一群比較像政治類新聞,並且給予該群名稱 • 市場區隔: 透過產品的特徵值進行分群,分群的結果可比較產品間的差異 • 客戶分群: 透過客戶行為擷取出特徵值,分群後的結果將客戶進行區隔, 針對不同群的客戶執行特別的行銷方案 • 生物分群: 界、門、綱、目、科、屬、種 5
  • 6.
    Clustering introduction • 顧客分群常見做法介紹 •透過銷售紀錄找出三個關 鍵指標 • R – 最近互動時間 • F – 購買頻次 • M – 購買金額 6 參考: https://couplehonest.com/rfm-nes-cohort-google-sheet-excel-crm/
  • 7.
    Clustering introduction • 利用客戶RFM作為分群的樣本資料集 7 參考:https://towardsdatascience.com/segmenting-customers-using-k-means-and-transaction-records-76f4055d856a
  • 8.
    Clustering introduction • 常見的演算法 •K-Menas • Hierarchical Clustering • Mini-Batch K-Means • BIRCH • DBSCAN • Spectral Clustering • Gaussian Mixture Model 8
  • 9.
    Mini-Batch K-Means • 步驟簡述 •傳統的K-Means可能會遇到大資 料集產生的時間、空間的問題, 因為所有資料都必須置放於記憶 體當中 • 採用隨機較小的樣本資料集,以 便於放置記憶體當中,計算過程 中不斷拿取小樣本進行更新,直 到模型收斂為止 9 參考: https://www.itread01.com/content/1546477941.html
  • 10.
    Hierarchical Clustering • 步驟簡述 •把每一個點當作一個群組 • 透過掃描過整個資料及尋找出最近的 兩個群組,並把這兩個點榜再一起變 成一個群組 • 尋找下一個最近的的兩個群組,再綁 再一起變成一個群組 • 直到所有資料都被分成一群,或是透 過設定參數到分到幾個群時自動停止 • 特色 • 比較耗能,每一次迴圈都要比對所有 樣本資料 • 透過樹狀圖可以完整了解群組關係 10 參考: https://www.researchgate.net/figure/Dendrogram- obtained-by-hierarchical-cluster-analysis-HCA-of-the- morphological_fig1_335658239
  • 11.
  • 12.
    BIRCH • 步驟簡述 • 利用樹結構來幫助實現快速的分群, 該結構類似於平衡B+樹 •稱之為分群特徵樹(Clustering Feature Tree,簡稱CF Tree) • 該樹的每一個節點是由若干個分群特 徵(Clustering Feature,簡稱CF)組成 • 執行速度很快,只需要單遍掃描資料 集就能進行聚類 • 適合於資料量大,分群數量 K也比較 多的情況 • 特色 • 不須設定群的數量 12 參考: https://www.gushiciku.cn/dc_tw/104504172
  • 13.
    Spectral Clustering • 步驟簡述 •結合圖論的分析,將資料點間的關係建構權重圖(weighted graph), 也就是將頂點(vertex)作為資料點,邊(edge)則表示資料點間的距離 • 透過鄰接矩陣,則可把兩點間連接的強度一一表示。接下來將圖切割成數 個子圖以達到分群的效果。然而,裁切的方式應最小化子圖間的連接關係, 同時最大化每個子圖內的連接關係 • 特色 • 對於稀疏資料點的分群有顯著的效果 • 相似矩陣的計算方式得到不同的分群效果 • 相似的定義 13 參考: https://www.jianshu.com/p/9ada98cd322b
  • 14.
  • 15.
    Gaussian Mixture Model •步驟簡述 • 可以被視為k-means的延伸,目的是做更正確的數據 分群 • 當資料分布於各群的邊界上時,容易會出現資料分類 不正確,透過最大期望演算法(EM)方法,持續實作 E-M步驟,重複直到收斂為止,目的就是找出適當的 資料分群 • E步驟:對於每個點,找到每個聚類中成員的權重 • M步驟:對於每個群集「權重」,根據所有數據點更新 其位置 • 特色 • 需事先決定k群分布 • 常用於語音識別 15 參考: https://towardsdatascience.com/gaussian-mixture-models-explained-6986aaf5a95
  • 16.
    Gaussian Mixture Model 16 •GMM 則是藉由統計後,計算 機率分布得到中心點和sigma 作為模型資訊 • 在一維空間中就是高斯分佈的 鐘型二維空間中會出現類似陀 圓形的樣子 參考: https://jarvus.dragonbeef.net/note/noteKmeansGMM.php
  • 17.
  • 18.
    K-means • 演算法步驟 • 定義K值,決定分群數目 •隨機給各K群中心點,計算所有訓練樣本,把每個訓練樣本分配到距離最 近的K群當中 • 移動各K群的中心點,讓該中心點為該群所有樣本距離和的平均處 • 重複上述動作,直到中心點不再移動為止 • 算法說明 (1) • 輸入: K值 • 訓練樣本: x(1), x(2), x(3), x(4)… x(m) • 隨機選擇各K群中心點: u1, u2, u3…uk 18
  • 19.
    K-means • 算法說明 (2) •紀錄距離最短的群,然後把該點分配到該群 19
  • 20.
    K-means • 算法說明 (3) •從 1 ~ K 查訪所有中心點,並移動開中心點到新的位置,也就是該群的 所有樣本至中心點的平均值處 • 重複步驟,直到各K群中心點不再移動為止 20
  • 21.
    K-means • 算法說明 (4) •根據成本函數的定義,模型預測值與實際值的誤差 21
  • 22.
    K-means • 常見的問題 • 選擇K群予各別的中心點為隨機取樣,最終分群的結果與隨機中心點有關 •不同的隨機中心點可能會得到不同的分群結果 • 成本函數可能會收斂在一個局部最佳解,而不是全域最佳解 • 通常作法為多做幾次隨機中心點,最終訓練出不同K群中心點後,再用這 些值計算出成本函數,從中選擇成本函數最小的 22 次數編號 K值 各K群中心點 計算成本函數 001 8 001: u1, u2, u3…uk 0.5 002 8 002: u1, u2, u3…uk 0.3 003 8 003: u1, u2, u3…uk 0.1
  • 23.
    K-means • K值的選擇 • 經驗法則 •先分100群,透過觀察每一群的特徵後,人工進行合併各群 • 透過輪廓係數,觀察成本函數與K值間的關係,找出鞍點 (Saddle point) 即為K值 23 a: 一個樣本與其所在的群(同群)之間的平均距離 b: 一個樣本與其距離最近的下一個群內的樣本點的平均距離 S: 介於 [-1,1],該值則越大越好,代表越好 kmeans.ipynb
  • 24.
    K-means + Canopy的快速算法 • 原因 • K-means的計算複雜度低,但演算法本身效能十分依賴各群隨機取樣的 中心點,同時對於噪音數據也十分敏感 • 為解決以上問題,引進 Canopy 算法,為 K-means 先粗略生成各群隨 機中心點,因此可以減少計算時本身的迭代次數 • 演算法步驟 • 根據 T1, T2 兩個參數確定群的中心點,大於 T1 會被認為是離群中心點 過遠而去除,小於T2 會被認為離自身的群過近,不適合作為群的中心點 • 通過以上邏輯對於每一個訓練樣本進行計算篩選,首先會過濾掉偏離的 噪音數據之外,也會生成一定數量的相對合理的中心點 24
  • 25.
    K-means + Canopy的快速算法 • 算法說明(1) • 將訓練樣本進行排序,紀錄於列表中,排序後不可以改變, • 設定初始值 T1, T2,且 T1 > T2 • 從訓練樣本中,隨機取一個樣本為中心點,計算與其他所有的距離 • 若距離小於 T1 但大於 T2,則該點屬於該中心點所在的 canopy 內 • 若距離小於 T2,則該點與該中心點距離過近,不適合在做中心點,於是將該點從 列表中刪除 • 重複上述步驟,完成列表上的樣本點 • 此時會得出 n 個中心點,將這些點用於 K-means 的隨機中心點 • n 為初始 K值 • 檢視最終分群結果 (視覺化圖表),如果某群內的樣本數量小於一定數據,則可判定 為噪音數據 25
  • 26.
    K-means + Canopy的快速算法 26 參考: https://zh.codeprj.com/blog/b1b65d1.html canopy.ipynb
  • 27.
    Hard clustering v.s.Soft clustering • Hard clustering • Each point is assigned to a one and only one cluster (hard assignment) • With K-means we try to find K centroids {μ1,…,μK} and the corresponding • Soft clustering (Fuzzy C-Means Clustering: FCM) • Each point is assigned to all the clusters with different weights or probabilities (soft assignment) 27
  • 28.
    Hard clustering v.s.Soft clustering • 演算法步驟 • 透過模糊分群的方式,計算每個訓練樣本屬於各群的程度 • 該方法利用了隸屬值 (membership value) 進行模糊化 • 類似機率的概念,每個樣本最終的隸屬值之和為1 • 演算法步驟 (1) • 訓練樣本 x • 劃分 c 群 • ci 為該群的中心點 • 某樣本 xj 屬於 ci ,隸屬值表示為 uij 28
  • 29.
    Hard clustering v.s.Soft clustering • 演算法步驟 (2) • 欲取得一個函數的最小值,只要將該成本函數求導,並令為0 29 成本函數: fcm.ipynb
  • 30.
    Hard clustering v.s.Soft clustering 30 參考: http://wyj-learning.blogspot.com/2017/12/fuzzy-c-means-clustering.html
  • 31.
    Recommendation (K-means) • 透過movies.csv 數據集,進行用戶行為分析 • 利用 K-means 演算法進行電影推薦 • 數據集介紹 • 9742部電影 • 100836用戶評分 31
  • 32.
    Recommendation (K-means) • 探討science fiction and romance 兩種類型的電影客戶偏好 32
  • 33.
  • 34.
    Recommendation • 如何定義相似度 • 角度 •餘弦相似性 (Cosine similarity) • 距離 • 歐氏距離 (Euclidean distance) • 漢明距離 (Hamming distance) • 曼哈頓距離 (Manhattan distance) • 切比雪夫距離 (Chebyshev distance) • 馬氏距離 (Mahalanobis distance) • 係數 • 雅卡爾指數 (Jaccard similarity coefficient) 34 參考: https://towardsdatascience.com/log-book-guide-to-distance-measuring-approaches-for-k-means-clustering-f137807e8e21
  • 35.
  • 36.
    作業 • 什麼是 K-means?基本迭代步驟是什麼? • 有哪些方法可以加快K-means的執行效率? • 繼續完成 homework.ipynb,完成客戶分群 • 決定K值 • 每一群客戶的客戶評分分析 • 是否有存在相似的群,如果存在,可以手動合併 36