R中caret包train函数在多分类任务中的Accuracy指标定义是什么?
caret包多分类任务中Accuracy指标的定义
背景与模型训练
使用R语言的rpart和caret包训练了一个4分类模型(类别为Q1、Q2、Q3、Q4),训练代码如下:
library(rpart) library(caret) classifier = train(x = training_set[, names(training_set) != "Target"], y = training_set$Target, method = 'rpart', parms = list(split = "gini"), tuneLength = 20)
模型训练输出
运行后classifier变量的输出结果:
> classifier CART 7112 samples 89 predictor 4 classes: 'Q1', 'Q2', 'Q3', 'Q4' No pre-processing Resampling: Bootstrapped (25 reps) Summary of sample sizes: 7112, 7112, 7112, 7112, 7112, 7112, ... Resampling results across tuning parameters: cp Accuracy Kappa 0.0002343457 0.9536618 0.9382023 0.0002812148 0.9535851 0.9380999 0.0003749531 0.9535394 0.9380391 0.0004686914 0.9539980 0.9386511 0.0005624297 0.9539678 0.9386110 0.0006561680 0.9543640 0.9391389 0.0007499063 0.9540123 0.9386694 0.0008248969 0.9536724 0.9382163 0.0010311211 0.9536133 0.9381370 0.0011248594 0.9532129 0.9376029 0.0014373203 0.9515384 0.9353684 0.0029058868 0.9470504 0.9293828 0.0042182227 0.9388870 0.9184975 0.0052493438 0.9336715 0.9115402 0.0082489689 0.9247140 0.8995937 0.0133108361 0.9169616 0.8892603 0.0221222347 0.9060093 0.8746638 0.0380577428 0.8739447 0.8319098 0.2065991751 0.8156983 0.7544120 0.3101799775 0.4304355 0.2461903 Accuracy was used to select the optimal model using the largest value. The final value used for the model was cp = 0.000656168.
已知二分类任务中Accuracy定义为:
Accuracy = (TP + TN) / (TP + TN + FP + FN)
其中:
- TP(真阳性):被正确预测为阳性的样本数
- TN(真阴性):被正确预测为阴性的样本数
- FP(假阳性):被错误预测为阳性的阴性样本数
- FN(假阴性):被错误预测为阴性的阳性样本数
问题解答
在caret包的train()函数中,多分类任务的Accuracy定义是所有类别中被正确预测的样本总数与总样本数的比值,公式表示为:
Accuracy = 所有类别正确预测的样本数之和 / 总样本数
具体来说,就是把每个类别中被正确分类的样本数(比如Q1类中被预测为Q1的样本数、Q2类中被预测为Q2的样本数……以此类推)全部相加,得到总的正确预测数,再除以参与预测的总样本量。
这个定义是二分类Accuracy的自然扩展:二分类中的(TP+TN)本质就是两类正确预测数的总和,总样本数是所有样本的数量,和多分类的计算逻辑完全一致。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

