狠狠撸

狠狠撸Share a Scribd company logo
國立臺北護理健康大學 NTUNHS
Decision Tree
Orozco Hsu
2023-12-05
1
About me
? Education
? NCU (MIS)、NCCU (CS)
? Experiences
? Telecom big data Innovation
? Retail Media Network (RMN)
? Customer Data Platform (CDP)
? Know-your-customer (KYC)
? Digital Transformation
? Research
? Data Ops (ML Ops)
? Business Data Analysis, AI
2
Tutorial
Content
3
演算法介紹
作業
何謂決策樹
模型評估
Code
? Download code
? https://github.com/orozcohsu/ntunhs_2023_02
? Folder
? 20231205
4
建立環境
? 切換執行環境
5
建立環境
? 安裝套件
? pip install pydotplus
6
建立環境
? 開啟 jupyterlab
7
何謂決策樹
? 決策樹是使用可以「Yes or No 」回答的條件進行預測的方法。
? 由於接近人類的思考程序,此方法得到的結果容易理解。
? 在決策樹中,條件的部分稱為節點、內部節點(node);最上面的
節點稱為根節點 (root)。
? 表示決策樹分類的末節點稱為葉子節點(leaf),代表一個類別。
8
9
何謂決策樹
10
何謂決策樹
? 一般來說,可以進行分類預測、也可以進行
數值預測
? 決策數的進階版就是隨機森林,結合多棵決
策樹(CART),想法就是結合多個弱學習器,
來建構一個更強的模型,這種方法又稱
Ensemble
11
https://blog.csdn.net/sddchina/article/details/45484757
Leo Breiman 提出
CART, 隨機森林, Bagging 演算法
何謂決策樹
? 為針對特徵值本身定義條件分類,所以會得到稜稜角角的結果。
12
氣溫 < 15 度
氣溫 > 25 度
濕度 < 40%
濕度 > 60%
不舒適
不舒適
不舒適
不舒適 舒適
No
Yes
No
Yes
No
Yes
No
Yes
氣溫對於舒適的重要性 > 濕度
何謂決策樹
? 分類問題
13
濕度%
溫度 C
舒適
不舒適
60
40
15 25
何謂決策樹
參考: https://sharkyun.medium.com/decision-tree-%E6%B1%BA%E7%AD%96%E6%A8%B9-41597818c075
9
何謂決策樹
? 每一個區塊都有正、負樣本
? 計算每一區的正、負樣本佔比
? 第一區: 5/6
? 第二區: 8/12
? 第三區: 3/10
? 第四區: 1/4
15
何謂決策樹
? 優點
? 能夠描述條件分歧的情況
? 容易理解、解釋學習結果,不像深度學習不曉得內部結構
? 即便大資料,僅需要較少的運算便能預測結果
? 適用數值型、類別型資料
? 缺點
? 資料條件分歧時,容易變得複雜且過擬合
? 資料稍微改變,就會輸出截然不同的決策樹
? 資料類別的比例盡量平均
? 可採用Tree Ensemble解決該缺點
16
因為行銷預算,需要挑選好區域2500個店家,請問如何挑選?
何謂決策樹
? 若為回歸問題時,葉子
節點為數值
? 平均值
? 眾數
? 中位數
17
決策樹特色
? 計算速度較快
? 數據工程少,不需要 data normalization、dummy variable、
one hot encoding 等
? 可以同時處理連續型、類別型變數
? 容易受到樣本不平衡影響 (應變數),要事先處理才行
? Over-sampling (Synthetic Minority Oversampling Technique, SMOTE)
? Under-sampling
? 很高的可解釋性,可視化分析,容易提取出規則
? 模型結果就是條件,搭配 SQL 語法可日後直接取出名單
18
常見的決策樹三種算法
? ID3演算法
? 每個節點處,選取獲得最高information gain的分支屬性進行分裂
? C4.5演算法
? 與ID3相似,差別在於選取獲得最高information gain ratio為主
? CART演算法
? GINI impurity (不純度)值,該值越低,說明該變數越顯著
19
常見的決策樹三種算法
20
https://zhuanlan.zhihu.com/p/341598480
劃分決策樹的基準
? 討論劃分決策樹的基準,主要原因是探討變數的重要性
? 大部分我們都使用CART,但為方便介紹以下為 ID3 計算方式
21
劃分決策樹的基準
? 1948年 Shannon 發表了通訊的數學原理,奠定了現代資訊理論
的基礎,其中就談到資訊熵的概念,解決了資訊的量化問題。
? 一個問題的不確定越大時,要搞清楚這個問題需要了解的資訊就
越多,就表示資訊熵越大。
22
P(x) 表示事件 x 出現的機率
Claude Shannon (資訊理論之父)
https://case.ntu.edu.tw/blog/?p=36957
劃分決策樹的基準
? 一個盒子分別有5個白球和5個紅球,隨機取出一個球,試問該球
的顏色? 這個問題的資訊量有多大呢?
? 白球、紅球出現的機率都為1/2,帶入資訊熵公式為:
23
劃分決策樹的基準
? 建立一顆決策樹時,如何優先選擇哪一個特徵來劃分?
? 歷遍所有的特徵,分別計算,使用這個特徵劃分數據集前後資訊熵的變
化值,最後選擇資訊熵幅度最大的那個特徵,優先作為劃分的依據。
? 選擇資訊獲利(Information Gain)最大的特徵作為分歧。
24
劃分決策樹的基準
顏色 紅球 白球 黑球 藍球
質量 1 1 1 2
體積 1 2 1 2
數量 2 2 4 8
機率 2/16 2/16 4/16 8/16
25
? 優先特徵分歧應該是「質量」還是「體積」?
劃分決策樹的基準
26
16顆球
體積
=1
白球*2
藍球*8
紅球*2
黑球*4
資訊熵 = 1.75
資訊熵 =0.721928
資訊熵 =0.918296
16顆球
質量
=1
藍球*8
紅球*2
黑球*4
白球*2
資訊熵 = 1.75
資訊熵 =0
資訊熵 =1.5
No
Yes
No
Yes
熵: 表示資訊混亂程度,該值越低,表示資訊越不混亂
Quiz: 選擇那一個變數進行分裂?
27
劃分決策樹的基準
? 使用最大資訊獲利(Information Gain)作為特徵分歧依據時,
容易造成優先選擇類別最多的特徵進行分裂
? 例如: 身分證ID作為特徵用來進行分裂,計算結果熵很低 (因為一人一筆
資料,資料不混亂),而每個葉子節點只有一個樣本,請問這樣結果好嗎?
? 解決的方法:
? 透過業務經驗合併該特徵欄位,(身分證ID特徵值太多)減少特徵值項目
? 不要用 ID3,改用佔比方式取代,例如: information gain ratio 等等
28
常見的決策樹問題
? 決策樹處理不好,很容易有 Overfitting 問題!
? 需透過超參數設定,都跟節點是否需要分裂有關!
? 一般超參數
? Scikit-learn特有超參數
29
常見的決策樹問題
? 一般超參數
? Minimum samples for a node split (資料數目不得小於多少才能再產生
新的節點?)
? Minimum samples for a terminal node (leaf) (要成為葉節點,最少需
要多少資料?)
? Maximum depth of tree (vertical depth) (限制樹的高度最多幾層?)
? Maximum number of terminal nodes (限制最終葉節點的數量?)
? Maximum features to consider for split (節點分裂時,最多考慮幾種
特徵值?)
30
常見的決策樹問題
? Scikit-learn特有超參數
? min_impurity_decrease (用來整體計算節點分裂的必要性)
? 了解何謂剪枝 (Pruning)?
? 在學習的過程中為了盡可能的正確的分類訓練樣本,不停地對結點進行
劃分,因此這會導致整棵樹的分支過多,也就導致了過擬合。
31
https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
Scikit-Learn 特有的超參數
? Scikit-Learn 為後剪枝 (Post-pruning)
? 先把整顆決策樹構造完畢,然後自底向上的對非葉子節點進行考察,若
將該節點對應的子樹換為葉子節點能夠帶來準確度(透過測試資料集驗證)
的提升,則把該子樹替換為葉子節點。
? 如果它顯示出改進,那麼我們可以繼續擴展該節點。
? 如果它顯示精度降低,則不應該擴展,即節點應該轉換為葉子節點。
32
後剪枝
想知道甚麼是前剪枝嗎?
? 前剪枝 (forward pruning) 就是在樹的構造過程中,透過事先設
定的閥值 (例如: P.30頁介紹的),考察當前分裂節點計算分裂前與
分裂後的差別,決定是否進行分裂
? 通常只用於訓練測試集
33
常見的決策樹問題
? 這麼多個超參數,優先
考慮樹的深度
? max_depth
34
偏差 (Bias) 與方差 (Variance)
? 軍訓課打靶為例
? 準: 命中紅心 (Low bias)
? 確: 子彈之間距離不會相差太遠
35
目標是求得最低的總誤差
36
當 Overfitting 時,有高的Variance
什麼叫 Overfitting ?
37
Overfitting 原因?
1. 數據集有噪音
2. 採用複雜的演算法
3. Early Stopping
4. 訓練資料太少
5. 降低特徵維度
6. 使用資料正規化
7. 調整超參數
8. 換一個簡單一點的演算法
什麼叫 Underfitting ?
? 模型太過簡單 (不複雜)
? 增加迭代次數
? 調整超參數(Hyperparameter) (修改模型架構)
? 超參數的範例包含神經網路中的節點和層數量以及決策樹中的分支數量。超參數會
決定模型架構、學習率和模型複雜性等主要功能
? 更多的特徵來訓練模型
? 更換一個更複雜的模型
38
常見模型評估方式 (監督式學習)
? 混淆矩陣
39
常見模型評估方式 (監督式學習)
40
Ture Positive Rate (TPR)
False Positive Rate (FPR)
實作
? DecisionTreeClassifier
? https://scikit-
learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
41
tree.ipynb
42
1. 一共有 3 個 classes,分別是: Setosa、 Virginica、Versicolor (三個顏色)
2. 節點由 node #0 開始至 node#8,生成方式以先深後廣 (DFS)
3. 特徵重要性排序為 petal.length,接下來為 petal.width、sepal.width
4. 請注意每一個node內容的 samples數量
5. 某種程度來說,分裂到 node #5 即可
產生 SQL 語法
共五個葉子節點,表示有五段 SQL Case When
Select case
when petal.length <=2.35 then 0
when petal.length >2.35 and petal.length <=5.05 and petal.width <=1.75 then 1
when petal.length >2.35 and petal.length <=5.05 and petal.width >1.75 and sepal.width <=3.1 then 2
when petal.length >2.35 and petal.length <=5.05 and petal.width >1.75 and sepal.width >3.1 then 1
when petal.length >2.35 and petal.length > 5.05 then 2
以 petal.length為例,數據分箱的效果如下:
1.0 2.35 5.05 6.9
1 2 3 用途?
作業
(使用慢性腎臟病檔案,建立預測模型)
? 檔案kidney_disease.csv
? 應變數欄位: classification
? 需要 encoding
? 自變數欄位: 非應變數欄位與id
? 有些欄位需要拿掉
? 處理遺缺值欄位
? 處理欄位值變換(轉為數值)
43
Ad

