自訂 trainControl
就像你在影片中看到的,ROC 曲線下面積(AUC)是一個非常實用的單一指標,可以概括模型把正類與負類(例如地雷與岩石)區分開來的能力。AUC 若為 0.5,等同隨機猜測;AUC 為 1.0,代表模型有完美的預測能力;AUC 為 0.0,則是完全反預測(這種情況很少見)。
相較於只在某個固定閾值下用「準確率」來排序模型,AUC 通常更有參考價值。因為不同模型可能需要不同的校準步驟(在每一步檢視混淆矩陣)才能找到該模型的最佳分類閾值。
你可以在 caret 中使用 trainControl(),將調參的效能指標改為 AUC(而不是 accuracy)。twoClassSummary() 這個方便的函式可以讓你輕鬆做到這點。
使用 twoClassSummary() 時,務必加入引數 classProbs = TRUE,否則模型會拋出錯誤!(僅靠類別預測無法計算 AUC,你還需要類別機率。)
本練習屬於課程
使用 R 的 caret 進行 Machine Learning
練習說明
- 將
trainControl物件自訂為使用twoClassSummary,而非defaultSummary。 - 使用 10 折交叉驗證。
- 記得在
trainControl()中要求回傳類別機率。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Create trainControl object: myControl
myControl <- trainControl(
method = "cv",
number = ___,
summaryFunction = defaultSummary,
classProbs = ___, # IMPORTANT!
verboseIter = TRUE
)