master_supervisd_learning_by_logsticregression_and_decision_tree_20251201.pdf

orozcohsu 7 views 41 slides Oct 26, 2025
Slide 1
Slide 1 of 41
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
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41

About This Presentation

dealing with imbalanced data by optimized parameters to tree and logistic model


Slide Content

國立臺北護理健康大學 NTUNHS
Decision Tree
Orozco Hsu
2025-12-01
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
演算法介紹
作業
介紹監督式學 習
模型評估

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

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

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

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

•資料輸入
•輸入為 (X, y),其中 y 是已知標籤 (類別或連續數值 )
•建模
•建立【專門為解決問題 】的函數 ??????:�→�,以最小化損失函數 (交叉熵、MSE),並
對未見資料有良好 【泛化】能力
•資料切分 (訓練資料集 /測試資料集 ) → 特徵工程 (樹模型不太需要降維、標準化,
除非是重要特徵離群值才需要處理 )→ 模型訓練 → 調參/交叉驗證 → 評估與上線
•資料洩漏、 Overfitting/ Underfitting、資料不平衡、偏差與變異權衡
介紹監督式學習
8

補充: 資料洩漏
•模型在訓練階段使用不該用的資訊,使評估結果看似很準確,但實際
上模型無法泛化到真實世界資料
•透過 age, blood_pressure, cholesterol 預測 diagnosis_result,很合理
•如果使用病例診斷報告、醫師評估結論進行預測,就不合理
9

應用: 標籤預測 v.s. 數值預測
•疾病偵測 (分類)
•根據病患的各項生理特徵來預測該病患是否患有某種疾病
•病患 X 光片進行疾病的判讀
•房價預測 (數值)
•房仲平台、不動產估價系統
•房貸風控系統
10

建模需要的資料切分
11
訓練資料集數量一定要 【大於】測試資料集數量
程式範例採用 train_test_split 方法,訓練資料集為 70%,測試資料集為 30%

監督式學習一定要搭配 : 交叉驗證 (Cross Validation, CV)
•更準確地評估模型效能指標
•將訓練資料切分為 K 份 (稱為 Fold)
•每次用其中 1-Fold 為驗證集,其餘 K-1 Fold 為訓練集
•重複上述動作 K 次
•將 K 次的結果平均起來,作為模型整體效能指標 (例如:
accuracy, precision, recall)
12
程式範例採用 StratifiedKFold是一種特殊的 K-fold 交叉驗證方法,會保留每個資料切分中 【類別的比例 】

樹模型 (決策樹)
13
決策樹就是一顆樹的模型,很多棵樹就是隨機森林 (Random Forest)

何謂決策樹
•屬於非參數式模型 (Non-parametric model)
•不須事先假設資料的 【分佈形式】 (不在乎資料與標籤的關係為線性 /非線性關係 )
•對資料本身沒有太多要處理步驟
•使用【Yes or No 】回答的【IF 條件】進行預測的方法,接近人類思考
•樹的結構
•條件的部分稱為節點 (node),最上面的節點稱為根節點 (root),末節點稱為葉子
節點 (leaf),代表一個類別
14

15

接近人類的思考
•每個特徵值本身定義 IF 條件分類
16
氣溫 < 15 度
氣溫 > 25 度
濕度 < 40%
濕度 > 60%
不舒適
不舒適
不舒適
不舒適 舒適
NoYes
NoYes
NoYes
NoYes
氣溫對於舒適的重要性 > 濕度

這就是模型 : 找到的邊界
•分類問題
17
濕度%
氣溫
60
40
15 25
舒適
不舒適

這就是模型 : 找到的邊界
https://sharkyun.medium.com/decision-tree-%E6%B1%BA%E7%AD%96%E6%A8%B9 -41597818c075
9

•客戶滿意 與客戶不滿意
•計算每一區的機率
•第一區83% (5/6)
•第二區66% (8/12)
•第三區33% (3/10)
•第四區: 25% (1/4)
預測就是計算機率
19

決策樹的圖例有更多統計指標
20
每次的節點分裂,對於預測的結果都朝著正確的方向前進

決策樹也可以用於數值預測
•取得葉子節點所有樣本
•中位數
•眾數
•平均數
21

