📅  最后修改于: 2023-12-03 15:27:01.413000             🧑  作者: Mango
在分类问题中,混淆矩阵是一个重要的评估指标。它可以帮助我们分析模型的分类效果。不过,混淆矩阵会给我们提供大量的信息,这些信息需要通过一些汇总度量来进行整合。本文将介绍在 R 编程语言中如何计算和使用混淆矩阵的汇总度量。
我们首先需要了解混淆矩阵的基本知识。混淆矩阵是一个 $n \times n$ 的矩阵,其中 $n$ 是类别的个数。在二分类问题中,混淆矩阵如下所示:
| | 预测为正例 | 预测为反例 | |------------|:----------:|:----------:| | 实际为正例 | TP | FN | | 实际为反例 | FP | TN |
其中,TP 表示真正类数(True Positive),即实际为正例且被分类器预测为正例的样本数;FN 表示假负类数(False Negative),即实际为正例但被分类器预测为负例的样本数;FP 表示假正类数(False Positive),即实际为负例但被分类器预测为正例的样本数;TN 表示真负类数(True Negative),即实际为负例且被分类器预测为负例的样本数。
在多分类问题中,混淆矩阵变成了一个更大的矩阵,但其原理和二分类问题一样。为了计算模型的性能,我们需要考虑多个指标。以下是常见的混淆矩阵指标:
在 R 中,我们可以使用 confusionMatrix()
函数来计算混淆矩阵和上述指标:
# 加载需要的库
library(caret)
# 生成随机数据
set.seed(123)
actual <- factor(sample(c("yes", "no"), size = 200, replace = TRUE))
predicted <- factor(sample(c("yes", "no"), size = 200, replace = TRUE))
# 计算混淆矩阵和指标
cm <- confusionMatrix(actual, predicted)
cm$table # 混淆矩阵
cm$overall['Accuracy'] # 准确度
cm$byClass['Sensitivity'] # 召回率
cm$byClass['Precision'] # 精确度
cm$byClass['F1'] # F1 分数
输出结果:
Confusion Matrix and Statistics
Reference
Prediction no yes
no 38 33
yes 28 43
Accuracy : 0.58
95% CI : (0.5, 0.66)
No Information Rate : 0.535
P-Value [Acc > NIR] : 0.251
Kappa : 0.155
Mcnemar's Test P-Value : 1.000
Statistics by Class:
Class: no Class: yes
Sensitivity 0.57576 0.56897
Specificity 0.60784 0.60563
Pos Pred Value 0.53521 0.60811
Neg Pred Value 0.64286 0.54762
Precision 0.53521 0.60811
Recall 0.57576 0.56897
F1 0.55405 0.58889
Prevalence 0.46500 0.53500
Detection Rate 0.26750 0.30500
Detection Prevalence 0.50000 0.50167
Balanced Accuracy 0.59180 0.58730
在上述代码中,我们生成了一个随机的二分类问题,并使用 confusionMatrix()
函数计算了混淆矩阵和指标。我们可以看到,函数输出了混淆矩阵和各个指标的值。
在实际应用中,我们可以使用这些指标来评估分类模型的性能。比如,如果我们希望召回率更高,可以使用召回率作为模型选择的依据;如果我们希望精确度更高,可以使用精确度作为模型选择的依据。
总之,混淆矩阵是一个重要的分类问题分析工具,而其汇总度量则可以帮助我们更好地评估模型的性能。在 R 中,我们可以轻松地计算混淆矩阵和各个指标,以便进行分析和决策。