机器学习基础:模型评估(上)

article/2025/9/18 5:34:34

目录

1. 什么是一个优秀的分类器

2. 选择测试数据集

2.1 切分训练测试集

2.1.1 简单随机划分(random handout)

2.1.2 留一法(leave-one-out)

2.1.3 留一法交叉验证(leave-one-out cross validation)

2.1.4 重复随机分段采样(repeated random subsampling)

2.1.5 K-折交叉验证(K-fold cross validation)

2.2 数据集切分时的样本类别

2.2.1 解决方案:分层(垂直)采样

2.3 归纳学习假说和归纳偏差

2.4 验证集(validation set)

3. 评估方法(evaluation methods)

3.1 评估指标(evaluation metrics)

3.1.1 positive样本 v.s. negative样本

3.1.2 正确率和错误率(Accuracy & Error Rate)

3.1.3 错误降低率(error rate reduction)

3.2 Precision & Recall

3.3 F-score

3.4 Sensitivity & Specificity

3.5 多分类模型评估(Multiclass evaluation)

4. 模型比较:基线(baselines)和基准(benchmarks)

4.1 常见的基线


1. 什么是一个优秀的分类器

监督下的分类器学习是将属性映射到类标签上 。

我们训练分类器的目标是泛化:将正确的类别标签分配给从未见过的实例(预测)。

如何确定一个好的分类器?

  • 在一些训练数据上进行训练 。
  • 在测试数据上进行测试(在训练期间未见过)。
  • 在测试数据上评估性能。

基本评价指标:准确度

准确度 Accuracy=\frac{Number of correctly labeled test instances}{Total number of test instances}

在很多情况下,这是适用的,但是我们在下面的内容将不仅仅局限于此,本文会给出一些场景,帮助你理解,为什么很多时候accuracy的评价指标是远远不够的。


判断题

思考在下面的场景下,accuracy的衡量标准是否会失效:

我们现在使用 100 个样本,患癌症的人label=1, 不患癌症的label=0;假设人群中有1%的人罹患癌症,现在构建了一个模型,预测一个人会不会得癌症,这个模型没有经过任意训练,它也只能输出一个结果,就是0


错:由于患癌症的人在人群中的比例本身就低,用accuracy衡量这个模型的精度是没有意义的。如果一个模型预测所有的样本为不患癌症,这个模型的精度也可能达到 90% 甚至更高。

思考下面的场景,描述的是正确的还是错误的?

两个模型在同一个测试集上有相同的accuracy,是否代表他们学到了同样程度的信息?


错:即使两个模型的学习程度不同,它们在同一个测试集上也可能得到相同的accuracy

如果两个模型在同一个测试集上有相同的错误模式(即判错的样本是完全重合的)他们是否学到了同样程度的信息?


错:即使一些样本对这两个模型来说都是困难的样本,那也不代表这些困难样本让这两个模型分类错误的原因是相同的,可能第一个模型是因为一部分特征没有学习好而分错,第二个模型因为另外一部分特征没有学习好而分错。

一个模型在一个测试集上比另外一个模型高,是否就代表在另一个测试集上也会同样比另外一个模型高?


第三个问题则更加错误,因为一个测试集上的结果好,一方面可能这个测试集的样本更加有利于第一个模型的学习结果,也有可能第一个模型在某些情况下效果特别好,甚至存在过拟合的情况,那么这个时候如果换一个数据集,其结果未必就比第二个好。

2. 选择测试数据集

  • 让分类器在训练集上(training set)训练,在测试集(testing set)上测试
  • 那么如何科学的划分训练和测试集呢?

2.1 切分训练测试集

为什么不把数据全部用来训练?

如果你不划分出来测试集,你就没有办法对模型的精度进行验证,进而无法通过参数调整来让模型有更好的表现。

为什么不能用训练的数据来测试?

因为模型正是使用训练样本进行训练,如果测试数据中包含了训练样本,模型的精度会很高,但这是一种欺骗和作弊,这个很高的精度不能代表真实的精度。因此在测试集中绝对不能出现用来训练的样本。

2.1.1 简单随机划分(random handout)

最简单的方法来划分:

  • 训练集 / 测试集 = 0.5:0.5\:\:\: or\:\:\: 0.8:0.2\:\:\: or\:\:\: 0.9:0.1
  • 将训练集和测试集按照这个比例进行随机划分,训练一个模型。

2.1.2 留一法(leave-one-out)

只留1个样本用来测试,将数据集中的其他所有样本用来训练
 

2.1.3 留一法交叉验证(leave-one-out cross validation)

适用情况:

留一法交叉验证通常用在数据量比较小的情况下。

原因:

当数据量本来就很小的时候,留出过多的样本测试会导致训练样本缺乏而训练不充分;而且只有数据量小的情况下才能支撑复杂度这么高的运算。

具体描述:

假设数据集中一共有N个样本,将1个样本作为测试集,剩下的N-1样本作为训练集,训练一个模型。再选择另一个样本作为测试集,其他所有样本作为训练集再训练另外一个模型。如此重复,直到整个数据集中所有的数据都完成这个过程;

这个过程中一共会生成N个模型,每个模型都被N-1个训练样本和1个测试样本训练和测试过;

将这N个模型的精度进行取平均运算,得到的结果就是最终的精度结果。

2.1.4 重复随机分段采样(repeated random subsampling)

具体描述:

假设一个数据集有N个样本,从样本集合中随机采样出60 %用作训练,另外40%用作测试,训练一个模型。将这个过程重复m次,最终得到了m个模型,这m个模型的精度均值作为模型的最终精度。

存在的问题:

由于采样是随机的,所以有部分样本可能在训练这个m个模型的过程中没有被随机到。就会导致训练样本没有完全充分地利用。

相对于一次性随机划分(random handout)的方法,这种方法也更可靠,但是计算量要大很多,因为要进行多次划分和多个模型的训练。

2.1.5 K-折交叉验证(K-fold cross validation)

将数据集均等划分成K份,第1份作为验证集,剩下K-1份作为训练集,得到第一个模型M_{1} ;同样的方法,将这个K份中的第2份作为验证集,剩下K-1份作为训练集,训练第二个模型M_{2}, 如此重复,一共训练K个模型,而所有的样本也都充分利用了。

K一般选择5或者10;因为太大了对训练很不友好,训练过程太耗时

2.2 数据集切分时的样本类别

我们是否应该保持训练集和测试集中的样本类别分布是相同的?

训练和测试数据中的各个类别的样本比例不一样,比如猫狗分类的数据集如果训练集里面有80%是猫的样本,20%是狗的样本。而测试集中80% 是狗的样本,20%是猫的样本这样就很麻烦,因为这样训练出来的模型在训练集上表现会很差。

2.2.1 解决方案:分层(垂直)采样

让训练和测试集上的数据具有相同的分布。相同的分布的意思就是:每个类占总样本的比例是一样的。


例子:

我们想研究大学生的某些行为,假设全国有 21000000 学生,抽取 4000 个人来进行研究。

通过对这 21000000 学生进行统计后发现:主修英语的学生占12%,主修科学的学生占28%,主修计算机科学的学生占24%,主修工程的学生占21%,主修数学的学生占15%。

因此,为了让 4000 个样本可以代替 21000000 人,我们必须保证随机抽取的 4000 个人中各个学科学生的比例也是:英语的学生占12%,主修科学的学生占28%,主修计算机科学的学生占24%,主修工程的学生占21%,主修数学的学生占15%;

上面这个过程就是一个分层采样的过程,我们按照学科一共采样了 5 个不同的层(类)的学生。

2.3 归纳学习假说和归纳偏差

数据训练对于一个模型是重要的,但模型的假设也很重要。

归纳学习假说(Inductive learning hypothesis)

当一个模型经过大量的数据训练后,会对没有见过的样本依然存在泛化性。

但是如果模型的假设是错误的,大量的数据训练之后,决定只能是更加错误的。


例子:

朴素贝叶斯的假设就是:各个属性之间是相互独立的。

如果我们的数据样本由100个属性组成,这100个属性都是相互独立的,那么在这种情况下我们采用朴素贝叶斯再加上大量的数据支持,最后的预测结果就会非常好。但如果这些属性之间的关联性是比较强的,朴素贝叶斯的假设就与数据本身存在不可调和的根本性问题,这个时候即使用很大量的数据进行训练,最终的结果也会很不好。


归纳偏差(inductive bias)

