模型评估(训练集、验证集、测试集)

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 模型评估(训练集、验证集、测试集)

机器学习的目标就是得到一个泛化能力好的模型,即模型不但在已给定的数据(训练数据)上性能表现良好,而且在没有见过的数据(测试数据)上也能达到同样的效果。通常在评估模型的时候,我们看到的只有训练集和测试集,但实际上,我们应将数据集划分为三个集合:训练集、验证集、测试集。


训练集自然是用来训练模型的,当一个模型训练好后,我们可以知道该模型在训练集上的表现,但是不知道在其他数据(全新数据)上是什么样的,于是就可以通过验证集来评估模型性能,然后再对模型做进一步的调节(调节本身就是学习的过程),也就是所谓的调参(超参数),寻找出最合适的模型配置。所以,验证集实际上就起到了一个反馈的作用,来告知我们这个模型调到什么样的程度其性能最优,但是,这里有个问题,如果,单纯的靠验证集的性能来调节模型配置,那么模型同样会在验证集上产生过拟合现象,所以,通常模型参数只调节一次,验证集仍然可以可靠的评估模型,但如果,反复的根据验证集的性能去修改模型,模型在验证集上的性能就会非常好,这并不是我们想要的,因为我们关心的是全新的数据在模型上的表现,于是就有了测试集。测试集不再像验证集那样把自己的数据透露给模型,验证集是为了调参才把自己的信息给模型达到一个反馈的效果,而测试集完全不用,它就是全新的数据,所以,测试集是对模型最终的评估。

通常情况下,我们见到的只有训练集和验证集,常常把验证集称为测试集。

有时候数据集很小,为了评估模型,有以下三种经典的方法:

1.简单的留出验证

留出一定比例的测试数据,在剩下的数据上训练模型,但是由于不能在测试集上调节模型,所以要留一个验证集,如图:

20200617123557795.jpg

所以,平常我们看到的测试集就是这留出的验证集。

实现代码:

num_validation_samples=10000
np.random.shuffle(data)#打乱数据
validation_data=data[:num_validation_samples]#定义验证集
data=data[num_validation_samples:]
training_data=data[:]#定义训练集
'''在训练数据上训练模型,并在验证数据上评估模型'''
model=get_model()
model.train(training_data)
validation_score=model.evaluate(validation_data)
#现在可以调节模型、重新训练、评估、然后再调节。。。
model=get_model()
model.train(np.concatenate([training_data,validation_data]))
test_score=model.evaluate(test_data

该方法的缺点:如果数据很少,测试部分包括的样本就很少,那么评估的结果就会有偏差。

2.K折交叉验证

将数据划分,为大小相同的K个分区。对于每个分区i,在剩余K-1个分区上训练模型,然后在分区i上评估模型。最终分数等于等于K个分数的平均值。对于不同的训练集-测试集划分,如果模型性能变化很大,那么这种方法很有用。如图:

20200617123557795.jpg

实现代码:

k=4
num_validation_samples=len(data)//k
np.random.shuffle(data)#打乱数据
validation_scores=[]
for fold in range(k):
    validation_data=data[num_validation_samples*fold:num_validation_samples*(fold+1)]#选择验证数据分区
    training_data=data[:num_validation_samples*fold]+data[num_validation_samples*(fold+1):]#使用剩余数据作为训练数据,+运算符是列表合并
    #创建一个全新的模型实例(未训练)
    model=get_model()
    model.train(training_data)
    validation_score=model.evaluate(validation_data)
    validation_scores.append(validation_score)
validation_score=np.average(validation_scores)#最终验证分数,k折验证分数的平均值
#在所有非测试数据上训练最终模型
model=get_model()
model.train(data)
test_score=model.evaluate(test_data

3.带有打乱数据的重复K折验证

这种方法是多次使用K折验证,在每次将数据划分为K个分区之前都先将数据打乱。最终分数是每次K折验证分数的平均值。这种方法对于数据相对较少,又想尽可能精确的评估模型来说很有效,但是缺点在于,它的计算代价很高,因为一共要训练和评估PK个模型(P是重复次数)。

模型评估注意事项:

1.数据代表性:划分数据集时随机打乱数据。

2.时间箭头:如果想根据过去预测未来,不能随机打乱数据,要确保测试数据的时间晚于训练数据。

3.数据冗余:如果数据中有多次重复的数据点,不能随机打乱数据,要确保训练集和验证集没有交集。

相关文章
|
19天前
|
存储 人工智能 测试技术
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
141053 20
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
|
27天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
3天前
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
1月前
|
人工智能 自然语言处理 测试技术
AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
AxBench 是由斯坦福大学推出,用于评估语言模型可解释性方法的基准测试框架,支持概念检测和模型转向任务,帮助研究者系统地比较不同控制技术的有效性。
47 5
AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
|
15天前
|
机器学习/深度学习 自然语言处理 API
阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
DeepSeek R1是基于Transformer架构的先进大规模深度学习模型,2025年1月20日发布并开源,遵循MIT License。它在自然语言处理等任务上表现出色,高效提取特征,缩短训练时间。阿里云推出的满血版方案解决了服务器压力问题,提供100万免费token,云端部署降低成本,用户可快速启动体验。虽然回答速度有待提升,但整体表现优异,备受关注。
85 7
|
17天前
|
人工智能 IDE 测试技术
用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
通义灵码, 作为国内首个 AI 程序员,从最开始的内测到公测,再到通义灵码正式发布第一时间使用,再到后来使用企业定制版的通义灵码,再再再到现在通义灵码2.0,我可以说“用着”通义灵码成长的为数不多的程序员之一了吧。咱闲言少叙,直奔主题!今天,我会聊一聊通义灵码的新功能和通义灵码2.0与1.0的体验感。
|
13天前
|
人工智能 IDE 测试技术
用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
|
3月前
|
数据采集 人工智能 自动驾驶
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
VSI-Bench是由李飞飞和谢赛宁团队推出的视觉空间智能基准测试集,旨在评估多模态大型语言模型(MLLMs)在空间认知和理解方面的能力。该基准测试集包含超过5000个问题-答案对,覆盖近290个真实室内场景视频,涉及多种环境,能够系统地测试和提高MLLMs在视觉空间智能方面的表现。
111 16
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
|
3月前
|
算法 数据挖掘 测试技术
犬类癌症检测(CANDiD)研究:使用独立测试集对1000多只犬进行基于高通量测序的多癌种早期检测"液体活检"血液测试的临床验证
这项研究首次在大规模独立测试集上验证了基于NGS的液体活检在犬类多癌种检测中的应用。该方法具有很高的特异性,可以作为一种新的无创癌症筛查和辅助诊断工具。通过早期发现癌症,有望改善犬类癌症的诊断和管理模式。
77 12
|
4月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
95 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力

热门文章

最新文章