2_master_cluster_algorithm_by_kmeans_gmm_20251110.pdf

orozcohsu 6 views 37 slides Oct 26, 2025
Slide 1
Slide 1 of 37
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37

About This Presentation

Master cluster algorithm by PCA visualization and using k-means and gmm to find out the best cluster of dataset


Slide Content

國立臺北護理健康大學 NTUNHS
非監督式學習 / Clustering
Orozco Hsu
2025-11-10
1

About me
2
•Education
•NCU (MIS)、NCCU (CS)
•Experiences
•Telecom big data Innovation
•Retail Media Network (RMN)
•Customer Data Platform (CDP)
•Know-your-customer (KYC)
•Digital Transformation
•LLM Architecture & Development
•Research
•Data Ops (ML Ops)
•Generative AI research
•Business Data Analysis, AI

Tutorial Content
3
作業
非監督式學習介紹
資料探索與分群模型的選擇
分群模型實作 (K-means 與 GMM)

建立 Python 開發環境
•進入命令提示字元,建立程式開發環境
4

建立 Python 開發環境
•切換執行環境 (由預設的 base環境切換到剛剛新建立的環境 )
5

建立 Python 開發環境
•安裝套件
•pip install pandas
•pip install scikit-learn
•pip install seaborn
•pip install matplotlib
•pip install jupyterlab
6

建立 Python 開發環境
•開啟 jupyterlab(編寫程式的工具 )
7

Python 第二個好用的套件
•Simple and efficient tools for predictive data analysis
•Accessible to everybody, and reusable in various contexts
•Built on NumPy, SciPy, and matplotlib
•Open source, commercially usable -BSD license
8
scikit-learn: machine learning in Python —scikit-learn 1.7.2 documentation
(第一個是 Pandas)

常見的非監督式學習
•指【沒有任何標記 】輸出資料的情況下提供演算法輸入資料,演算法會自行
識別資料內部和之間的模式與關係
•非監督式學習 (分群)
•同一群裡的 【資料同質性高 】,【不同群的資料同質性低 】
•非監督式學習 (關聯法則 )
•找出資料的 【規則性】,例如: {洋蔥, 馬鈴薯}→{漢堡}
•非監督式學習 (降維)
•【降低維度】但保留資料的 【最大變異性 】
9

補充: 降維 (Dimensionality Reduction)
10
幫助我們視覺化資料在空間上的分佈,解決高維資料不易進行資料探索

常見的應用場景
•病患疾病上的分群
•設計一個分群演算法 ,將資料分成 K 個群,每一個群的資料具有最大相似度 ,
且 K 個群的相似度總和為最大 ,分別從各群中找出病患最可能罹患的疾病
•商品購物上的關聯法則
•每個商品被購買的同時 ,會有哪樣商品一起被購買 ,我們就可以把這兩樣商品
擺放在一起 ,讓消費者可以將商品一起買走
11

根據資料類型,選擇需要的欄位
•資料型態
•文字類別
•數字
•日期
•資料更新頻率
•不更新 (如: 性別)
•更新慢 (如: 慢性病)
•更新快 (如: 喜好行為 )
12

Data Sanity Check (Data Preprocess)
•不允許空值, 【空值】要事先處理
•盡量找出 【會變化】的欄位,而類似性別、居住地不大會變化的變數可做為
分群後的 【補充說明 】
•盡量避免 【二元變數 】
•可接受具有離群值的數值型變數、類別型變數,必須 【標準化】
•數值型變數 : StandardScaler 方式 (不改變原資料分佈 )
•類別型變數 : One-Hot Encoding 方式轉換成數值
13

One-Hot Encoding
14data_preprocess.ipynb

補充: 常見的變數變換
15
Transform 適用情況
Log1p (自然對數變換 )適用於正數與 0,可壓縮右偏數據,但無法處理負數
Box-Cox 只能處理大於 0 的數據,能有效修正偏態與常態化資料
Yeo-Johnson
類似 Box-Cox,但能處理 負數與 0,適用範圍更廣,建議為
預設首選