Recommended

2冲学院硕士班冲分类模型冲20220523.辫诲蹿
2冲学院硕士班冲分类模型冲20220523.辫诲蹿
FEG
?
Supervised learning in decision tree algorithm
Supervised learning in decision tree algorithm
FEG
?
Decision tree
Decision tree
FEG
?
3_Decision_tree.pdf
3_Decision_tree.pdf
FEG
?
机器学习与资料探勘:决策树
机器学习与资料探勘:决策树
Xavier Yin
?
預測性分析:分類 - 2020 - blog.pptx
預測性分析:分類 - 2020 - blog.pptx
Yung-Ting Chen
?
計算型智慧論文報告 Building optimal regression tree ...
計算型智慧論文報告 Building optimal regression tree ...
Shiang-Yun Yang
?
3. classification and regression
3. classification and regression
Yung-Ting Chen
?
Unsupervised learning in data clustering
Unsupervised learning in data clustering
FEG
?
CNN_Image Classification for deep learning.pdf
CNN_Image Classification for deep learning.pdf
FEG
?
Sequence Model with practicing hands on coding.pdf
Sequence Model with practicing hands on coding.pdf
FEG
?
Seq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
?
AIGEN introduction with practicing hands on coding.pdf
AIGEN introduction with practicing hands on coding.pdf
FEG
?
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
FEG
?
Operation_research_Linear_programming_20241015.pdf
Operation_research_Linear_programming_20241015.pdf
FEG
?
Operation_research_Linear_programming_20241112.pdf
Operation_research_Linear_programming_20241112.pdf
FEG
?
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
FEG
?
Sequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdf
FEG
?
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
FEG
?
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
FEG
?
Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318
FEG
?
2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch
FEG
?
2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch
FEG
?
2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch
FEG
?
2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules
FEG
?
202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)
FEG
?
202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization
FEG
?
Transfer Learning (20230516)
Transfer Learning (20230516)
FEG
?

