自定义 trainControl
正如视频中所示,ROC 曲线下面积(AUC)是评估模型区分正负类别(例如将地雷与岩石区分开来)能力的一个非常有用的单一指标。AUC 为 0.5 与随机猜测无异;AUC 为 1.0 表示模型预测完美;AUC 为 0.0 则表示完全反向预测(几乎不会发生)。
与仅在固定阈值下按准确率对模型排名相比,这通常更实用。不同模型可能需要不同的校准步骤(每一步查看混淆矩阵)来找到该模型的最佳分类阈值。
您可以在 caret 中使用 trainControl() 来用 AUC(而非 accuracy)调参与评估模型。twoClassSummary() 这一便捷函数能让您轻松实现这一点。
使用 twoClassSummary() 时,请务必包含参数 classProbs = TRUE,否则模型会报错!(仅有类别预测无法计算 AUC,您还需要类别概率。)
本练习是课程的一部分
在 R 中使用 caret 的机器学习
练习说明
- 将
trainControl对象自定义为使用twoClassSummary而非defaultSummary。 - 使用 10 折交叉验证。
- 记得告知
trainControl()返回类别概率。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create trainControl object: myControl
myControl <- trainControl(
method = "cv",
number = ___,
summaryFunction = defaultSummary,
classProbs = ___, # IMPORTANT!
verboseIter = TRUE
)