跳至主要内容

理解 R 中的混淆矩阵

本教程选取自 DataCamp 的《机器学习工具箱》课程,带您在 R 中练习混淆矩阵。
· 3分钟 阅读

使用 AI 探索

如果您想学习我们的《机器学习工具箱》课程,请访问此链接。

计算混淆矩阵

正如您在视频中看到的,混淆矩阵是一个非常有用的工具,用于校准模型输出并检查预测的所有可能结果(真正例、真反例、假正例、假反例)。

在创建混淆矩阵之前,您需要在给定阈值处“截断”预测概率,将概率转换为类别预测。您可以使用 ifelse() 函数轻松完成,例如:

class_prediction <-
  ifelse(probability_prediction > 0.50,
         "positive_class",
         "negative_class"
  )

您可以使用 R 基础中的 table() 函数来创建这样的列联表,但 caret 中的 confusionMatrix() 除了表中的基准比率外,还会返回许多有用的辅助统计量。您可以使用预测结果以及真实结果来计算混淆矩阵(及其相关统计),例如:

confusionMatrix(predicted, actual)

操作说明

  • 将数值预测 p 转换为名为 p_class 的类别预测向量,使用 0.50 作为预测阈值。进行预测时,请确保对正类使用 "M",对负类使用 "R",以与原始数据中的类别保持一致。
  • 使用 p_class、test 集中的实际取值,以及 confusionMatrix() 函数创建一个混淆矩阵。

# If p exceeds threshold of 0.5, M else R: m_or_r


# Convert to factor: p_class


# Create confusion matrix

如果理解了这些内容,就继续进行下一个练习吧!如果还有疑问,请观看下方概览视频。

混淆矩阵概览视频

从概率到混淆矩阵

反过来说,假设您想要非常确定模型能将所有地雷都正确识别为地雷。在这种情况下,您可能会使用 0.10 的预测阈值,而不是 0.90。

您可以像之前一样,使用新的预测类别来构建混淆矩阵:

pred <- ifelse(probability > threshold, "M", "R")

接下来,您可以像上一练习中一样调用 confusionMatrix() 函数:

confusionMatrix(pred, actual)

# If p exceeds threshold of 0.1, M else R: m_or_r


# Convert to factor: p_class


# Create confusion matrix


如果您想从本课程中学到更多内容,请访问此链接。

主题