这一类由于假设错误而导致结果不好的问题我们称为归纳偏差。

因此对于不同的问题和场景,我们应该选择最合适的假设来构建模型。

2.4 验证集(validation set)

有些时候,我们不仅需要把数据集切分成训练集和测试集,我们还需要额外切分一个验证集。

验证集可以简单地看做是:训练集的测试集,因为在训练的过程中我们需要根据训练过的阶段性模型在验证机上的精度表现来实时调整模型的参数和超参数从而获得更好的结果或者模型是否收敛
在很多情况下,我们也会不区分验证集和测试集。

3. 评估方法(evaluation methods)

3.1 评估指标(evaluation metrics)

前面提到的accuracy是我们常用的一个衡量模型优劣的重要指标。


 

3.1.1 positive样本 v.s. negative样本

在二分类问题中,我们通常区分正样本和负样本。

假设我们要让我们的模型区分一张图片是 “猫”还是“非猫”,我们不仅要给所有数据中的猫label=1,我们还需要给那些“非猫”的样本label=0

这个道理其实很简单,想让模型理解什么是 “猫”首先就要告诉他,哪些特征是 “非猫”,因此任何一个分类问题,一定都存在正样本和负样本,在这个猫和非猫的分类问题中,那些label=1的图片就是正样本(positive),label=0的图片就是负样本(negative)

  • 阳性案例分类为「阳性」(真阳性,TP
  • 阳性案例分类为「阴性」(假阴性,FN
  • 阴性案例分类为「阳性」(假阳性,FP
  • 阴性案例分类为「阴性」(真阴性,TN

3.1.2 正确率和错误率(Accuracy & Error Rate)

正确率是所有Ture的情况除以样本总数(正负样本都判断正确)
错误率是所有False的情况除以样本总数(正样本分类成负样本,负样本分类成正样本的情况)
 

3.1.3 错误降低率(error rate reduction)

这是一个用于模型间比较的概念和评估指标。

如果Error\: \: rate\: \: reduction > 0代表现在的模型优于原来的模型,反之则证明现在的模型比原来的模型更差。

3.2 Precision & Recall

accuracy在很多情境下是不足以表征模型水平的,例如:

我们已经开发了两种机器学习方法来检测疾病。 我们在1000个病例中测试了每种算法(其中1 %的人患有这种疾病)。每个模型的准确率都是99 %

当我们观察Error表格的时候发现:

Model 2将所有病人都预测为没有患疾病,由于本身只有1 %人患了这种疾病,所以Model 2的准确度依然很高。

这种情况下使用accuracy就不足以表征模型水平了。


针对上面的问题,有两种比accuracyerror rate更有意义的衡量指标: 

Precision衡量的是:在所有分类器分类出来的阳性样本中,有多少是真正阳性的。

Recall衡量的是:在所有真正为阳性的样本中,有多少被分类器分类成阳性。


Precision:用的是一列计算 。

Recall:用的是一行计算 。

3.3 F-score

在理想情况下,我们希望precisionrecall都越接近1越好。

High\: \: precision + low \: \: recall:该模型需要大量证据来表示“阳性”(严格),较低的假阴性率。

Low \: \: precision + high\: \: recall:该模型不需要太多证据就可以显示“阳性”,较低的假阳性率。

因此我们通过把precisionrecall结合起来作为一个模型的评估指标也是一种方法:

F-score

3.4 Sensitivity & Specificity

Sensitivityrecall的另一个名称——模型能够检测到的真实阳性病例的比例(在所有真正为阳性的样本中,有多少被分类器分类成阳性)。

Specificity:模型能够检测到的真实阴性病例的比例。

 Specificity:用的是第二行计算。

3.5 多分类模型评估(Multiclass evaluation)

我们把下面这个表格叫做混淆矩阵(cofusion matric):

我们之所以能够画出这个2\times 2的矩阵,是因为我们处理的二分类问题,把一类看做是positive样本,另一类是negative 样本。

那对于多分类的情况下,我们怎么来构成这个混淆矩阵呢?

在这个多分类任务的图表中,我们容易得出结论,那就是这个表格对角线上的值都是他们的 True\: \: positive的情况;那其他三种状态的样本跑到哪里了呢?

其实当我们面对多分类的情况,我们只要把其中的一类看做是positive( label=1)样本,其他的所有类都看作negative(label=0)样本,就可以得到混淆矩阵的数值了。

结合上图来看:

当我们要求以pedestrianpositive样本的混淆矩阵的时候,我们把road,sidewalk等其他类都看作是label=0的样本,就可以将二分类的混淆矩阵扩展到多分类问题中。这种评估方法也叫 one \: \: v.s.\: \: rest

接下来我们可以以同样的方法求算所有类的混淆矩阵,并求出每个类的precisionrecall。然后我们将每个类的precisionrecall进行求平均,即可得到整个多分类模型的指标。


Total \: \: accuracy:对角单元格(正确的分类)的总和除以整个表的总和。

Macro-averaging

计算每个classPR并取其平均值。

其中c代表了所有的classesi是第iclass

Micro-averaging

将所有实例合并为一个池。

Weighted\: \: averaging

计算每个类别的PR,并取其平均值,按每个classi中的实例比例\frac{n_{i}}{N}加权。

不同类的样本可能会存在不均衡的情况,因此采用加权平均的方式,样本量大的类别,我们就在计算整体 precisionrecall 的时候给与更多的权重。

4. 模型比较:基线(baselines)和基准(benchmarks)

baselines =简单的天真方法,我们希望任何机器学习方法都能击败它。

例如:随机猜测。

benchmarks=既定的竞争对手的技术,我们要与之比较我们的方法。
例如:目前在排行榜上表现最好的算法 。

在实践中,人们对这些术语的用法并不严格(两者有时统称为基线)。

4.1 常见的基线

Random \: \: baseline

  • 从现有标签中均匀地猜测一个类别标签。
  • 根据训练集的类别分布来猜测标签。

Zero-R \: \: baseline

  • 总是猜测训练集中最常见的标签

Other \: \: baselines

  • Regression——总是猜测平均值
  • Object\: \: detection——总是猜测图像的中间位置

baseline举例:

假设一个回归模型 (regression model)的通过训练后的输出数据范围在[ 1 - 5 ]之间。

baseline1

我们选择一个模型,他只做一件事情,就是随机地给出一个1 -5之间的数据作为自己预测的结果。

baseline2

这个模型做的事情则更简单,他每次给出的输出值都是3

计算一下这两个baseline距离真实值到底差多少:

通过计算得到baseline2的误差比baseline1要小


http://chatgpt.dhexx.cn/article/ud0XFkfh.shtml

相关文章

【零基础强化学习】强化学习中的有模型和无模型

递归与动态规划🤔 写在前面关于Planning 与 Learning关于有模型和无模型写在最后谢谢点赞交流!(❁◡❁) 更多代码: gitee主页:https://gitee.com/GZHzzz 博客主页: CSDN:https://blog.csdn.net/gzhzzaa 写在前面 作…

【机器学习】哪些模型可以解释?

模型解释是有监督机器学习中的一项重要任务。解释模型对于理解支配数据的动态至关重要。让我们看看一些易于解释的模型。 为什么我们需要解释我们的模型? 数据科学家的角色是从原始数据中提取信息。他们不是工程师,也不是软件开发人员。他们挖掘内部数据…

机器学习建模

文章目录 1.机器学习模型概述1.1 模型与算法1.2 机器学习中的三要素1.3 机器学习模型 2.传统机器学习模型(单模型)2.1 按任务类型划分2.1.1 分类2.1.2 回归 2.2 按性质划分2.2.1 非概率模型(决策函数)2.2.2 概率模型 2.3 按知识体…

机器学习(三):线性模型

📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 &#x1f3…

机器学习基础:模型评估(下)

目录 1. 引言 2. 进一步评估 3. 机器学习中的偏差和方差种类 3.1 过拟合 3.2 欠拟合 3.3 训练曲线观察泛化性 3.4 模型偏差和方差(bias and variance) 3.4.1 偏差 Bias 3.4.2 方差 Variance 3.4.3 方差偏差总结 4. 模型的泛化性(G…

机器学习基础模型

文章目录 朴素贝叶斯——概率模型朴素贝叶斯分类原理贝叶斯定理的公式朴素贝叶斯的优缺点以及优化 决策树——不需要进行归一化决策树基本模型介绍?决策树的特性?信息增益和信息增益比?有什么不同(信息增益作为分类指标有什么问题…

3.1 机器学习模型

3.1 机器学习模型 李沐 B站:https://space.bilibili.com/1567748478/channel/collectiondetail?sid28144 课程主页:https://c.d2l.ai/stanford-cs329p/ 1. 机器学习算法类型: 监督学习:顾名思义就是监督着模型去学习,…

机器学习之神经网络学习及其模型

1、神经元模型 历史上,科学家一直希望模拟人的大脑,造出可以思考的机器。人为什么能够思考?科学家发现,原因在于人体的神经网络。 神经网络最基本的成分是神经元模型 其中,W表示的是向量,代表的是权重&am…

机器学习建模分析

机器学习 机器学习分类 1、递进关系:深度学习–>机器学习–>人工智能 2、机器学习任务分为两大类方法: (1)有监督的学习:利用经验数据,学习表示事物的模型,关注利用模型预测未来&#x…

机器学习——神经网络模型

在“M-P神经元模型”中,神经元接收到来自个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。常用Sigmoid函数…

机器学习模型

一、LR 1. 逻辑回归与线性回归的区别 引入sigmoid函数映射,使样本映射到[0,1]之间的数值,从而来处理分类问题。是广义线性模型,本质上还是线性回归。逻辑回归是假设变量服从伯努利分布,线性回归假设变量服从高斯分布。逻辑回归是…

我们如何学习 2:如何建立模型

我们如何学习 2:如何建立模型 战略性资源学习:构建一颗知识树提炼概念建立连接结构分析纵向拆解横向拆解 加强连接 战略性资源 每个人都有天生的学习能力,所以都能学习 —— 但是学习了如何学习,能让我们更聪明、更高效地学习 如…

机器学习中的模型是什么?

在机器学习中,模型是指一种数学函数,它能够将输入数据映射到预测输出。模型是机器学习算法的核心部分,通过学习训练数据来自适应地调整模型参数,以最小化预测输出与真实标签之间的误差。 机器学习中的模型是什么? 机器…

机器学习 —— 简单模型的构建

文章目录 对于简单线性模型的机器学习对简单像素图片的学习构建简单的卷积神经网络一维卷积二维卷积三维卷积 对于简单线性模型的机器学习 对于以下对应 x x x, y y y的值来预测当 x 10 x 10 x10时 y y y的值 xy-1-30-111233547 通过找规律发现这是一个关于 y 2 x − 1 y…

机器学习——线性模型学习

线性回归 线性回归多元线性回归对数线性回归对数几率回归线性判别分析(LDA)多分类任务中的LDA 多分类学习OvR、OvOMvM 线性回归 主要目标确定 如何确定w和b呢?关键在于如何衡量f(x)与y的差别 此种衡量误差的方法称为均方误差也称为欧式距离…

机器学习-模型训练

目录 1.逻辑回归模型 2. KNN模型 3.随机森林模型 4.决策树模型 5.贝叶斯模型 6.支持向量机模型 步骤: 导入必要的第三方库读取数据划分数据集可选操作,引入停用词,当作参数传入特征提取器特征提取提取的向量当作特征传入逻辑回归模型…

机器学习——训练模型

机器学习——训练模型 线性回归 y ^ h Θ ( x ) Θ ∗ x 其中 Θ 是模型的参数向量,其中包括偏置项 Θ 0 和特征权重 Θ 1 至 Θ n x 是实例的特征向量,包括从 x 0 至 x n , x 0 始终为 0 Θ ∗ x 是向量 Θ 与 x 点积 h Θ 是假设函数,使…

从机器学习到大模型(零基础)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、机器学习 1.监督学习 (1)线性回归模型 (2)多元线性回归模型 (3)二元分类模型 &a…

模型学习

LeNet AlexNet LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表示越来越抽象的概念或模式。 神经网络发展…

建模师经验分享:模型学习方法!零基础小白必备知识速看

游戏建模初学者大多存在三个大问题,一是工具的使用不够熟练,甚至有些功能还不知道,二是对布线的规范没有太大的要求和了解,三是对游戏制作流程不清晰和板绘下的功力不够,对贴图制作用工少,甚至有些人还处于一直做白膜的阶段。 那么对大多说想要要学游戏建模的学习者想要…