iT邦幫忙

0

Day 18|模型評估進階篇:ROC 曲線與 AUC 指標深度剖析實戰

  • 分享至 

  • xImage
  •  

第十八天,我們要繼續深化二元分類模型的評估指標。昨天我們認識了混淆矩陣,但混淆矩陣的計算高度依賴一個「預設分類門檻值(通常為 0.5)」。如果今天我們調整判斷門檻,預測的敏感度與特異度就會隨之變動。如何不依賴單一門檻,綜合衡量一個分類模型的整體鑑別能力?答案就是醫學診斷與機器學習中最核心的黃金標準——ROC 曲線 與 AUC。今天我們建立純 Python 腳本 day18_roc_auc_analysis.py,掌握預測機率提取、動態門檻計算與 ROC 曲線視覺化。\

第一部分
新建 day18_roc_auc_analysis.py。首先模擬一組受檢者的生化檢驗特徵(如空腹血糖、糖化血色素)與是否患有糖尿病的標籤(0 為健康,1 為確診),進行資料集切割並擬合邏輯斯迴歸模型:
https://ithelp.ithome.com.tw/upload/images/20261018/20184472BFioDb8ylM.png

第二部分
要計算 ROC 曲線,不能只取得 predict() 的 0 與 1,而是必須透過 predict_proba() 取得預測為正樣本(label=1)的「連續機率值」。接著使用 Scikit-Learn 提供的 roc_curve() 自動計算不同門檻下的假陽性率(FPR, False Positive Rate)與真陽性率(TPR, True Positive Rate),並計算曲線下面積 AUC:
https://ithelp.ithome.com.tw/upload/images/20261018/20184472GmdL2Kv8hD.png

第三部分
將計算出的 FPR 與 TPR 繪製成標準的 ROC 曲線圖,並加入一條對角虛線(AUC = 0.5,代表隨機盲猜的基準線)。曲線越往左上方拱起,代表模型的鑑別能力越強:https://ithelp.ithome.com.tw/upload/images/20261018/201844729umEtv9oPQ.png

第四部分
在終端機輸入 python day18_roc_auc_analysis.py 執行驗證,確認 AUC 數值正確計算且圖表產出。按 Ctrl + S 儲存後推送到 GitHub 進行版本控制:
https://ithelp.ithome.com.tw/upload/images/20261018/20184472dabz0KYkLJ.png

今日心得/遇到的問題
今天深入了解了 ROC 曲線與 AUC 的數學意義。以往只看單一門檻(0.5)算出來的準確率,很容易被類別不平衡(例如 95% 人是健康、只有 5% 人罹病)所欺騙。ROC 曲線以 FPR 為橫軸、TPR 為縱軸,全面掃描所有可能的機率門檻;而 AUC 數值介於 0.5 到 1 之間,越接近 1 就代表模型把「真正患病的人」排在「健康的人」前面的能力越強,在醫療診斷與風險控制等需要權衡靈敏度與特異度的領域中是必不可少的評估指標。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言