机器学习【西瓜书/南瓜书】--- 第2章模型评估与选择(上)(学习笔记+公式推导)

简介: 本博客为博主在学习 机器学习【西瓜书 / 南瓜书】过程中的学习笔记,每一章都是对《西瓜书》、《南瓜书》内容的总结和提炼笔记,博客可以作为各位读者的辅助思考,也可以做为读者快读书籍的博文,本博客对西瓜书所涉及公式进行详细的推理以及讲解,本人认为,不推导公式所学得的知识是没有深度的,是很容易忘记的,有些公式推导起来并不复杂,只是被看似复杂的数学表达式所“吓唬”,希望大家拿上纸笔,跟着博主一起学习,一起推导。

前言

本博客为博主在学习 机器学习西瓜书/南瓜书】过程中的学习笔记,每一章都是对《西瓜书》、《南瓜书》内容的总结和提炼笔记,博客可以作为各位读者的辅助思考,也可以做为读者快读书籍的博文,本博客对西瓜书所涉及公式进行详细的推理以及讲解,本人认为,不推导公式所学得的知识是没有深度的,是很容易忘记的,有些公式推导起来并不复杂,只是被看似复杂的数学表达式所“吓唬”,希望大家拿上纸笔,跟着博主一起学习,一起推导。

对于哪一部分的推导不理解的,可以评论出来,博主看到之后会尽快回复!


❗️ 注:本篇文章是第2章,其涵盖内容较为多和杂,读者在读本章节时,做到有所印象即可,其各种判断方法可以结合后续文章中的样例进行更进一步的理解。


本文只是第二章知识总结的一半,另一半见博客:机器学习【西瓜书/南瓜书】— 第2章模型评估与选择(下)(学习笔记+公式推导)


2.1 经验误差与过拟合

image.png

显然,我们希望得到 泛化误差 更小的学习器,即在新样本上能表现的很好的学习器,但是我们能做的只是努力使得 经验误差 最小化。往往一个在训练样本中表现很好的学习器,即分类错误率为 0 ,分类精度为 100 % ,但这种学习器在多数情况下表现的其实 并不好


为了能在新样本中表现很好,我们就需要从训练样本中尽量学出适用于所有潜在样本的 “普遍规律”。然而,当我们把训练样本学得 “太好了” 的时候,很可能把训练样本的一些特点当成了潜在规律,认为这些特点同样符合一般样本的普遍规律,这样就会导致泛化能力下降,这就被称为 过拟合(overfitting),亦称为过配


与过拟合相对应的是 欠拟合(underfitting),指的是对训练样本的一般性质并未学好,亦称为欠配


🌈接下举例子来理解什么是 过拟合 欠拟合

比如我们要学习分辨树叶,给出的训练样本具有的特点为:有锯齿、绿色,那么过拟合的结果就是,给出一片没有锯齿的绿叶,判断结果为:不是树叶(误认为树叶必须有锯齿);而欠拟合则是将草判断为树叶,因为草是绿色的(误认为绿色的就是树叶);通俗来讲,过拟合就是学多了,眼界小了;欠拟合就是学少了,眼界过大了。


欠拟合是比较容易克服的,但是过拟合则很麻烦。过拟合是机器学习面临的关键障碍,并且过拟合是无法彻底避免的。


这里再补充两个定义:

P : :多项式时间问题能在多项式时间内解决,即算起来很快

N P : 非确定多项式时间问题,能在多项式时间验证答案正确与否,即对答案的验证很快


机器学习面临的问题通常是 N P 难甚至更难,因为有效的学习算法必然是在多项式的时间内能够运行完成的,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性地证明了 P = N P ;因此,只要相信 P ≠ N P,过拟合就是不可避免的。


在现实中,我们往往有很多学习算法是可供选择的,甚至对于同一个学习算法,对于不同的参数,会产生中不同的模型,对此,选择哪一种学习算法,使用哪一种的参数配置,这就是所谓的 模型选择(modelselection)。


2.2 评估方法

image.png

2.2.1 留出法(hode−out)

image.png

2.2.2 交叉验证法(crossvalidation)

image.png

image.png

image.png

2.2.3 自助法(bootstrapping)

image.png

2.2.4 调参与最终模型

大多数学习算法都有些 参数(parameter) 需要设定,参数配置不同,所学得的模型的性能往往也会有很大的差异,因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需要对算法参数进行设定,这就是通常所说的 参数调节,或称 调参(parameter tuning)


学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来是不可行的,通常的做法是对每个参数选定一个变化范围和变化步长,显然,这样选定的参数值往往不是最佳值,但这是在计算开销和性能估计之间折中的结果,事实上,即便在进行这样的折中处理后,调参也很困难。参数调得好不好往往对最终模型性能有关键性影响。


在模型选择完成后,学习算法和参数配置都已选定,此时应该用数据集 D重新训练模型,这个模型在训练过程中是用来所有 m 个样本,这才是我们最终提交给用户的模型。


我们通常把学得模型在实际使用中遇到的数据称为 验证集(validationset),我们用测试集上的判别结果来估计模型在实际使用时的泛化能力,把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。


2.3 性能度量

衡量模型泛化能⼒的评价指标,这就是 性能度量(performance measure),性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这就意味着,魔性的“好坏”是相对的,一个好的模型,不仅取决于算法和数据,还决定于任务需求。


image.png

2.3.1 错误率与精度