為何要用 Principle Component Analysis (PCA) ?
•透過 PCA 將高維資料降維後進行視覺化,觀察樣本在低維空間的分布情
•判斷資料的分佈特性,選擇最適合的分群演算法
16

適合 K-means 分群演算法
17
•使用 PCA 將資料降維至 2 維,方便視覺化
•每個群是球狀,距離中心等距 (等變異量)
•清楚分離的資料非常適合 K-means
•一種【硬切分】的分群方法,也就是說,它會把
每個資料點只分到 【一個群】

變數變換 (Data Preprocess)
•檢視每一個變數,內容值分布
•肉眼觀察,不要過度集中
•透過變數變換 (改變原資料分布 ),盡量將值展開 (攤平),以利【硬切分】
18
data_transform.ipynb

適合高斯混合分群演算法
19
•群集形狀明顯不是球狀( non-spherical)
•可以處理【不同形狀與方向 】的群集
•可為每個 cluster 分配一個共變異數矩陣,捕
捉橢圓形狀與方向 ,這表示處理上更靈活
•用【機率方式】表示資料屬於哪個群

K-means
20

K-means 演算步驟
•指定群集數量 K
•初始化群中心 (Centroids)
•隨機選取 K 個初始群中心點,作為每一群的代表
•樣本分配( Assignment Step)
•計算每個樣本與各個群中心的 【距離】,並將其分配至距離最近的群中心所屬群集
•更新群中心( Update Step)
•根據每個群集中所包含的樣本,重新計算群中心的位置 (通常為該群內所有樣本的平均值 )
•重複迭代至收斂
•持續重複【樣本分配 】與【更新群中心 】兩個步驟,直到群中心位置不再變動或變動
幅度低於閾值為止
21
https://www.youtube.com/watch?v=5I3Ei69I40s

K-means 演算步驟
22
原始一維資料, 假設分 2 群 (K = 2)
x = [1.0, 1.5, 2.0, 5.0, 6.0]
初始預設的參數
群 K 中心點
μ₁ 1.5
μ₂ 5.0
分配樣本 (Assignment Step),計算每個樣本與兩個中心
的距離,並分配到最近的中心
x 距離 to μ₁ 距離 to μ₂ 分配
1.0 0.5 4.0 群1
1.5 0.0 3.5 群1
2.0 0.5 3.0 群1
5.0 3.5 0.0 群2
6.0 4.5 1.0 群2
第一輪分群結果
群 1:{1.0, 1.5, 2.0}
群 2:{5.0, 6.0}

K-means 演算步驟
23
更新群中心,計算每個群內樣本的平均值
(作為新的中心)
μ₁ = (1.0 + 1.5 + 2.0) / 3 = 1.5
μ₂ = (5.0 + 6.0) / 2 = 5.5
重複迭代,再次進行 Assignment
x 距離 to 1.5距離 to 5.5 分配
1.0 0.5 4.5 群1
1.5 0.0 4.0 群1
2.0 0.5 3.5 群1
5.0 3.5 0.5 群2
6.0 4.5 0.5 群2
分群結果相同,群中心也幾乎不再變動 (μ₁=1.5, μ₂=5.5),
表示已經收斂, K-means 結束
最終分群結果
群 1:{1.0, 1.5, 2.0},中心 μ₁= 1.5
群 2:{5.0, 6.0},中心 μ₂= 5.5

補充: 計算距離的方式
•如何定義相似特性 ?
•距離/密度
•歐式距離
•曼哈頓距離
•夾角餘弦
•切比雪夫距離
•漢明距離
•閔可夫斯基距離
•馬式距離
24
二維平面兩點距離
n維空間兩點距離
二維平面兩向量之間的夾角餘弦