More Related Content

More from FEG (20)

Unsupervised learning in data clustering
Unsupervised learning in data clustering
FEG
?
CNN_Image Classification for deep learning.pdf
CNN_Image Classification for deep learning.pdf
FEG
?
Sequence Model with practicing hands on coding.pdf
Sequence Model with practicing hands on coding.pdf
FEG
?
Seq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
?
AIGEN introduction with practicing hands on coding.pdf
AIGEN introduction with practicing hands on coding.pdf
FEG
?
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
FEG
?
Operation_research_Linear_programming_20241015.pdf
Operation_research_Linear_programming_20241015.pdf
FEG
?
Operation_research_Linear_programming_20241112.pdf
Operation_research_Linear_programming_20241112.pdf
FEG
?
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
FEG
?
Sequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdf
FEG
?
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
FEG
?
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
FEG
?
Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318
FEG
?
2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch
FEG
?
2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch
FEG
?
2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch
FEG
?
2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules
FEG
?
202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)
FEG
?
202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization
FEG
?
Transfer Learning (20230516)
Transfer Learning (20230516)
FEG
?
Unsupervised learning in data clustering
Unsupervised learning in data clustering
FEG
?
CNN_Image Classification for deep learning.pdf
CNN_Image Classification for deep learning.pdf
FEG
?
Sequence Model with practicing hands on coding.pdf
Sequence Model with practicing hands on coding.pdf
FEG
?
Seq2seq Model introduction with practicing hands on coding.pdf
Seq2seq Model introduction with practicing hands on coding.pdf
FEG
?
AIGEN introduction with practicing hands on coding.pdf
AIGEN introduction with practicing hands on coding.pdf
FEG
?
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
资料视觉化冲贰虫辫濒辞补迟颈辞苍冲顿补迟补冲础苍补濒测蝉颈蝉冲20241015.辫诲蹿
FEG
?
Operation_research_Linear_programming_20241015.pdf
Operation_research_Linear_programming_20241015.pdf
FEG
?
Operation_research_Linear_programming_20241112.pdf
Operation_research_Linear_programming_20241112.pdf
FEG
?
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
非监督是学习冲碍尘别补苍蝉冲辫谤辞肠别蝉蝉冲惫颈蝉耻补濒颈锄补迟颈辞苍20241110.辫诲蹿
FEG
?
Sequence Model pytorch at colab with gpu.pdf
Sequence Model pytorch at colab with gpu.pdf
FEG
?
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
学院硕士班冲非监督式学习冲使用翱谤补苍驳别3直接使用冲分群冲20240417.辫诲蹿
FEG
?
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
资料视觉化冲透过翱谤补苍驳别3进行冲无须写程式直接使用冲硕士学程冲202403.辫诲蹿
FEG
?
Pytorch cnn netowork introduction 20240318
Pytorch cnn netowork introduction 20240318
FEG
?
2023 Clustering analysis using Python from scratch
2023 Clustering analysis using Python from scratch
FEG
?
2023 Data visualization using Python from scratch
2023 Data visualization using Python from scratch
FEG
?
2023 Supervised Learning for Orange3 from scratch
2023 Supervised Learning for Orange3 from scratch
FEG
?
2023 Supervised_Learning_Association_Rules
2023 Supervised_Learning_Association_Rules
FEG
?
202312 Exploration Data Analysis Visualization (English version)
202312 Exploration Data Analysis Visualization (English version)
FEG
?
202312 Exploration of Data Analysis Visualization
202312 Exploration of Data Analysis Visualization
FEG
?
Transfer Learning (20230516)
Transfer Learning (20230516)
FEG
?

2023 Decision Tree analysis in business practices