对学习器的泛化能力的评估需要一套标准,也就是性能量度(performance measure)。使用不同的性能量度往往会导致不同的评判结果,所以模型的好坏是相对的。所以什么样的模型是好的不仅取决于算法和数据,还取决于任务需求。不要以为的掉进更复杂更难的模型就一定更好的陷阱。
回到模型评估
1、正确率、错误率、 查准率、查全率
分类任务中,我们需要预测的是离散值,主要用到的几种数据:
True Positives(TP):实际为正例且被分类器分为正例的个数
False Positives(FP):实际为负例且被分类器分为正例的个数
False Negatives(FN):实际为正例且被分类器分为负例的个数
True Negatives(TN):实际为负例且被分类器分为负例的个数
TP + FN = P:实际的正例个数
FP + TN = N:实际的负例个数
正确率(accuracy):
- accuracy = (TP + TN)/(P + N)
看上去有点绕,其实非常简单就是:分类正确的个数 / 总的样本数
错误率(error rate):
- error_rate = (FP + FN)/(P + N) = 1 - accuracy
分类错误的个数除以总的样本数
查准率/精度(precision):
- precision = TP/(TP + FP)
正确分为正例的个数除以正确分为正例和错误分为正例的个数之和
预测出正例的有多少正确的
查全率/召回率(recall):
- recall = TP/(TP + FN) = TP/P
正确分为正例的个数除以正例的总数,也称之为灵敏度(sensitive)
预测正确的正例占总正例的比例
一般情况下,在一定正确率前提下,要求分类器的召回率尽量高。
2、P-R曲线
P-R曲线就是:查准率(precision)/ 查全率(recall)的曲线
3、F1
4、ROC与AUC
对于模型的评估一般都是设定一个阈值,大于阈值的为正样本,小于的为负样本。通常在模型训练出来的值若是按概率进行排序的话([0,1]之间),我们通常会选择0.5作为最初的阈值,其他的与之进行比较。
分类过程就是在一个排序中找到一个“截断点”(cut point)将样本一分为二。
根据不同的任务我们会采取不同的策略。像是如果我们的任务更重视“查准率”,那么我们的阈值(threshold)就需要选择较为靠前的位置。若是一个非常重视“查全率”的任务,像是对于传染疾病的筛查,我们就需要将阈值放在比较靠后一点的位置上。
ROC
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
AUC到底是什么呢:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。
为什么使用ROC曲线
不用担心这些自己要怎么算,怎么找出最好的阈值。R/Python中都有套件,可以帮我们计算不同阈值的得分,然后标出最高分的阈值的值。
到此这篇argparse模块详解(argparse模块用法)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/19338.html