高斯混合分群 (1/4)
(Gaussian Mixture Model)
25
這是一張經由高斯群集,透過高斯混合分群學習出來的參數:平均值 (μ)、標準差 (σ)、權重 (π),所繪製的圖

高斯混合分群演算步驟 (2/4)
•指定群集數量 K
•初始化參數
•每個群的平均值( μ)
•共變異數矩陣( Σ)
•每個群的權重( π)
•E 步驟(Expectation Step)
•計算每個樣本對每個群的隸屬機率
26
•M 步驟(Maximization Step)
•根據剛才算出的隸屬機率,更新參數
•重複迭代至收斂
•持續重複 E 步驟 和 M 步驟,直到收斂
•群集分配
•最終可以根據每個樣本對各群的機率大小

高斯混合分群演算步驟 (3/4)
27
原始一維資料, 假設分 2 群 (K = 2)
x = [1.0, 1.5, 2.0, 5.0, 6.0]
初始預設的參數
群 K 均值 μ標準差 σ權重 π
1 1.0 1.0 0.5
2 5.0 1.0 0.5
步驟一 (E-Step),對每筆資料 ??????
?????? 計算屬於每一群的機率
第一筆資料 ??????
1=1.0為例
第一群的機率
第二群的機率
加入權重計算
所以第一筆資料幾乎「全屬於第一群」

高斯混合分群演算步驟 (4/4)
28
步驟二 (M-Step),計算新的 均值 μ、標準差 σ、權重 π
重複 E-Step => M-Step,直到收斂
(不斷迭代計算 ,直到 μ、σ、π 不再大幅改變 )
均值 μ:
標準差 σ:
權重 π:
資料 靠近 μ=1 靠近 μ=5
1.0 Y N
1.5 Y N
2.0 Y N
5.0 N Y
6.0 N Y
是典型【雙峰分布 】,用 GMM 分得比 K-means
【更細緻】,因為 GMM 不會硬切,它讓每一筆
資料以【機率】的方式對多個群有所屬

如何選擇分群數 (K)
•透過輪廓係數 (Silhouette),該值越大,表示效果越 好,適合作為 K
•透過該值檢視 inline (適合在該群 ) 與 outlier-like (疑似分錯群 ) 的樣本
29

Iris 資料集
30
已知有 3 種類型的花,是否最適合的 K 為 3 ?

Iris 資料集
31
K = 2 時,輪廓係數很高,表示 Setosa為一群,其他混為一群
K = 3 時,輪廓係數反而降低,因為兩個混在一起的群被拆開,此時就會發生分錯群的因素

透過 Python 程式碼,完成分群演算法
32
K-means_GMM_iris.ipynb

模型是否每次都要重建 ?
•Re-fresh
•相同變數欄位,僅資料內容更新
•沿用相同的分群參數,取得最新的分群名單
•Re-model
•有新的變數產生,需要重頭建模一次
•取得最新的分群參數並儲存,下次更新分群名單時使用
33

補充: 資料預處理 (進入建模之前的重要步驟 )
34

動態與靜態資料一起分析
35
群 K 性別 年薪 (萬)
0 F 120
0 F 150
1 F 80
1 M 65
2 M 300
2 M 350
動態資料,用來建立
分群模型
針對各群進行敘述型統計

受眾分群
•觀察每一群的變數分布
•年紀區間 => 如: 這是一群老人
•性別分布 => 如: 女性較多
•居住地分布 => 如: 北部區域
•依照業務邏輯,命名各群名稱 (Labeling)
•用於業務場景
36

作業
•繼續完成 hw_ckd.ipynb,完成客戶分群
•進行 Data Sanity Check (Data preprocess)
•透過 PCA 降維視覺化方式探討資料分佈
•建議: 先修正偏態 (使用變數變換 ) 再做 Standardscale標準化
•透過 K-means 與高斯混合模型建立分群模型
•透過投影片介紹分群結果,並搭配衛教方式、推薦健康講座 (需要結合時事 )
37