首页 > 其他分享 >机器学习策略篇:详解单一数字评估指标(Single number evaluation metric)

机器学习策略篇:详解单一数字评估指标(Single number evaluation metric)

时间:2024-02-27 10:04:01浏览次数:29  
标签:学习策略 指标 metric number 分类器 查全率 算法 评估 查准率

单一数字评估指标

无论是调整超参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段,会发现,如果有一个单实数评估指标,进展会快得多,它可以快速告诉,新尝试的手段比之前的手段好还是差。所以当团队开始进行机器学习项目时,经常推荐他们为问题设置一个单实数评估指标。

来看一个例子,之前听过说过,应用机器学习是一个非常经验性的过程,通常有一个想法,编程序,跑实验,看看效果如何,然后使用这些实验结果来改善的想法,然后继续走这个循环,不断改进的算法。

比如说对于的猫分类器,之前搭建了某个分类器\(A\),通过改变超参数,还有改变训练集等手段,现在训练出来了一个新的分类器B,所以评估的分类器的一个合理方式是观察它的查准率(precision)和查全率(recall)。

查准率和查全率的确切细节对于这个例子来说不太重要。但简而言之,查准率的定义是在的分类器标记为猫的例子中,有多少真的是猫。所以如果分类器\(A\)有95%的查准率,这意味着的分类器说这图有猫的时候,有95%的机会真的是猫。

查全率就是,对于所有真猫的图片,的分类器正确识别出了多少百分比。实际为猫的图片中,有多少被系统识别出来?如果分类器\(A\)查全率是90%,这意味着对于所有的图像,比如说的开发集都是真的猫图,分类器\(A\)准确地分辨出了其中的90%。

所以关于查准率和查全率的定义,不用想太多。事实证明,查准率和查全率之间往往需要折衷,两个指标都要顾及到。希望得到的效果是,当的分类器说某个东西是猫的时候,有很大的机会它真的是一只猫,但对于所有是猫的图片,也希望系统能够将大部分分类为猫,所以用查准率和查全率来评估分类器是比较合理的。

但使用查准率和查全率作为评估指标的时候,有个问题,如果分类器\(A\)在查全率上表现更好,分类器\(B\)在查准率上表现更好,就无法判断哪个分类器更好。如果尝试了很多不同想法,很多不同的超参数,希望能够快速试验不仅仅是两个分类器,也许是十几个分类器,快速选出“最好的”那个,这样可以从那里出发再迭代。如果有两个评估指标,就很难去快速地二中选一或者十中选一,所以并不推荐使用两个评估指标,查准率和查全率来选择一个分类器。只需要找到一个新的评估指标,能够结合查准率和查全率。

在机器学习文献中,结合查准率和查全率的标准方法是所谓的\(F_1\)分数,\(F_1\)分数的细节并不重要。但非正式的,可以认为这是查准率\(P\)和查全率\(R\)的平均值。正式来看,\(F_1\)分数的定义是这个公式:\(\frac{2}{\frac{1}{P} + \frac{1}{R}}\)

在数学中,这个函数叫做查准率\(P\)和查全率\(R\)的调和平均数。但非正式来说,可以将它看成是某种查准率和查全率的平均值,只不过算的不是直接的算术平均,而是用这个公式定义的调和平均。这个指标在权衡查准率和查全率时有一些优势。

但在这个例子中,可以马上看出,分类器\(A\)的\(F_1\)分数更高。假设\(F_1\)分数是结合查准率和查全率的合理方式,可以快速选出分类器\(A\),淘汰分类器\(B\)。

发现很多机器学习团队就是这样,有一个定义明确的开发集用来测量查准率和查全率,再加上这样一个单一数值评估指标,有时叫单实数评估指标,能让快速判断分类器\(A\)或者分类器\(B\)更好。所以有这样一个开发集,加上单实数评估指标,迭代速度肯定会很快,它可以加速改进您的机器学习算法的迭代过程。

来看另一个例子,假设在开发一个猫应用来服务四个地理大区的爱猫人士,美国、中国、印度还有世界其他地区。假设的两个分类器在来自四个地理大区的数据中得到了不同的错误率,比如算法\(A\)在美国用户上传的图片中达到了3%错误率,等等。

