如何评价模型的好坏(二)

时间:2022-12-08 18:01:43
  • 二分类问题
  • 多分类问题
  • 连续变量问题

二、简单二分类问题的延伸

  如果只是简单的二分类问题,只需要一个二分类的混淆矩阵即可对模型进行评估。但如果问题发生如下变化:

  • 情况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|表示标签总数,x表示预测标签,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可近似用如下公式进行计算(参考百度百科)

          如何评价模型的好坏(二)

 

参考资料: