IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习模型评估(上) -> 正文阅读

[人工智能]机器学习模型评估(上)

1. 基本概念

错误率(error rate):分类错误的样本(a)占样本总数(m)的比例,即:错误率E=a/m。

精度(accuracy):分类正确的样本(m-a)占样本总数(m)的比例,即:精度=1-错误率。

我们所希望的是,模型的错误率越低越好,而精度越高越好,然而当模型将训练样本学的“太好”时,很可能会把训练样本自身特点当做所有潜在样本的一般性质,导致泛化性能下降,这种现象我们称为“过拟合”(overfitting),过拟合是无法避免的,我们所能做的只是“缓解”,或者说减少其风险。

与“过拟合”相对的是“欠拟合”(underfitting),指对训练样本的一般性质尚未学好,通常是由学习能力低下而造成的,一般比较容易克服。

2. 评估方法

我们通常需要通过实验测试对模型的泛化误差进行评估,因此需要使用“测试集”来测试模型对新样本的判别能力。一般情况下,我们假设测试样本是从样本的真实分布中独立同分布采样获得,并且:测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

而我们只有一个包含m个样例的数据集D,既要训练又要测试,因此我们需要对D进行适当处理,从而产生训练集S测试集T

1)留出法

直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T

注意,训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。

单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分重复进行试验评估后取平均值作为留出法的评估结果。

有关比例的选取:常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试,测试集一般至少包含30个样例。

2)交叉验证法

数据集D划分为k个大小相似的互斥子集Di,每个子集Di应尽可能保持数据分布的一致性。每次用k-1个子集的并集作为训练集,剩下的那个子集作为测试集,这样一共可以进行k次训练和测试,最终返回的是这k个测试结果的均值,通常把交叉验证法成为“k折交叉验证”。k常用的取值是10,此时成为10折较差验证,其他常用的k值有5、20等。

与留出法类似,需要减少因样本划分不同而引入的差别,因此对于k折交叉验证通常要随机使用不同的划分重复p次,最终评估结果是这p次交叉验证结果的均值,常见如“10次10折交叉验证”。

特别地,若数据集D包含m个样例,令m=k,得到了交叉验证法中的特例:留一法(LOO)。留一法不受随机样本划分方式的影响,因为此时只有唯一的划分方式。因此,留一法的评估结果往往被认为比较准确。但是当数据集比较大时,该方法的计算开销也很大。

3)自助法

给定包含m个样例的数据集D,每次随机从数据集D中挑选一个样例拷贝到新数据集D',再将该样例放回D中,重复执行m次后,我们得到了包含m个样例的数据集D'。我们将D'用作训练集,将D\D'作为测试集

该方法适合数据集较小难以有效划分训练集和测试集时。而当数据量足够时,留出法和交叉验证法更常用。

4)调参

在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型。此时用于评估测试的数据集常被称为“验证集”。

性能度量

我们可以用错误率精度描述模型性能,但这并不能满足所有任务需求,因此我们需要引入其他度量值。

对于二分类问题,我们可以将样本根据真实类别和预测结果划分为:真正例(true positive)假正例(false positive)真反例(true negative)假反例(false negative),这四个情形加起来等于样例总数。我们根据分类结果可以得到“混淆矩阵”(confusion matrix):

真实情况(下)/预测结果(右)正例反例
正例真正例TP假反例FN
反例假正例FP真反例TN

1)查准率、查全率和F1

查准率P的定义为:P=TP+FPTP?

查全率R的定义为:R=TP+FNTP?

查全率和查准率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;查全率高时,查准率往往偏低

因此,当我们评估模型时,可以绘制“P-R曲线”:以查准率为纵轴、查全率为横轴作图,得到了查准率-查全率曲线

如图,B与C的性能很好比较,但若比较A与B的性能就略显困难。因此,我们引入一些综合考察查准率查全率的度量。

“平衡点”(BEP)是“查准率=查全率”的取值,通过平衡点的比较可以得出模型的优劣。

BEP有些过于简化,我们更常用F1度量:F1为查准率和查全率的调和平均数的倒数

F1=P+R2?P?R?=样例总数+TP?TN2?TP?

更一般地,我们引入Fβ?,其为查准率和查全率的加权调和平均数的倒数

2)ROC与AUC

与P-R曲线类似,我们根据模型预测结果对样例进行排序,按此顺序把样本作为正例进行预测,每次计算出了个重要的值——“真正例率”(TPR)“假正例率”(FPR),并分别为横轴纵轴,绘制出“ROC曲线”。

TPR=TP+FNTP?,FPR=TN+FPFP?

而当两个模型的ROC曲线发生交叉,一般难以断定两者的优劣。因此我们引入新的度量值——AUC(Area Under ROC Curve),其值为ROC曲线下的面积

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:44:41  更:2022-02-05 21:45:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:20:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码