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

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 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.数据冗余:如果数据中有多次重复的数据点,不能随机打乱数据,要确保训练集和验证集没有交集。

相关文章
|
2天前
|
数据采集 人工智能 自动驾驶
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
VSI-Bench是由李飞飞和谢赛宁团队推出的视觉空间智能基准测试集,旨在评估多模态大型语言模型(MLLMs)在空间认知和理解方面的能力。该基准测试集包含超过5000个问题-答案对,覆盖近290个真实室内场景视频,涉及多种环境,能够系统地测试和提高MLLMs在视觉空间智能方面的表现。
33 16
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
|
10天前
|
算法 数据挖掘 测试技术
犬类癌症检测(CANDiD)研究:使用独立测试集对1000多只犬进行基于高通量测序的多癌种早期检测"液体活检"血液测试的临床验证
这项研究首次在大规模独立测试集上验证了基于NGS的液体活检在犬类多癌种检测中的应用。该方法具有很高的特异性,可以作为一种新的无创癌症筛查和辅助诊断工具。通过早期发现癌症,有望改善犬类癌症的诊断和管理模式。
38 12
|
27天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
38 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
1月前
|
测试技术 API 微服务
性能测试并发量评估新思考
性能测试并发量评估新思考
64 5
性能测试并发量评估新思考
|
1月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
35 6
|
1月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
30 1
|
2月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
150 32
|
2月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
3421 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
编解码 人工智能 自然语言处理
迈向多语言医疗大模型:大规模预训练语料、开源模型与全面基准测试
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据,无需标准化。其核心创新包括任意分辨率编码和动态压缩器模块,适用于从微小图标到长时间视频的多种应用场景。Oryx 在长上下文检索和空间感知数据方面表现出色,并且已开源,为多模态研究提供了强大工具。然而,选择合适的分辨率和压缩率仍需谨慎,以平衡处理效率和识别精度。论文地址:https://www.nature.com/articles/s41467-024-52417-z
52 2
|
2月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
594 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

热门文章

最新文章