SlideShare a Scribd company logo
國立臺北護理健康大學 NTUNHS
Clustering
Orozco Hsu
2024-11-12
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 介紹
數據處理、模型維護與應用
分群視覺化
Code
• Download code
• GitHub - orozcohsu/ntunhs_2024_01
• Folder
• 20241112
4
作業回顧
5
視覺化資料分析
欄位名稱 說明
Sales(銷量) Unit sales (in thousands) at each location
CompPrice(競爭者價格) Price charged by competitor at each location
Income(收入等級) Community income level (in thousands of dollars)
Advertising(廣告預算) Local advertising budget for company at each location (in thousands of dollars)
Population(人口) Population size in region (in thousands)
Price(價格) Price company charges for car seats at each site
ShelveLoc
A factor with levels Bad, Good and Medium indicating the quality of the shelving
location for the car seats at each site
Age(年齡) Average age of the local population
Education(教育程度) Education level at each location
Urban
A factor with levels No and Yes to indicate whether the store is in an urban or
rural location
US A factor with levels No and Yes to indicate whether the store is in the US or not
6
視覺化資料分析
• 通常行銷的最終目標就是【促進銷量】,所以我們會想知道究竟是什麼因素
可能影響銷量(Sales),藉此達到提升銷量的目的。
• 先從基本的【人口因素】開始比較,市場的大小與人口(Population)有絕
對的相關,以下我們先以視覺化的方式來呈現。
7
8
散佈的狀態
沒有顯著的相關
視覺化資料分析
• 有機會影響銷量的因素【貨架陳列位置 】(ShelveLoc),貨架陳列位置是指
商品放在通路的擺放位置的優劣。
• 放入貨架陳列位置因素可以清楚地發現,貨架陳列位置的確會影響銷量,
成功驗證我們的假設。
• 這時就可以向老闆建議,銷量不好、但是可針對【人口數】大的分店,將行
銷預算投資,提升商品於【貨架陳列位置】。
9
10
視覺化資料分析
• 放入變數【廣告預算】後,可以看有許多分店, 即便投入大量行銷預算,
【效果也不大】。
• 找到可以改進銷量不好的分店,而我們可以設定些條件觀察
• 例如:選出【人口數】大於 300 且【銷售量】在7.5(千單位)以下,並
且有廣告預算的分店,建議將廣告預算可以勻撥一些至提升【貨架陳列
位置】,就可預期會有提升銷售的效益。
11
12
建立套件
• 開啟 jupyterlab (步驟: 檢查環境 >> 進入環境 >> 開啟)
• 查看目前套件版本 (步驟: 檢查套件 >> 安裝套件)
13
補充練習需要的套件
• 套件說明
• pip install pyod
• pip install yellowbrick
• pip install lightgbm
• pip install prince
14
(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
• 一鍵安裝
15
(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 的版本
分群視覺化
• 視覺化的優點
• 能【直觀】呈現群集結構,幫助發現隱藏模式與趨勢。它便於識別【異
常】資料點,促進數據的分組理解。此外,視覺化能輔助【模型選擇】
與【調參】,讓分析結果更具說服力,也方便溝通與決策。
• 視覺化的挑戰
• 維度高時難以展示,可能【失真】或【簡化過度】。
• 降維過程可能【遺失關鍵資訊】,且解讀受主觀影響,易誤導分析結果。
16
分群視覺化
17
主成分分析 - 維基百科,自由的百科全書
補充: 視覺化的方式 (降維)
• 當資料維度過多時,常用降維方法來視覺化,資料壓縮至 2D 或 3D 空間
• 下述方法能保留主要數據結構,方便觀察群集分布和分群效果
• 主成份分析 (Principal Component Analysis)
• 通過找出資料中變異最大方向的【主成分】來簡化資料維度。
• 它保留資料中最多的資訊,同時減少雜訊,適合高維資料的視覺化和特徵
提取。
• t-SNE (t-distributed Stochastic Neighbor Embedding)
• 【非線性】降維方法,保留高維度資料的局部結構。
• 問題
• 降維方法的選擇? (即判斷變數間關係為線性、非線性或彼此相關性)
18
Kmeans_advanced.ipynb
K-means
• 為【非監督式學習】一種常見的演算法
• 不需要準備【數據標記】,沒有應變數
19
參考: https://zhuanlan.zhihu.com/p/97510390
K-means
• 演算法步驟
• 定義 【K 值】,決定分群數目。
• 隨機給各 K 群中心點,計算所有訓練樣本,把每個訓練樣本【分配到距
離最近】的 K 群當中。
• 【移動】各 K 群的中心點,讓該點為該群所有樣本距離和的【平均處】。
• 【重複】上述動作,直到中心點【不再移動】為止。
• 步驟演繹: https://www.youtube.com/watch?v=5I3Ei69I40s
20
K-means
• 受到【初始值】和【離群值】的影響,造成分群結果【不穩定】
• 甚麼叫做不穩定?
• 容易收斂到【局部】最佳解
• 甚麼叫做局部?
• 盡量選擇【均衡】的樣本數據集
• 甚麼叫做均衡? 如果不均衡怎麼辦?
• 需要【預設】分群數量
• 面對未知的數據,如何選擇適當的分群數?
• 【分群質心】不一定是樣本數據集
• 質心是否可以重複利用? 作為下次新數據的質心?
21
如何選擇最佳的分群數量 (K值)
• 各群與各群合併方式
• 例如: 主觀進行分 20 群,再將相似的群合併起來
• 如何定義相似的群?
• 透過輪廓係數 (Silhouette),用【分數】判斷
• 透過肘部方法 (Elbow),找出【轉折點】
22
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, 性別: 女}
23
收集變數/處理變數
• 非監督式模型變數
• 【不需】應變數
• 盡量找出【會變化】的變數,不要找性別、居住地不大會變化的變數
• 盡量【避免】 binary 變數
• 【可接受】數值型變數、類別型變數
• 處理變數
• 【不允許】空值,空值要事先處理
• 一定要處理【離群值】,可透過【切bin】的方式處理
• 數值型變數可考慮進行【標準化】,如: StandardScaler
• 類別型變數可考慮 Dummy variables、One-Hot encoding 方式轉換
24
Dummy variable vs One-Hot encoding
25
觀察變數內容值/處理變數 (Pre-process)
• 檢視每一個變數,內容值分布
• 肉眼觀察,不要通通集中在某一區
• 透過變數變換,盡量將值展開 (攤平)
26
大數據運算,需要考量時間複雜度
• 每一筆資料都要跟【全部資料】計算,時間複雜度高
• 幾種方法可以增加速度
• 透過程式面著手,如: 多執行緒 (採用 pyspark 套件)
• 雖然 Scikit-learn 採用【全核心】計算來增加速度,也可以考慮用
numpy 套件提升速度
• 改用 mini-batch k-means
27
MiniBatchKMeans — scikit-learn 1.6.dev0 documentation
Using NumPy to Speed Up K-Means Clustering by 70x | Paperspace Blog
補充: (資料分布指標)
➢ 偏度 (Skewness)
• 衡量資料的對稱性,右偏態或左偏態。
➢ 峰度 (Kurtosis)
• 衡量分布的尖銳或平坦程度。
• 衡量數值分布的同質性與異質性,越接近高狹峰表示越同質,越趨向低
闊峰表示越異質。
28
補充: (資料分布指標)
➢範圍 (Range)
• 【最大值與最小值】之差,簡單衡量數據的【分散】程度。
➢ 變異數 (Variance)
• 資料點與平均值的偏離程度,用於衡量分散性。
➢ 標準差 (Standard Deviation)
• 變異數的平方根,更常用於解釋。
29
補充: (資料分布指標)
➢ 四分位距 (IQR)
• 75 分位數與 25 分位數之差,反映中間 50% 資料的範圍,用來描述數據
的集中趨勢及穩定性。
30
模型維護 (資料更新後)
• Re-fresh
• 【相同】變數欄位,僅資料內容更新。
• 沿用相同的分群質心,取得最新的分群名單。
• Re-model
• 【有新的變數】產生,需要重頭建模一次。
• 取得最新的分群質心並儲存,下次更新分群名單時使用。
• 以上兩種方式的使用時機?
31
其他常見的分群演算法
32
https://scikit-learn.org/stable/modules/clustering.html
受眾分群
• 【敘述型統計】觀察每一群的變數分布
• 年紀區間 => 如: 這是一群老人
• 性別分布 => 如: 女性較多
• 居住地分布 => 如: 北部區域
• 等等…
• 依照業務邏輯,命名每一群的名稱
(Label naming)
• 用於名單操作 (業務場景)
33
課堂練習
• 開啟分群程式碼
• 資料集
• iris.csv
• 資料筆數
• 150
• 欄位數量
• 4
34
kmean_iris.ipynb
• 進行步驟
• 資料視覺化
• 直方圖、密度分布圖
• 資料處理
• 資料正規化
• 找出分群數量
• 找出分群質心,並儲存
• 分群後的資料視覺化
直方圖
密度分布圖 (比較緩和的直方圖)
儲存質心檔: iris_centers.csv
補充: 利用向量空間進行分群
• 資料需要被轉換成向量(文字、數字),這個方法稱為 embedding
• 需要有一個 LLM 模型進行轉換,我們可以到 hugging face 進行
下載 LLM 模型
35
huggineface (預訓練模型)
36
sentence-transformers/paraphrase-MiniLM-L6-v2 ·Hugging Face
作業
• 繼續完成剩餘程式碼,完成客戶分群
• 透過投影片介紹分群結果,並搭配【衛教方式】、【推薦健康講座】、
【結合時事】等方式進行報告。
37
kmean_ckd.ipynb
作業練習檔: kidney_disease.csv

More Related Content

Similar to 非監督是學習_Kmeans_process_visualization20241110.pdf (20)

PDF
Foodie warroom
Edward Tsai
 
PPTX
機器學習簡報 / 机器学习简报 Machine Learning
Will Kuan 官大鈞
 
PDF
[DSC 2016] 系列活動:許懷中 / R 語言資料探勘實務
台灣資料科學年會
 
PDF
2023 Data visualization using Python from scratch
FEG
 
PDF
2_學院碩士班_分群模型_20220606.pdf
FEG
 
PDF
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
FEG
 
PDF
資料視覺化_Exploation_Data_Analysis_20241015.pdf
FEG
 
PPTX
R 語言教學: 探索性資料分析與文字探勘初探
Sean Yu
 
PPTX
探索性分析:分群與異常偵測 - 2020 - blog.pptx
Yung-Ting Chen
 
PPTX
Programing with python for data science
Zih Yen Chen
 
PDF
Social network analysis
FEG
 
PPTX
20151016 中興大學 big data + machine learning
Meng-Ru (Raymond) Tsai
 
PDF
3. data features
艾鍗科技
 
PDF
Python - Matplotlib basic - v01
ssuser5e7722
 
PDF
machine learning introduction
FEG
 
PDF
[系列活動] 手把手打開Python資料分析大門
台灣資料科學年會
 
PDF
Hands on data analysis 101
FEG
 
PDF
PLS偏最小平方法教材一天-三星統計謝章升-20131122
Beckett Hsieh
 
PPTX
R intro 20140716-basic
Kevin Chun-Hsien Hsu
 
PDF
數據特性 vs AI產品設計與實作
Albert Y. C. Chen
 
Foodie warroom
Edward Tsai
 
機器學習簡報 / 机器学习简报 Machine Learning
Will Kuan 官大鈞
 
[DSC 2016] 系列活動:許懷中 / R 語言資料探勘實務
台灣資料科學年會
 
2023 Data visualization using Python from scratch
FEG
 
2_學院碩士班_分群模型_20220606.pdf
FEG
 
學院碩士班_非監督式學習_使用Orange3直接使用_分群_20240417.pdf
FEG
 
資料視覺化_Exploation_Data_Analysis_20241015.pdf
FEG
 
R 語言教學: 探索性資料分析與文字探勘初探
Sean Yu
 
探索性分析:分群與異常偵測 - 2020 - blog.pptx
Yung-Ting Chen
 
Programing with python for data science
Zih Yen Chen
 
Social network analysis
FEG
 
20151016 中興大學 big data + machine learning
Meng-Ru (Raymond) Tsai
 
3. data features
艾鍗科技
 
Python - Matplotlib basic - v01
ssuser5e7722
 
machine learning introduction
FEG
 
[系列活動] 手把手打開Python資料分析大門
台灣資料科學年會
 
Hands on data analysis 101
FEG
 
PLS偏最小平方法教材一天-三星統計謝章升-20131122
Beckett Hsieh
 
R intro 20140716-basic
Kevin Chun-Hsien Hsu
 
數據特性 vs AI產品設計與實作
Albert Y. C. Chen
 

More from FEG (20)

PDF
Supervised learning in decision tree algorithm
FEG
 
PDF
CNN_Image Classification for deep learning.pdf
FEG
 
PDF
Sequence Model with practicing hands on coding.pdf
FEG
 
PDF
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
 
PDF
AIGEN introduction with practicing hands on coding.pdf
FEG
 
PDF
Operation_research_Linear_programming_20241015.pdf
FEG
 
PDF
Operation_research_Linear_programming_20241112.pdf
FEG
 
PDF
Sequence Model pytorch at colab with gpu.pdf
FEG
 
PDF
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
FEG
 
PDF
Pytorch cnn netowork introduction 20240318
FEG
 
PDF
2023 Decision Tree analysis in business practices
FEG
 
PDF
2023 Supervised Learning for Orange3 from scratch
FEG
 
PDF
2023 Supervised_Learning_Association_Rules
FEG
 
PDF
202312 Exploration Data Analysis Visualization (English version)
FEG
 
PDF
202312 Exploration of Data Analysis Visualization
FEG
 
PDF
Transfer Learning (20230516)
FEG
 
PDF
Image Classification (20230411)
FEG
 
PDF
Google CoLab (20230321)
FEG
 
PDF
Supervised Learning
FEG
 
PDF
UnSupervised Learning Clustering
FEG
 
Supervised learning in decision tree algorithm
FEG
 
CNN_Image Classification for deep learning.pdf
FEG
 
Sequence Model with practicing hands on coding.pdf
FEG
 
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
 
AIGEN introduction with practicing hands on coding.pdf
FEG
 
Operation_research_Linear_programming_20241015.pdf
FEG
 
Operation_research_Linear_programming_20241112.pdf
FEG
 
Sequence Model pytorch at colab with gpu.pdf
FEG
 
資料視覺化_透過Orange3進行_無須寫程式直接使用_碩士學程_202403.pdf
FEG
 
Pytorch cnn netowork introduction 20240318
FEG
 
2023 Decision Tree analysis in business practices
FEG
 
2023 Supervised Learning for Orange3 from scratch
FEG
 
2023 Supervised_Learning_Association_Rules
FEG
 
202312 Exploration Data Analysis Visualization (English version)
FEG
 
202312 Exploration of Data Analysis Visualization
FEG
 
Transfer Learning (20230516)
FEG
 
Image Classification (20230411)
FEG
 
Google CoLab (20230321)
FEG
 
Supervised Learning
FEG
 
UnSupervised Learning Clustering
FEG
 
Ad

非監督是學習_Kmeans_process_visualization20241110.pdf