模型評估與視覺化

端到端機器學習

Joshua Stapleton

Machine Learning Engineer

準確率

  • 正確的準確率指標對穩健評估至關重要
  • 很容易被誤解或掩蓋結果

標準準確率:

  • 標準準確率 = 答對數 / 作答數
  • 標準準確率可能不實用

範例:

# 對 99 正類、1 負類的不平衡資料集可達約 99% 準確率
for patient_datapoint in heart_disease_dataset:
    model.prediction(patient_datapoint) = 'positive'
端到端機器學習

混淆矩陣

真陽性(TP)

  • 模型預測 = 實際分類 = 陽性
  • 模型預測有心臟病,患者確實有心臟病

假陽性(FP)

  • 模型預測 = 陽性,實際分類 = 陰性
  • 模型預測有心臟病,患者其實沒有心臟病

假陰性(FN)

  • 模型預測 = 陰性,實際分類 = 陽性
  • 模型預測沒有心臟病,患者其實有心臟病

真陰性(TN)

  • 模型預測 = 實際分類 = 陰性
  • 模型預測沒有心臟病,患者確實沒有心臟病
端到端機器學習

平衡準確率

  • 對多數二元分類模型,比單純準確率更好的指標
  • 提供跨兩類的加權平均
  • 平衡準確率 = (TP + TN) / 2
from sklearn.metrics import balanced_accuracy_score

# Assume y_test is the true labels and y_pred are the predicted labels
y_pred = model.predict(X_test)
bal_accuracy = balanced_accuracy_score(y_test, y_pred)
print(f"Balanced Accuracy: {bal_accuracy:.2f}")
Balanced Accuracy: 0.85
端到端機器學習

混淆矩陣的使用

混淆矩陣

端到端機器學習

交叉驗證

交叉驗證

  • 重抽樣流程
  • 確保結果穩健

 

k 折交叉驗證

  • 參數「k」=資料集切分數
  • 每次建模皆重抽新的訓練/測試切分

交叉驗證示意圖

端到端機器學習

交叉驗證用法

  • 使用 sklearn 實作 k 折交叉驗證相當直觀
  • 與模型無關的評分

用法:

from sklearn.model_selection import cross_val_score, KFold

# split the data into 10 equal parts
kfold = KFold(n_splits=5, shuffle=True, random_state=42)

# get the cross validation accuracy for a given model cv_results = cross_val_score(model, heart_disease_X, heart_disease_y, cv=kfold, scoring='balanced_accuracy')
端到端機器學習

超參數調校

超參數:

  • 全域模型參數(訓練過程不改變)
  • 透過調整以提升模型效能
# Hyperparameters to test
C_values = [0.001, 0.01, 0.1, 1, 10, 100, 1000]

# Manually iterate over the hyperparameters
for C in C_values:
    model = LogisticRegression(max_iter=200, C=C)
    model.fit(X_train, y_train)
    accuracy = cross_val_score(model, X, y, cv=kfold, scoring='balanced_accuracy')
    print(f"C = {C}: Bal Acc: {accuracy.mean():.4f} (+/- {accuracy.std():.4f})")
端到端機器學習

超參數調校範例

超參數調校的輸出範例:

 

C = 0.001: Bal Acc: 0.6200 (+/- 0.0215)
C = 0.01: Bal Acc: 0.7325 (+/- 0.0234)
C = 0.1: Bal Acc: 0.7923 (+/- 0.0202)
C = 1: Bal Acc: 0.8050 (+/- 0.0191)
C = 10: Bal Acc: 0.8034 (+/- 0.0185)
C = 100: Bal Acc: 0.8021 (+/- 0.0187)
C = 1000: Bal Acc: 0.8017 (+/- 0.0188)
端到端機器學習

一起來練習吧!

端到端機器學習

Preparing Video For Download...