image.png

2.3.2 查准率、查全率与F1

虽然错误率与精度是常用的,但是并不能满足所有任务需求,🌈拿西瓜来举例,假定瓜农拉来了一车西瓜,我们用训练好的模型对西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误,但是若我们关心的是“挑出来的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例是被挑出来的”,那么显然错误率就不够用了,这时就需要其他的性能度量


🌈类似的需求在信息检索,web   搜索等应用中也十分常见,在这些问题中,我们通常会关心:“检索出来的信息有多少比例是用户所感兴趣的”,“用户感兴趣的信息中有多少是被检索出来了”,查准率(precision)查全率(recall) 是更适用此类需求的性能度量。查准率亦被称为准确率,查全率亦被称为召回率。


image.png

查准率和查全率是一对矛盾的量,一般来说,查准率很高的时候,查全率往往偏低;而查全率很高的时候,查准率往往偏低。🌈例如,若希望所有的好瓜都尽可能的被选择出来,则可以通过增加选瓜的数量来实现,如果将所有的西瓜都选上,那么所有的好瓜必然都被选上了,但这样与之对应的就是查准率会降低;若希望选出的瓜中好瓜的比例尽可能高,则可只挑选有把握的瓜,但这样就难免会漏掉一些好瓜,使得查全率很低。


通常只有在一些简单的任务中,才可能使查全率和查准率都很高。


在很多情况下,我们可以根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的则是学习器认为“最不可能”是正例的样本,按照这个顺序把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称为 P − R 曲线,显示该曲线的图称为 P − R图:

image.png

P−R图直观地显示出学习器在样本总体上的查全率、查准率。在进行比较时,若一个学习器的 P − R曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者,如上图中的 A  优于 C ,如果两个学习器的 P − R 曲线发生了交叉,如上图的 A和 B ,则难以一般性地断言两者的优劣,只能在具体的查准率或查全率条件下进行比较。然而在很多情况下,人们往往希望去比较出个高低,这时一个比较合理的判据就是比较 P − R  曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得“双高”的比例。但这个值不容易估算,因此,人们设计了一些总和考虑查准率、查全率的性能度量:

image.png

image.png

2.3.3 ROC 与 AUC

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个 分类阈值(threshold) 进行比较,若大于阈值则分为正类,否则为反类。这个实值或概率预测结果的好坏,直接决定了学习器的泛化能力。实际上,根据这个实值或概率预测结果,我们可将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。这样分类过程就相当于在这个排序中以某个 截断点(cutpoint) 将样本分成两部分,前一部分判作正例,后一部分则判为反例。


不同的任务我们可以设置不同的截断点,如果我们更重视查准率,则可选择排序中靠前的位置进行截断;若更重视查全率,则可以选择靠后的位置进行截断。因此:排序本身的质量好坏,体现了总和考虑学习器在不同任务下的“期待泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏,R O C曲线则是从这个角度出发来研究学习器泛化性能的有力工具。


image.png

image.png

image.png

推导过程:

我们先来再次解释一下 R O C曲线的具体绘制过程,下面举例说明:

image.png

image.png

image.png

证毕!

image.png

推导过程:

image.png

image.png

证毕!


2.3.4 代价敏感错误率与代价曲线

🌈错误也是分类型的,错误地把患者诊断为健康人可能丧失了拯救生命的最佳时机,把正常人诊断为患者则仅是增加了进一步检查的麻烦。

为权衡不同类型错误所造成的的不同损失,可为错误赋予 非均等代价(unequal cost)


image.png

image.png

image.png




目录
相关文章
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
Java Maven
Maven常用镜像配置
Maven常用镜像配置
1641 0
|
机器学习/深度学习 算法 数据可视化
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
JAMA | 机器学习中的可解释性:SHAP分析图像复刻与解读
2639 1
|
运维 Linux
CentOS操作系统常见的故障处理
本文分享了CentOS操作系统网卡启动失败的故障处理方法,包括使用命令查看日志和禁用NetworkManager服务。
359 4
CentOS操作系统常见的故障处理
|
存储 人工智能 运维
轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践
本文从轻喜到家的历史技术架构与痛点问题、架构升级需求与 OLAP 选型过程、最新技术架构及落地场景应用等方面,详细介绍了轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践经验。
1471 0
轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践
|
项目管理
项目管理类型盘点:从敏捷到传统的全面比较
项目管理有三种主流方法:瀑布式、敏捷式和精益式。瀑布式强调顺序和时间线,适合任务线性推进;敏捷式注重动态迭代,能灵活应对变化;精益式关注价值创造和资源优化,减少浪费。各团队应根据需求选择合适的方法以提升效率。
279 0
|
Oracle Java 关系型数据库
Java中JDK8、JDK11、JDK17,该怎么选择?
Java这个语言,1995 年发展至今,生态方面就不多说了,没有强大的生态,在科技快速发展的今天,是不可能被互联网企业与开发者认同的。
21812 0
|
算法 安全 数据安全/隐私保护
现代密码学 | 02:流密码——2
现代密码学 | 02:流密码——2
1061 0
|
数据采集 运维 安全
构建数据中台的组织架构
著名管理大师钱德勒总结过一个黄金定律:战略决定组织,而组织决定成败。
7059 10
构建数据中台的组织架构
|
存储 算法 程序员
内存管理(二)——连续分配管理方式
内存管理(二)——连续分配管理方式
660 0