KEMBAR78
Unsupervised learning in data clustering | PDF
國立臺北護理健康大學 NTUNHS
非監督式學習
Orozco Hsu
2025-03-28
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 介紹
數據處理、模型維護與應用
非監督式學習
Code
• Sample code
• https://drive.google.com/drive/folders/1bVC71e_7dQ97XB0JhZ1Wt8cEllOT0h
Fi?usp=sharing
4
補充練習需要的套件
• 套件說明
• pip install pyod
• pip install yellowbrick
• pip install lightgbm
• pip install prince
5
(Python library for detecting anomalous/outlying objects.)
(Yellowbrick is a suite of visual analysis and diagnostic tools designed to
facilitate machine learning with scikit-learn.)
(Compiled library that is included in the wheel file supports both GPU and CPU versions out of the box.)
https://pypi.org/project/lightgbm/
(Prince is a library for doing factor analysis. This includes a variety of methods including principal
component analysis (PCA) and correspondence analysis (CA) .)
補充練習需要的套件
• 套件說明
• pip install sentence-transformers
• pip install plotly
• pip install shap
6
(This framework provides an easy method to compute dense vector representations
for sentences, paragraphs, and images.)
https://pypi.org/project/sentence-transformers
(To explain the output of any machine learning model.)
(An open-source, interactive data visualization library for Python.)
請注意,使用 plotly 的 3D 顯示,需要在 jupyterlab 3.x 的版本
用來觀察模型特徵之間的交互關係
非監督式學習
• 無標籤 (Label) 數據學習
• 非監督式學習不依賴標籤,模型從未標記數據中發掘結構與模式
• 主要技術
• 包括降維 (Dimensionality Reduction)、分群 (Clustering)、異常檢測 (Anomaly Detection) 方法
• 常見演算法
• K-Means、DBSCAN、PCA、Autoencoders 等
• 應用場景
• 客戶分群、推薦系統、異常偵測、數據視覺化、特徵學習等領域
7
數據視覺化
• 視覺化的優點
• 能【直觀】呈現分群集結構,幫助發現隱藏模式與趨勢。它便於識別
【異常】資料點,促進數據的分組理解。此外,視覺化能輔助【模型選
擇】與【調參】,讓分析結果更具說服力,也方便溝通與決策。
• 視覺化的挑戰
• 維度高時難以展示,無法進行分析。
• 降維過程可能【遺失關鍵資訊】,且解讀受主觀影響,易誤導分析結果。
8
數據視覺化
9
主成分分析 - 維基百科,自由的百科全書
主成份分析 (PCA) 就是透過降維技術,透過變異量找出最大的成份,並投影到新的軸上 (PC1, PC2,PC3)
補充: 降維、異常偵測、數據視覺化
• 當資料維度過多時,常用降維方法來視覺化,資料壓縮至 2D 或 3D 空間
• 下述方法能保留主要數據結構,方便觀察群集分布和分群效果
• 主成份分析 (Principal Component Analysis)
• 通過找出資料中變異量最大方向的【主成分】來簡化資料維度。
• 它保留資料中最多的資訊,同時減少雜訊,適合高維資料的視覺化和特徵
提取。
• t-SNE (t-distributed Stochastic Neighbor Embedding)
• 【非線性】降維方法,保留高維度資料的局部結構。
• 問題
• 降維方法的選擇? (變數間關係為線性選擇 PCA、非線性選擇 t-SNE)
10
K-Means_advanced.ipynb
例如,數據有五個欄位(如身高、體重、年齡、收入、教育年數),如果這些特徵之間
呈線性關係(如收入 ≈ 2 ×教育年數 + 1000 ×年齡)
K-Means
• 為【非監督式學習】一種常見的演算法
• 不需要準備【數據標記】,沒有應變數
11
參考: https://zhuanlan.zhihu.com/p/97510390
K-Means
• 演算法步驟
• 定義 【K 值】,決定分群數目。
• 隨機給各 K 群中心點,計算所有訓練樣本,把每個訓練樣本【分配到距
離最近】的 K 群當中。
• 【移動】各 K 群的中心點,讓該點為該群所有樣本距離和的【平均處】。
• 【重複】上述動作,直到中心點【不再移動】為止。
• 步驟演繹: https://www.youtube.com/watch?v=5I3Ei69I40s
12
K-Means
• 受到【初始值】和【離群值】的影響,造成分群結果【不穩定】
• 甚麼叫做不穩定?
• 容易收斂到【局部】最佳解
• 甚麼叫做局部?
• 盡量選擇【均衡】的樣本數據集
• 甚麼叫做均衡? 如果不均衡怎麼辦?
• 需要【預設】分群數量
• 面對未知的數據,如何選擇適當的分群數?
• 【分群質心】不一定是樣本數據集
• 質心是否可以重複利用? 作為下次新數據的質心?
13
如何選擇最佳的分群數量 (K值)
• 各群與各群合併方式
• 例如: 主觀進行分 20 群,再將相似的群合併起來
• 如何定義相似的群?
• 透過輪廓係數 (Silhouette),用【分數】判斷
• 透過肘部方法 (Elbow),找出【轉折點】
14
https://en.wikipedia.org/wiki/Silhouette_(clustering)
Elbow method (clustering) - Wikipedia
Elbow 著重於同群內相似性 (Sum of Squared Errors: SSE 誤差降低), Silhouette 著重群與群之間區別程度
補充: (同時處理連續與類別的演算法)
• K-prototype 演算法
• 結合 K-Means 與 K-Modes 演算法
• 【連續數據】採用歐氏距離,【類別數據】以匹配相似度後進行分組
• 舉例
• 當 K=3 時,分群的結果如下
• 年齡較高的群 => {年齡: 25, 性別: 男}、{年齡: 30, 性別: 女}、{年齡: 28, 性
別: 男}
• 年齡較低的男性群: {年齡: 20, 性別: 男}
• 年齡較低的女性群: {年齡: 22, 性別: 女}
15
收集變數/處理變數
• 非監督式模型變數
• 【不需】應變數
• 盡量找出【會變化】的變數,不要找性別、居住地不大會變化的變數
• 盡量【避免】 binary 變數
• 【可接受】數值型變數、類別型變數
• 處理變數
• 【不允許】空值,空值要事先處理
• 一定要處理【離群值】,可透過【切bin】的方式處理
• 數值型變數可考慮進行【標準化】,如: StandardScaler
• 類別型變數可考慮 Dummy variables、One-Hot encoding 方式轉換
16
補充: (Dummy variable vs One-Hot encoding)
17
Dummy variable One-Hot encoding
適用於線性回歸、邏輯回歸等模型,避免多重共線性問題 適用於決策樹、分群、深度學習等模型,因為它們不受多重共線性影響
觀察變數內容值/處理變數 (資料預處理)
• 檢視每一個連續變數,內容值分佈
• 肉眼觀察,不要通通集中在某一區
• 透過變數變換,盡量將值展開 (攤平、拉開)
18
大數據運算,需要考量時間複雜度
• 每一筆資料都要跟【全部資料】計算距離,時間複雜度高
• 幾種方法可以增加速度
• 透過程式面著手,如: 多執行緒 + In memory (採用 pyspark 套件)
• 雖然 Scikit-learn 預設採用【全核心】計算來增加速度,也可以考慮用
numpy 套件提升速度
• 採用GPU版本的 K-Means,如: cmML
19
Using NumPy to Speed Up K-Means Clustering by 70x | Paperspace Blog
K-Means Clustering Algorithm – What Is It and Why Does It Matter?
補充: (資料分佈指標)
➢ 偏度 (Skewness)
• 衡量資料的對稱性,右偏態或左偏態。
➢ 峰度 (Kurtosis)
• 衡量分布的尖銳或平坦程度。
• 衡量數值分布的同質性與異質性,越接近高狹峰表示越同質,越趨向低
闊峰表示越異質。
20
補充: (資料分佈指標)
➢範圍 (Range)
• 【最大值與最小值】之差,簡單衡量數據的【分散】程度。
➢ 變異數 (Variance)
• 資料點與平均值的偏離程度,用於衡量分散性。
➢ 標準差 (Standard Deviation)
• 變異數的平方根,更常用於解釋。
21
補充: (資料分佈指標)
➢ 四分位距 (IQR)
• 75 分位數與 25 分位數之差,反映中間 50% 資料的範圍,用來描述數據
的集中趨勢及穩定性。
22
模型維護 (資料更新後)
• Re-fresh
• 【相同】變數欄位,僅資料內容更新。
• 沿用相同的分群質心,取得最新的分群名單。
• Re-model
• 【有新的變數】產生,需要重頭建模一次。
• 取得最新的分群質心並儲存,下次更新分群名單時使用。
23
其他常見的分群演算法
24
https://scikit-learn.org/stable/modules/clustering.html
受眾分群
• 【敘述型統計】觀察每一群的變數分布
• 年紀區間 => 如: 這是一群老人
• 性別分布 => 如: 女性較多
• 居住地分布 => 如: 北部區域
• 等等…
• 依照業務邏輯,命名每一群的名稱
(Label naming)
• 用於名單操作 (業務場景)
25
課堂練習
• 開啟分群程式碼
• 資料集
• iris.csv
• 資料筆數
• 150
• 欄位數量
• 4
26
K-Means_iris.ipynb
• 進行步驟
• 資料視覺化
• 直方圖、密度分布圖
• 資料處理
• 資料正規化
• 找出分群數量
• 找出分群質心,並儲存
• 分群後的資料視覺化
直方圖
密度分布圖 (比較緩和的直方圖)
儲存質心檔: iris_centers.csv
補充: 利用向量空間進行分群
• 資料需要被轉換成向量(文字、數字),這個方法稱為 embedding。
• 先將文字進行斷詞 (Tokenizer),使用詞嵌入模型進行轉換,例如: W2V、
GloVe 模型,或直接使用 Sentence-BERT 完成向量。
• 比較向量間的相似度即可進行分群。
27
補充: (Sentence-BERT 預訓練模型)
28
sentence-transformers/all-MiniLM-L6-v2 ·Hugging Face
作業
• 繼續完成剩餘程式碼,完成客戶分群
• 透過投影片介紹分群結果,並搭配【衛教方式】、【推薦健康講座】、
【結合時事】等方式進行報告。
29
K-Means_ckd.ipynb
作業練習檔: kidney_disease.csv

Unsupervised learning in data clustering