- 二分类问题
- 多分类问题
- 连续变量问题
二、简单二分类问题的延伸
如果只是简单的二分类问题,只需要一个二分类的混淆矩阵即可对模型进行评估。但如果问题发生如下变化:
- 情况1:基于同一组数据集多次训练/测试不同的模型
- 情况2:基于多个数据集测试评估同一个模型
- 情况3:执行多分类任务
此时,会产生多个不同的混淆矩阵,则需要引入两个新的概念“宏”与“微”。
(1)“宏”:
当产生n个混淆矩阵时,分别计算每个混淆矩阵的Precision,recall,F-measure,再计算各自的平均值,即产生:宏查准率 macro-P,宏查全率 macro-R,macro-F。
(2)“微”:
当产生n个混淆矩阵时,先将n个混淆矩阵中的TP,FP,TN,FN对应求平均值。然后按照简单二分类问题中Precision,recall,F1-measure的公式,分别求:微查准率 micro-P,微查全率 micro-R, micro-F。
1 from sklearn.metrics import precision_score 2 y_true = [0, 1, 2, 0, 1, 2] 3 y_pred = [0, 2, 1, 0, 0, 1] 4 p1 = precision_score(y_true, y_pred, average='macro') 5 p2 = precision_score(y_true, y_pred, average='micro') 6 p3 = precision_score(y_true, y_pred, average='weighted') 7 p4 = precision_score(y_true, y_pred, average=None)
参数:average介绍如下:(precision,recall,f1-score同)
三、多分类问题
(1)一般来说,多分类问题也可以拆分成n个二分类问题,即可产生n个混淆矩阵,使用上述“宏”“微”指标进行模型评估。举例子分析:150个样本数据,分成三类,每类50个样本数据,如下表所示(每行表示真实标签,每列表示预测标签)。
类1 | 类2 | 类3 | |
类1 | 43 | 5 | 2 |
类2 | 2 | 45 | 3 |
类3 | 0 | 1 | 49 |
从表格数据中可以看出,对于类1,有43个样本数据预测正确,5个样本被错分为类2,2个样本数据被错为分类3。 同理,对于类2,有45个样本数据预测正确,2个样本数据被错分为类1,3个样本数据被错分为类3。对于类3,有49个样本数据预测正确,1个样本数据被错分为类2。之后,可分别计算每个类别precision,recall,F1-score。
(2)汉明损失(hamming loss):其中|D|表示样本总数,|L|表示标签总数,xi 表示预测标签,yi 表示真实标签,xor表示异或关系,即 预测标签与真实标签的异或关系。从公式上可以看出,汉明损失关注的是被错误分类的标签的个数,所以,汉明损失值越小,模型效果越佳。
1 from sklearn.metrics import hamming_loss 2 y_pred = [1, 2, 3, 4] 3 y_true = [2, 2, 3, 4] 4 hamming_loss(y_true, y_pred) #输出结果为0.25
5
6 hamming_loss(np.array([[0, 1], [1, 1]]), np.zeros((2, 2))) #输出结果为0.75
(3)交并比 IOU(intersection over union):交比并
- 在连续性问题中,IOU表示的面积之比,即预测与真实的交集面积 比上 预测与真实的并集面积。
- 在分类问题中,IOU可近似用如下公式进行计算(参考百度百科)
参考资料:
- 深度学习基础(九)--softmax(多分类与评估指标) : https://testerhome.com/topics/11262
- 多分类的评估指标: https://www.jianshu.com/p/100f3dee345d
- 多分类的评价指标:https://blog.csdn.net/yinyu19950811/article/details/82534505