第 9.3 節 R 教學,以 IBM 人力資源資料示範視覺化、隨機森林、交叉驗證與可解釋人工智慧(Explainable Artificial Intelligence, XAI)。
掌握資料清理、75/25 切分、隨機森林、10 折交叉驗證、變數重要性與 LIME 解釋流程。
資料目標為 Attrition(Yes/No)。原書先刪除沒有變異的 Over18、EmployeeCount、StandardHours,再把字串類別轉為 factor,並確認資料無缺失值。
| 原書資訊 | 數值/內容 |
|---|---|
| 未流失 No | 1,233 |
| 流失 Yes | 237 |
| 總樣本 | 1,470 |
| 訓練/測試 | 75%/25% |
| 訓練樣本 | 1,102 |
| 測試樣本 | 368 |
| 交叉驗證 | 10 折 |
R + ggplot2 做視覺化;randomForest 建立分類器;caret 進行 10 折交叉驗證;varImp 計算變數重要性;局部可解釋模型不可知解釋(Local Interpretable Model-Agnostic Explanations, LIME)解釋單一員工預測。
| 結果 | 原書數值 |
|---|---|
| 單次 75/25 切分準確率 | 0.8560 |
| 10 折交叉驗證準確率 | 0.8614 |
| 交叉驗證最佳 mtry | 45 |
| 最重要變數 | MonthlyIncome,其後 Age、DailyRate |
| 案例 569 的主要局部解釋 | OverTime 貢獻最大 |
依 237÷1,470 計算,流失樣本約占 16.1%,顯示類別不平衡。
交叉驗證的準確率略高於單次切分,但兩者差距不大。更重要的是資料高度不平衡;只看整體準確率可能低估少數流失類別的辨識問題。
根據原書的準確率、類別分布與變數重要性,解釋模型表現與類別不平衡風險;區分全域變數重要性與案例 569 的局部 LIME 解釋。
問題: 為什麼 MonthlyIncome 是整體重要變數,不代表每位員工都主要由收入決定?
參考解答: 全域變數重要性描述整體模型;原書案例 569 的局部解釋反而顯示 OverTime 貢獻最大。