机器学习小组第二周:如何评价模型的好坏

决定改掉拖延症,不再等待,能做的东西立马做。

学习目标

1、数据拆分:训练数据集&测试数据集
2、评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线等
3、评价回归结果:MSE、RMSE、MAE、R Squared

学习资料

首先,建议阅读《机器学习的敲门砖:kNN算法(中)》全文。该篇文章以刚刚学习过的kNN算法为例,介绍了数据拆分,即划分训练数据集&测试数据集的方法。还详细讲解了分类准确度accuracy这一知识点。
然后,还需要阅读《评价分类结果(上):混淆矩阵、精准率、召回率》全文,以及《评价分类结果(下):F1 Score、ROC、AUC》,全面了解评价分类结果。
最后,需要阅读《模型之母:线性回归的评价指标》,学习评价回归结果:MSE、RMSE、MAE、R Squared。

西瓜书第二章,介绍了模型评估与选择的相关内容。


20200305
准确度(accuracy)
不一定在所有情况都适用,如对于极端不平衡的分类数据。

混淆矩阵(confusion matrix)

预测值0 预测值1
真实值0 TN FP
真实值1 FN TP

以TN举例,真实值为TRUE,预测为negative,即为0,预测正确,其他三个同理解释。

预测值0 预测值1
真实值0 9978 12
真实值1 2 8

根据上述混淆矩阵我们可以计算出很多数字特征,见下:
精准率(precision)-也叫查准率
p r e c i s i o n = T P T P + F P precision = \frac{TP}{TP+FP}
所谓的精准率是:分母为所有预测为1的个数,分子是其中预测对了的个数,即预测值为1,且预测对了的比例。即精准率为我们关注的那个事件,预测的有多准。
召回率(recall)-也叫查全率
r e c a l l = T P T P + F N recall = \frac{TP}{TP+FN}
所谓召回率是:所有真实值为1的数据中,预测对了的个数。也就是我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。

上述两种指标,在不同的场景有不同的选择。
如果同时需要关注两种指标,那么我们需要使用下面一种指标。

F1 score
F 1 = 2 p r e c i s i o n r e c a l l p r e c i s i o n + r e c a l l F1 = \frac{2*precision*recall}{precision+recall}
一般来说,F1 score要比上两者更直观。

ROC(Receiver Operation Characteristic Cureve)
precision就是所有正例中,有多少被正确地判定为正;
recall是所有负例中,有多少被错误地判定为正。
ROC就是描述这两者的曲线,前者越大越好,后者越小越好。

AUC(Area Under Curve)
AUC就是ROC曲线下面的面积。这个AUC是横轴范围(0,1 ),纵轴是(0,1)所以总面积是小于1的。


上面几个是针对分类问题的指标,下面介绍回归问题的指标。
比较简单,就列一下公式。
均方误差MSE
1 m i = 1 m ( y t e s t i y t e s t i ) 2 \frac{1}{m}\sum_{i=1}^{m}(y^{i}_{test}-y'^{i}_{test})^2
均方根误差RMSE
1 m i = 1 m ( y t e s t i y t e s t i ) 2 \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y^{i}_{test}-y'^{i}_{test})^2}
平均绝对误差MAE
1 m i = 1 m y t e s t i y t e s t i \frac{1}{m}\sum_{i=1}^{m}|y^{i}_{test}-y'^{i}_{test}|
还有R的平方


代码部分的话全放自己的jupyter里面了!

发布了24 篇原创文章 · 获赞 0 · 访问量 316

猜你喜欢

转载自blog.csdn.net/Helslie/article/details/104630190