所以跟踪一下,的分类器在不同市场和地理大区中的表现应该是有用的,但是通过跟踪四个数字,很难扫一眼这些数值就快速判断算法\(A\)或算法\(B\)哪个更好。如果测试很多不同的分类器,那么看着那么多数字,然后快速选一个最优是很难的。所以在这个例子中,建议,除了跟踪分类器在四个不同的地理大区的表现,也要算算平均值。假设平均表现是一个合理的单实数评估指标,通过计算平均值,就可以快速判断。

看起来算法\(C\)的平均错误率最低,然后可以继续用那个算法。必须选择一个算法,然后不断迭代,所以的机器学习的工作流程往往是有一个想法,尝试实现它,看看这个想法好不好。

标签:学习策略,指标,metric,number,分类器,查全率,算法,评估,查准率
From: https://www.cnblogs.com/oten/p/18036244

相关文章

  • 机器学习策略篇:详解正交化(Orthogonalization)
    正交化这是一张老式电视图片,有很多旋钮可以用来调整图像的各种性质,所以对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个旋钮用来调整图像左右偏移,还有一个旋钮用来调图像旋转角度之类的。电视设计......
  • SciTech-Mathmatics-Trigonometric Identities you must remember: 需要记住的三角函
    TrigonometricIdentities(Revision:1.4)TrigonometricIdentitiesyoumustrememberThe“bigthree”trigonometricidentitiesare\(\large\begin{equation}\sin^{2}t+cos^{2}t=1\tag{1}\end{equation}\)\(\large\begin{equation}\sin(......
  • SciTech-Mathmatics-automatic equation Numbering / \tag{E} / \label{E} / \ref{
    https://discourse.devontechnologies.com/t/numbering-and-tagging-equations-in-mathjax/69524/2IwentaroundincirclestryingtofigureouthowtonumberandtagequationsinMathJaxinDT3.TheMathJaxDocsshowshowtodoautomaticequationnumbering21......
  • Number【数字】
    定义:数字类型是顾名思义是用来存储数值的,需要记住的是,如果改变了数字数据类型的值,将重新分配内存空间。Python支持三种不同的数值类型:整型(int)-通常被称为是整型或整数,是正或负整数,不带小数点。Python3整型是没有限制大小的,可以当作Long类型使用,所以Python3没有Long......
  • [Rust] Create an array of numbers by using Range
    fnmain(){leta=0..100;ifa.len()>=100{println!("Wow,that'sabigarray!");}else{println!("Meh,Ieatarrayslikethatforbreakfast.");panic!("Arraynotbigenough,more......
  • A smart way to invert a number
    /*Thisismyhomeworktodaytojudgeanumberwhetherit'sapalindrome//Mostofususearraytosolvetheproblem,butIfindawaydonotneedanarray.*/include<stdio.h>intmain(intargc,constchar*argv[]){intx,m,n=0;printf(&quo......
  • 机器学习策略篇:详解为什么是ML策略?(Why ML Strategy?)
    为什么是ML策略?从一个启发性的例子开始讲,假设正在调试的猫分类器,经过一段时间的调整,系统达到了90%准确率,但对的应用程序来说还不够好。可能有很多想法去改善的系统,比如,可能想去收集更多的训练数据吧。或者会说,可能的训练集的多样性还不够,应该收集更多不同姿势的猫咪图片,或者更......
  • isNaN()和Number.NaN()
    都是判断一个值是不是NaN。isNaN()会尝试执行Number()将值转成数值,然后对转换后的结果是否是NaN进行判断。isNaN(true)//false因为Number(true)值为1,而1不是NaN,所以返回falseisNaN(undefined);//true因为Number(undefined)值为NaN,所以返回trueisNaN({});......
  • vue中花括号表达式,string类型除以number类型返回NaN值
    bug:数据为0时,el-progress的color还是有颜色,应该是没有颜色的第一步解决:设置动态color<el-progress:show-text="false":percentage="(oilCarOccupationNum/totalNum)*100":color="oilCarOccupationNum?'......
  • (ColumnTypes[number] & { editable?: boolean; dataIndex: string; })[]
    (ColumnTypes[number]&{editable?:boolean;dataIndex:string;})[]在TypeScript中,这段类型定义可以分解理解:ColumnTypes[number]:首先,如果ColumnTypes是一个数组类型(如Column[]),那么ColumnTypes[number]就是获取数组中的元素类型。在TypeScript中,number表示数组......