机器学习算法中分类知识总结!分类器阈值样本

本文将介绍机器学习算法中非常重要的知识—分类(classification),即找一个函数判断输入数据所属的类别,可以是二类别问题(是/不是),也可以是多类别问题(在多个类别中判断输入数据具体属于哪一个类别)。与回归问题(regression)相比,分类问题的输出不再是连续值,而是离散值,用来指定其属于哪个类别。分类问题在现实中应用非常广泛,比如垃圾邮件识别,手写数字识别,人脸识别,语音识别等。

一、指定阈值

如果某个逻辑回归模型对某封电子邮件进行预测时返回的概率为0.9995,则表示该模型预测这封邮件非常可能是垃圾邮件。相反,在同一个逻辑回归模型中预测分数为0.0003的另一封电子邮件很可能不是垃圾邮件。可如果某封电子邮件的预测分数为0.6呢?为了将逻辑回归值映射到二元类别,你必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“垃圾邮件”;如果值低于该阈值,则表示“非垃圾邮件”。人们往往会认为分类阈值应始终为0.5,但阈值取决于具体问题,因此你必须对其进行调整。

我们将在后面的部分中详细介绍可用于对分类模型的预测进行评估的指标,以及更改分类阈值对这些预测的影响。

注意:

“调整”逻辑回归的阈值不同于调整学习速率等超参数。在选择阈值时,需要评估你将因犯错而承担多大的后果。例如,将非垃圾邮件误标记为垃圾邮件会非常糟糕。不过,虽然将垃圾邮件误标记为非垃圾邮件会令人不快,但应该不会让你丢掉工作。

二、阳性与阴性以及正类别与负类别

在本部分,我们将定义用于评估分类模型指标的主要组成部分先。不妨,我们从一则寓言故事开始:

伊索寓言:狼来了(精简版)有一位牧童要照看镇上的羊群,但是他开始厌烦这份工作。为了找点乐子,他大喊道:“狼来了!”其实根本一头狼也没有出现。村民们迅速跑来保护羊群,但他们发现这个牧童是在开玩笑后非常生气。(这样的情形重复出现了很多次。)...一天晚上,牧童看到真的有一头狼靠近羊群,他大声喊道:“狼来了!”村民们不想再被他捉弄,都待在家里不出来。这头饥饿的狼对羊群大开杀戒,美美饱餐了一顿。这下子,整个镇子都揭不开锅了。恐慌也随之而来。

我们做出以下定义:

“狼来了”是正类别。

“没有狼”是负类别。

我们可以使用一个2x2的混淆矩阵来总结我们的“狼预测”模型,该矩阵描述了所有可能出现的结果(共四种):

真正例是指模型将正类别样本正确地预测为正类别。同样,真负例是指模型将负类别样本正确地预测为负类别。

假正例是指模型将负类别样本错误地预测为正类别,而假负例是指模型将正类别样本错误地预测为负类别。

在后面的部分中,我们将介绍如何使用从这四种结果中衍生出的指标来评估分类模型。

三、准确率

准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测正确的结果所占的比例。正式点说,准确率的定义如下:

对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:

其中,TP=真正例,TN=真负例,FP=假正例,FN=假负例。让我们来试着计算一下以下模型的准确率,该模型将100个肿瘤分为恶性(正类别)或良性(负类别):

准确率为0.91,即91%(总共100个样本中有91个预测正确)。这表示我们的肿瘤分类器在识别恶性肿瘤方面表现得非常出色,对吧?

实际上,只要我们仔细分析一下正类别和负类别,就可以更好地了解我们模型的效果。

在100个肿瘤样本中,91个为良性(90个TN和1个FP),9个为恶性(1个TP和8个FN)。

在91个良性肿瘤中,该模型将90个正确识别为良性。这很好。不过,在9个恶性肿瘤中,该模型仅将1个正确识别为恶性。这是多么可怕的结果!9个恶性肿瘤中有8个未被诊断出来!