決策樹模型參數
22
參數名稱 說明 常見選項 預設值
criterion 採取節點分裂的方式 gini, entropy gini
max_depth 限制樹的最大深度,防止
overfitting
從 3~6 嘗試,太深容易 overfitting 無
min_samples_split 設定每一個節點要分裂的樣
本小於此值,並不再分裂
從 4~5 嘗試,較大可以避免 overfitting,會降低模型複雜度 2
min_samples_leaf 設定每個樹葉節點至少要有
多少樣本數
從 2 嘗試,好的設定可平衡樹的結構,提升泛化能力 2
max_features 指定每次節點分裂時,最多
考慮幾個特徵
•auto
•sqrt: 適合分類問題
•log2: 適合較少特徵數
•none: 所有特徵
auto
random_state 確保每次執行結果都相同 養成習慣設定一組數字,如 : 42 無

何謂邏輯斯回歸
•屬於參數式模型 (parametric model)
•事先假設資料與標籤有 【線性關係】 (使用散佈圖觀察 )
•預測事件發生的 【機率】 (例如: 某人有疾病的機率 ),根據機率判斷分類
•機率值 (介於 0 到 1)
•機率大於某個閥值 (通常是 0.5),就判定為 【正例】,否則為【負例】
•不能預測連續數值
•用於【二元分類】問題 (例如: 是否生病、是否違約、是否點擊廣告 )
23

•模型如何擬和資料
邏輯斯回歸公式 :
1.訓練模型,假設學習權重 β,β
0 為-10,β
1 為0.3
2.進行預測,一個 40 歲的人,是否會購買 ?
此人有 88% 的機率會買保險
如果我們設閾值為 0.5,就會預測他會購買
邏輯斯回歸 : 建模與預測
24
年齡(Age) 是否購買保險( Buy)
22 否 (0)
25 否 (0)
47 是 (1)
52 是 (1)
46 是 (1)
邏輯斯回歸之 閥值就是判定結果的條件,調整閥值將直接模型預測結果

建模會發生的事情 : 誤差
•模型建模的誤差來源
•高偏差 (Bias): 模型訓練分數與測試分數都偏低
•模型學不夠, Underfitting
•用線性模型套用非線性問題
•高變異數 (Variance):模型訓練分數高,測試分數明顯偏低
•訓練資料集表現很好,測試很差, Overfitting
•模型太聰明,卻記住了每個資料噪音
25

怎麼處理 Underfitting ?
•模型太過簡單 (學的不夠)
•增加迭代次數
•調整模型參數 (Hyperparameter)
•每個模型建模時候,都需要設定參數,沒有設定的話,自動帶入預設值
•更多的資料特徵
•從決策樹換成隨機森林演算法
26

怎麼處理 Overfitting ?
27
•數據集有【噪音】
•沒做好 Data Sanity Check
•Early Stopping
•迭代次數太高
•訓練資料筆數太少
•降低特徵維度
•進行降維
•交叉驗證
•優化模型參數

補充: 何謂資料噪音
28
資料中不具規律性或誤差性的部分,模型把它當成真實模式去學習
類型 說明 範例
測量誤差 感測器或輸入錯誤 實際體重 70 Kg,但測量為 80 Kg
輸入錯誤 錯字、資料登錄錯誤 Taiwan 被輸入為 China
離群值 罕見,但不代表一般情況 年齡輸入為 150 歲
隨機事件 真實存在但不具規律性 天氣突變導致銷售爆增
標籤錯誤 訓練資料標籤有誤 有病症卻被標註為無病症

建模的目標 : 找尋最低的總誤差 (偏差與變異的權衡 )
29

模型評估方式 : 只有監督式學習才用
•混淆矩陣 (Confusion Matrix),用於分析模型表現
30
Recall
Precision: 模型預測的結果,有多少是正確的
Recall: 有多少真實的類別被預測到

補充: Precision 與 Recall 的抉擇
指標 說明 判定
Precision高,Recall 低 表示模型預測很少誤判,但是所有正例都沒有預測到 FalseNegative高
Recall高,Precision 低 表示所有正例都有抓到,但是模型預測有許多誤判 FalsePositive高
31
當放寬判定門檻 (降低閥值 Threshold) 抓到更多的正例 (提高 Recall) ,同時也會引來更多的誤判 (降低 Precision)
•金融詐騙、疾病偵測 :、安全認證、運動員藥物濫用 :
•適合的條件是 Recall 高,Precision 低的情況,也就是重視 False Positive,不漏掉任何的 【假陽性】
• 大部分的應用案例都是 【重視假陽性 】大於假陰性

