如何评价模型的好坏-转载
前言
“所有模型都是坏的,但有些模型是有用的”。我们建立模型之后,接下来就要去评估模型,确定这个模型是否‘有用’。当你费尽全力去建立完模型后,你会发现仅仅就是一些单个的数值或单个的曲线去告诉你你的模型到底是否能够派上用场。
在实际情况中,我们会用不同的度量去评估我们的模型,而度量的选择,完全取决于模型的类型和模型以后要做的事。下面我们就会学习到一些用于评价模型的常用度量和图表以及它们各自的使用场景。
内容安排
1.预测模型的类型;
2.分类模型评价度量;
2.1.混淆矩阵(Confusion Matrix)
2.2.ROC曲线
2.3.AUC(ROC曲线下面积)
2.4.Lift(提升)和Gain(增益)
2.5.K-S图
2.6.基尼系数
具体内容
1.预测模型的类型
当说到预测模型时,我们会想到有回归模型和分类模型。用于评价这两种模型的度量是不相同的。我们首先要说的是分类问题。
在分类问题中,我们用两种算法:分类输出型:算法像支持向量机和KNN那样,输出的是分类型数据。例如一个二分类问题,它的输出不是0就是1。概率输出型:这个有逻辑回归、随机森林、梯度提升、Adaboost等算法,都是以概率作为输出的。要想把概率型输出变为分类型输出,只要为其设立一个阈值即可。
2.分类模型评价度量
2.1.混淆矩阵(Confusion Matrix)
判定方法:根据不同的模型选不同的参数。
原理:混淆矩阵是一个N X N矩阵,N为分类的个数。假如我们面对的是一个二分类问题,也就是N=2,我们就得到一个2 X 2矩阵。在学习这个矩阵之前,我们需要知道一些简单的定义。(个人不喜欢这部分的中文翻译,一直是保留英文)
Accuracy(准确度):预测正确的数占所有数的比例。
Positive Predictive Value(阳性预测值) or Precision(精度):阳性预测值被预测正确的比例。
Negative Predictive Value(阴性预测值):阴性预测值被预测正确的比例。
Sensity(灵敏度) or recall(召回率):在阳性值中实际被预测正确所占的比例。
Specificity(特异度):在阴性值中实现被预测正确所占的比例。
2.2.ROC曲线
判定方法:ROC曲线应尽量偏离参考线。
原理:ROC全称为Receiver Operation Characteristic Curve,中文名叫做‘接受者操作特征曲线’,中文名简直就是直翻。ROC曲线其实就是从混淆矩阵衍生出来的图形,其横坐标为1-Specificity,纵坐标为Sensitivity。
简单的说,如果我们不用模型,直接随机把客户分类,我们得到的曲线就是那条参照线,然而我们使用了模型进行预测,就应该比随机的要好,所以ROC曲线要尽量远离参照线,越远,我们的模型预测效果越好。
2.3.AUC(ROC曲线下面积)
判定方法:AUC应该大于0.5.
原理:ROC曲线是根据与那条参照线进行比较来判断模型的好坏,但这只是一种直觉上的定性分析,如果我们需要精确一些,就要用到AUC,也就是ROC曲线下面积。
看上图,参考线的面积是0.5,ROC曲线与它偏离越大,ROC曲线就越往左上方靠拢,它下面的面积(AUC)也就越大,这里面积是0.869。我们可以根据AUC的值与0.5相比,来评估一个分类模型的预测效果。
2.4.Lift(提升)和Gain(增益)
判定方法:lift应一直大于1.
原理:Lift=(d/b+d)/(c+d/a+b+c+d).它衡量的是,与不用模型相比,模型的预测能力提升了多少。不利用模型,我们只能利用正例的比例‘c+d/a+b+c+d’这个样本信息来估计正例的比例(baseline model),而利用模型之后,只需要从我们预测为正例的那个样本的子集(b+d)中挑选正例,这时预测的准确率为d/b+d.
由此可见,lift(提升指数)越大,模型的预测效果越好。如果这个模型的预测能力跟baseline model一样,那么这个模型就没有任何意义。
一个好的分类模型,就是要偏离baseline model足够远。在lift图中,表现就是,在depth为1之前,lift一直保持较高的(大于1的)数值,也即曲线足够陡峭。
Gain与Lift相当类似,Gain chart是不同阈值下d/b+d的轨迹,与Lift的区别就在于纵轴刻度的不同。
2.5.K-S图
判定方法:其值在0到100之间,值越大,模型表现越好。
原理:K-S图,英文为Kolmogorov-Smirnov chart,是用来评估分类模型表现的图。更准确的来说,K-S是用来度量阳性与阴性分类区分程度的。若我们把总体严格按照阳性和阴性分成两组,则K-S值为100,如果我们是随机区分阳性与阴性,则K-S值为0.所以分类模型的K-S值都在0到100之间,值越大,模型从阴性数据中区分阳性数据的能力越强。
2.6.基尼系数
判定方法:基尼系数应大于60%,就算好模型。
原理:基尼系数经常用于分类问题,其可以直接从AUC中得到。其公式为:
Gini = 2*AUC - 1
结束语
就在刚才,我问了一下已经工作了的前辈,他跟我说这些度量中一般用到的是混淆矩阵中的精确度,准确度和召回率。知识有这么多,实践中我们该如何选择,这又是另一门学问了。
参考
1.原链接;
2.模型评估;
3.机器学习模型的评价指标和方法(某小皮的博客);
4.拟合优度;
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】