虽然91%的准确率可能乍一看还不错,但如果另一个肿瘤分类器模型总是预测良性,那么这个模型使用我们的样本进行预测也会实现相同的准确率(100个中有91个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

当你使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

在下一部分中,我们将介绍两个能够更好地评估分类不平衡问题的指标:精确率和召回率。

学习理解

在以下哪种情况下,高的准确率值表示机器学习模型表现出色?

一只造价昂贵的机器鸡每天要穿过一条交通繁忙的道路一千次。某个机器学习模型评估交通模式,预测这只鸡何时可以安全穿过街道,准确率为99.99%。

一种致命但可治愈的疾病影响着0.01%的人群。某个机器学习模型使用其症状作为特征,预测这种疾病的准确率为99.99%。

在roulette游戏中,一只球会落在旋转轮上,并且最终落入38个槽的其中一个内。某个机器学习模型可以使用视觉特征(球的旋转方式、球落下时旋转轮所在的位置、球在旋转轮上方的高度)预测球会落入哪个槽中,准确率为4%。

四、精确率和召回率4.1精确率

精确率指标尝试回答以下问题:在被识别为正类别的样本中,确实为正类别的比例是多少?

精确率的定义如下:

注意:如果模型的预测结果中没有假正例,则模型的精确率为1.0。

让我们来计算一下上一部分中用于分析肿瘤的机器学习模型的精确率:

该模型的精确率为0.5,也就是说,该模型在预测恶性肿瘤方面的正确率是50%。

4.2召回率

召回率尝试回答以下问题:在所有正类别样本中,被正确识别为正类别的比例是多少?

从数学上讲,召回率的定义如下:

注意:如果模型的预测结果中没有假负例,则模型的召回率为1.0。

让我们来计算一下肿瘤分类器的召回率:

该模型的召回率是0.11,也就是说,该模型能够正确识别出所有恶性肿瘤的百分比是11%。

4.3精确率和召回率:一场拔河比赛

要全面评估模型的有效性,必须同时检查精确率和召回率。遗憾的是,精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。请观察下图来了解这一概念,该图显示了电子邮件分类模型做出的30项预测。分类阈值右侧的被归类为“垃圾邮件”,左侧的则被归类为“非垃圾邮件”。

图1.将电子邮件归类为垃圾邮件或非垃圾邮件

我们根据图1所示的结果来计算精确率和召回率值:

精确率指的是被标记为垃圾邮件的电子邮件中正确分类的电子邮件所占的百分比,即图1中阈值线右侧的绿点所占的百分比:

召回率指的是实际垃圾邮件中正确分类的电子邮件所占的百分比,即图1中阈值线右侧的绿点所占的百分比:

图2显示了提高分类阈值产生的效果。

图2.提高分类阈值

假正例数量会减少,但假负例数量会相应地增加。结果,精确率有所提高,而召回率则有所降低:

相反,图3显示了降低分类阈值(从图1中的初始位置开始)产生的效果。

图3.降低分类阈值

假正例数量会增加,而假负例数量会减少。结果这一次,精确率有所降低,而召回率则有所提高:

我们已根据精确率和召回率指标制定了各种指标。有关示例,请参阅F1值。

让我们以一种将电子邮件分为“垃圾邮件”或“非垃圾邮件”这两种类别的分类模型为例。如果提高分类阈值,精确率会怎样?

可能会提高。一定会提高。一定会降低。可能会降低。

让我们以一种将电子邮件分为“垃圾邮件”或“非垃圾邮件”这两种类别的分类模型为例。如果提高分类阈值,召回率会怎样?

始终下降或保持不变。始终保持不变。一定会提高。

以两个模型(A和B)为例,这两个模型分别对同一数据集进行评估。以下哪一项陈述属实?

如果模型A的精确率优于模型B,则模型A更好。如果模型A的精确率和召回率均优于模型B,则模型A可能更好。如果模型A的召回率优于模型B,则模型A更好。

五、ROC和AUC5.1ROC曲线

ROC曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果图表。该曲线绘制了以下两个参数:

真正例率假正例率

真正例率(TPR)是召回率的同义词,因此定义如下:

假正例率(FPR)的定义如下:

ROC曲线用于绘制采用不同分类阈值时的TPR与FPR。降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。下图显示了一个典型的ROC曲线。

图4.不同分类阈值下的TP率与FP率

为了计算ROC曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积。

5.2曲线下面积:ROC曲线下面积

曲线下面积表示“ROC曲线下面积”。也就是说,曲线下面积测量的是从(0,0)到(1,1)之间整个ROC曲线以下的整个二维面积(参考积分学)。

图5.曲线下面积(ROC曲线下面积)

曲线下面积对所有可能的分类阈值的效果进行综合衡量。曲线下面积的一种解读方式是看作模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。以下面的样本为例,逻辑回归预测从左到右以升序排列:

图6.预测按逻辑回归分数以升序排列

曲线下面积表示随机正类别(绿色)样本位于随机负类别(红色)样本右侧的概率。

曲线下面积的取值范围为0-1。预测结果100%错误的模型的曲线下面积为0.0;而预测结果100%正确的模型的曲线下面积为1.0。

曲线下面积因以下两个原因而比较实用:

曲线下面积的尺度不变。它测量预测的排名情况,而不是测量其绝对值。曲线下面积的分类阈值不变。它测量模型预测的质量,而不考虑所选的分类阈值。

不过,这两个原因都有各自的局限性,这可能会导致曲线下面积在某些用例中不太实用:

并非总是希望尺度不变。例如,有时我们非常需要被良好校准的概率输出,而曲线下面积无法告诉我们这一结果。并非总是希望分类阈值不变。在假负例与假正例的代价存在较大差异的情况下,尽量减少一种类型的分类错误可能至关重要。例如,在进行垃圾邮件检测时,你可能希望优先考虑尽量减少假正例(即使这会导致假负例大幅增加)。对于此类优化,曲线下面积并非一个实用的指标。学习理解

以下哪条ROC曲线可产生大于0.5的AUC值?

将给定模型的所有预测结果都乘以2.0(例如,如果模型预测的结果为0.4,我们将其乘以2.0得到0.8),会使按AUC衡量的模型效果产生何种变化?

六、预测偏差

逻辑回归预测应当无偏差。即:

预测偏差指的是这两个平均值之间的差值。即:

预测偏差=预测平均值数据集中相应标签的平均值

注意:“预测偏差”与偏差(“wx+b”中的“b”)不是一回事。

如果出现非常高的非零预测偏差,则说明模型某处存在错误,因为这表明模型对正类别标签的出现频率预测有误。

例如,假设我们知道,所有电子邮件中平均有1%的邮件是垃圾邮件。如果我们对某一封给定电子邮件一无所知,则预测它是垃圾邮件的可能性为1%。同样,一个出色的垃圾邮件模型应该预测到电子邮件平均有1%的可能性是垃圾邮件。(换言之,如果我们计算单个电子邮件是垃圾邮件的预测可能性的平均值,则结果应该是1%。)然而,如果该模型预测电子邮件是垃圾邮件的平均可能性为20%,那么我们可以得出结论,该模型出现了预测偏差。

造成预测偏差的可能原因包括:

特征集不完整数据集混乱模型实现流水线中有错误训练样本有偏差正则化过强

你可能会通过对学习模型进行后期处理来纠正预测偏差,即通过添加校准层来调整模型的输出,从而减小预测偏差。例如,如果你的模型存在3%以上的偏差,则可以添加一个校准层,将平均预测偏差降低3%。但是,添加校准层并非良策,具体原因如下:

你修复的是症状,而不是原因。你建立了一个更脆弱的系统,并且必须持续更新。使用校准层来修复模型的所有错误。

如果可能的话,请避免添加校准层。使用校准层的项目往往会对其产生依赖

最终,维护校准层可能会令人苦不堪言。

注意:出色模型的偏差通常接近于零。即便如此,预测偏差低并不能证明你的模型比较出色。特别糟糕的模型的预测偏差也有可能为零。例如,只能预测所有样本平均值的模型是糟糕的模型,尽管其预测偏差为零。

七、分桶偏差和预测偏差

逻辑回归可预测0到1之间的值。不过,所有带标签样本都正好是0(例如,0表示“非垃圾邮件”)或1(例如,1表示“垃圾邮件”)。因此,在检查预测偏差时,你无法仅根据一个样本准确地确定预测偏差;你必须在“一大桶”样本中检查预测偏差。也就是说,只有将足够的样本组合在一起以便能够比较预测值(例如0.392)与观察值(例如0.394),逻辑回归的预测偏差才有意义。

你可以通过以下方式构建桶:

以线性方式分解目标预测。构建分位数。

请查看以下某个特定模型的校准曲线。每个点表示包含1000个值的分桶。两个轴具有以下含义:

x轴表示模型针对该桶预测的平均值。y轴表示该桶的数据集中的实际平均值。

两个轴均采用对数尺度。

图7.预测偏差曲线

为什么只有模型的某些部分所做的预测如此糟糕?以下是几种可能性:

训练集不能充分表示数据空间的某些子集。数据集的某些子集比其他子集更混乱。该模型过于正则化。(不妨减小lamdba的值。)

THE END
1.数据结构与算法基础知识点程序与算法的区别 程序可以不满足有穷性。 线性表(Linear List) 是具有相同数据类型的数据元素的一个有限序列。通常表示为:(a1,a2,… ai,ai+1… an) 线性表的顺序存储是指用一组地址连续的存储单元依次存放线性表的数据元素,这种存储形式的线性表称为顺序表。它的特点是线性表中相邻的元素在内存中的存储位置https://www.jianshu.com/p/730be599b6b7
2.入门必看算法基础知识讲解小白都也能看得懂算法的时间复杂度也称为算法的时间量度,记作T(n) = O(f(n)),它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。 刚开始看上面的定义多少有些迷惑,但是多读几次结合上文的知识串起来后,你会其实并没有这么https://blog.csdn.net/m0_63174618/article/details/138362160
3.算法复习笔记(一)算法基础知识51CTO博客算法基础知识:1.什么是算法 算法是一组有穷的规则,它规定了解决莫一特定类型问题的一系列运算 数据结构+算法=程序 2.算法的五个重要特性: 确定性、可行性、输入、输出、有穷性; 一下对其部分特性做定义; 2.1.确定性: 算法不能有二义性: 例如:不符合确定性的运算 https://blog.51cto.com/ydlin/4570327
4.软件设计师考点七:数据结构与算法基础软件设计师摘要:2019年软件设计师考试已经进入冲刺阶段,希赛网软考频道小编为大家整理了软件设计师知识点,以下为软件设计师知识点七:数据结构与算法基础。 第7章:数据结构与算法基础 【知识点梳理】 知识点1、数组与矩阵(★★) 【考法分析】 1、本知识点的考查形式主要有:给定一些数组或矩阵,计算对应某个元素的存放位置或https://www.educity.cn/rk/1970488.html
5.算法的一般性质知识点算法的一般性质包括: (1) 通用性 对于那些符合输入类型的任意输入数据,都能根据算法进行问题求解,包保证计算结构的正确性。 (2) 有效性 组成算法的每一条指令都必须是能够被人或机器确切执行的。 (3) 确定性 算法每执行一步之后,对于它的下一步,应该有明确的指示。即,保证每一步之后都有关于下一步动作的http://jpk.pku.edu.cn/course/sjjg/chapter1/04/01.html
6.深入理解算法:基础知识原理与架构腾讯云开发者社区在计算机科学中,算法是一种解决特定问题的步骤或规则的集合。它们是编程和数据科学的核心组成部分,用于处理各种复杂的问题。本文将介绍算法的基础知识、原理和架构,并通过案例分析来加深理解。 二、算法基础知识 算法的定义 算法是一系列用于解决问题的步骤或规则的集合。它是一种指导计算机执行特定任务的指令,可以手动执https://cloud.tencent.com/developer/article/2449820
7.C++数据结构与算法的基础知识和经典算法汇总C语言终是到了标志着大二结束的期末考试了,对于《算法设计与分析》这门课,我需要总结一下学过的所有算法的思想以及老师补充的关于两个复杂度和递归的概念思想,以及更深层次的理解,比如用画图的方式表达出来,我觉得可以用博客记录总结一下,分享给大家,希望能有所帮助https://www.jb51.net/article/249531.htm
8.科学网—[转载]Delaunay三角剖分及算法基本知识[转载]Delaunay三角剖分 及算法 基本知识 Delaunay, 三角剖分 摘自百度百科http://baike.baidu.com/view/1691145.html?tp=2_11 http://www.geomodel.net/article/code/20080601/7510.html 1. 三角剖分与Delaunay剖分的定义 如何把一个散点集合剖分成不均匀的三角形网格,这就是散点集的三角剖分问题,散点https://blog.sciencenet.cn/blog-116465-216935.html
9.数据结构与算法图解(最全知识点答案总结)–mikechen数据结构与算法是非常重要的内容,本文全面总结数据结构与算法相关的所有知识点,非常的全面@mikechen 数据结构 数组 数组是一种数据结构,用来存储同一类型的集合。 链表 链表是一种常见的数据结构,是一种线性表,是以节点的方式来存储, 是链式存储,是通过链表中的指针连接次序实现的。 https://youzhixueyuan.com/java-programmers-advanced-data-structures-and-algorithms.html
10.深度学习高手笔记卷1:基础算法●如果你的深度学习基础较为薄弱,那么可以结合本书提供的知识拓扑图和章节先验知识,优先阅读拓扑图中无先验知识的章节,读懂该章节后便可以将这个章节在拓扑图中划掉,然后逐步将拓扑图清空。 ●如果你有一定的深度学习基础,对一些经典的算法(如VGG、残差网络、LSTM、Transformer、Dropout、BN等)都比较熟悉,那么你可以按https://www.epubit.com/bookDetails?id=UB7d8623610d375
11.全知识另一种较少使用的方法是平均情况复杂度(英语:average-case complexity),通常有特别指定才会使用。时间复杂度可以用函数 T(n) 的自然特性加以分类,举例来说,有着 T(n) = O(n) 的算法被称作“线性时间算法”;而 T(n) = O(Mn)和 Mn= O(T(n)) ,其中 M≥ n > 1 的算法被称作“指数时间算法”。http://mp2.allhistory.com/detail/5924158b55b54278ac0026ee
12.构建人机命运共同体《算法社会:技术权力和知识》读后王延川教授、粟鹏飞博士的译著《算法社会:技术、权力和知识》主要由荷兰学者马克·舒伦伯格和里克·彼得斯编撰,共有16名作者参与了写作。 著作从技术、权力和知识三个理论维度解读公共管理、刑事司法和城市治理三个学术领域。著作分为三个部分共十一章。第一章作者对算法、算法权力进行了介绍,同时分析了算法治理弊端以http://www.legalweekly.cn/whlh/2024-01/04/content_8946710.html
13.大疆创新北京研发中心招人啦3、熟悉OPENGL开发,熟悉AR/VR新技术,具备一定的图像处理算法知识; 4、熟悉android和ios移动端平台多媒体框架; 5、积极主动,具备创造力和团队精神。 项目管理工程师 工作职责 1. 负责完善项目群管理控制体系,建立项目规范与项目管理标准,做到项目管理规范一致,汇编和推广IT项目进展及成果; https://maimai.cn/article/detail?fid=275065106&efid=ZZnWu1lqXw6I08k3vXgp5Q
14.河南省基础教育资源公共服务平台这节课的知识简单吗?你还有什么不明白的地方? 教学反思:通过整十数加一位数及相应的减法的学习让学生进一步加深对两位数的认识,熟悉百以内数的组成,同时也为后面学习百以内的口算和笔算加、减法做准备。教材通过看图解决问题列出两道加法算式和两道减法算式,通过练习巩固算法。教学重点是掌握整十数加一位数和相应减法https://www.hner.cn/index.php?r=space/person/blog/view&sid=71b9a25abdd848a0ad72ea0a6ad57138&id=4145173
15.算法入门学习,图解基础知识篇基础知识 数据结构 数组 链表 栈 队列 树 图 复杂度 时间复杂度 空间复杂度 在学习算法的时候经常会听到数据结构和复杂度这些词汇 在学习算法前,了解一些基础概念也是相当必要的 基础知识 数据结构 数据结构是组织和存储数据的方式。在算法中,不同的数据结构对问题的解决方法和效率有着重要的影响。一些常见的数据结https://zhuanlan.zhihu.com/p/635680235
16.第二章算法与程序实现——2.3程序设计基础知识2.3 程序设计基础知识 P55 体验探索 解答: 绘制图2.3.1代码如下 import turtle # 导入 turtle 模块 light = turtle.Turtle() # 创建一个 Turtle 对象 'light' light.hideturtle() # 隐藏海龟指针 light.color("green", "green") # 设置海龟绘图颜色为绿色,填充颜色为绿色 https://www.bilibili.com/read/cv37737449