模型評估方式 : 模型的準度
32
Ture Positive Rate (TPR)
False Positive Rate (FPR)

SHapleyAdditive exPlanation (SHAP)
•找出特徵對模型預測值的貢獻程度,讓模型更具可解釋性
33
bmi紅色部分在左邊,
表示 bmi高 → 趨向 Y(正例)
bmi低 → 趨向 N(負例)
creatinine、glucose、heart_rate
表示點集中在 0 附近,表示對模型預測沒什麼貢獻

視覺化 Iris 資料集
34
•分類的難易度
•Sentosa 分布獨立
•Versicolor 與 Virginica 有重疊、靠得很近,容易產生誤判
•分佈型態
•Sentosa 透過線性或簡單模型就可以區分
•Versicolor 與 Virginica 分佈呈拉長、交錯,需要非線性模
型進行區分;另外,沿著幾個軸方向重疊,意味某些特徵
差異不大,
tree.ipynb

35


















































Entropy 就是交叉熵

分類問題最怕的事情 : 不平衡的資料集
•模型傾向只預測負例,輕易取得高準確率
•一個 95% 為【沒病】的資料集中,模型什麼都不學,全部都預測為沒病,
準確率也有 95%,【有病】的人完全被漏掉
•accuracy 指標很高,其實模型對 【重要類別 】的表現很差
•假陰性很高,造成嚴重誤判
•直接改用樹模型,會有較好的效果
•非基於機率分佈 ,在區分資料的過程中自動尋找有效的分裂點
36

Data Sanity Check: Y (正例) 與 N (負例) 的比例
37
類別比例 是否為不平衡
50% : 50% 不算不平衡 (理想)
70% : 30% 稍微不平衡
80% : 20% 不平衡
90% : 10% 明顯不平衡
95% : 5% 嚴重不平衡
應用情境 少數類別代表 比例情況
疾病診斷 有病的病人 (Y)5% ~ 10%
詐欺交易偵測 詐欺交易 (Y) <1%
故障偵測 機器故障事件 (Y)1% ~ 5%
客戶流失預測 流失的客戶 (Y)10% ~ 20%

必須做出一些動作 (Data Preprocess)
•重抽樣
•上採樣 (Up-Sampling),提高少數分類資料
•下採樣 (Down-Sampling),降低多數分類資料
•類別權重
•告訴模型少數類別更重要
•閥值參數調整 (調整預測機率值 )
•配合使用情境,調整 Recall 與 Precision 指標進行調整閥值參數
•混合
•常見的混合方式,如 : 上採樣 25% + 類別權重 + 閥值參數調整
38
程式範例採用類別權重 class_weight='balanced'

疾病偵測資料集
•共2000 筆資料,正例 1896筆,負例 104 筆
39

實作疾病偵測模型
40
不處理_直接建模 .ipynb
集成所有步驟比較 .ipynb
找閥值.ipynb
上採樣 + 類別權重 + 閾值調整 + 混淆矩陣與 ROC 視覺化.ipynb
從模型指標發現預測 Y 的效果非常差,但是 Y 是預測的重點 !
無限制的上抽樣的預測 Y 效果非常好,但是模型泛化能力會很差
疾病偵測期望以假陽性的結果,因此,調整閥值犧牲 Precision 提高 Recall

作業: (所有執行過程與圖表都需要做成 PPT 並解釋)
•檔案: kidney_disease.csv
•演算法: 決策樹與 邏輯斯回歸
•應變數欄位 :
•自變數欄位 : 非應變數欄位與 id
•有些欄位需要拿掉
•處理遺缺值欄位
•處理欄位值變換 (轉為數值 )
41
•需要進行 CV
•需要繪製混淆矩陣、 AUC/ ROC
•需要說明 precision、recall
•需要優化模型參數
•需要說明變數重要性 (SHAP)
•不平衡資料集處理 (邏輯斯回歸 )
Chronic Kidney Disease: yes
Anemia: yes