交叉验证 CrossValidation K折交叉验证

交叉验证在机器学习和深度学习中至关重要,有助于避免过拟合并充分利用数据。针对数据分布不均衡的问题,可以采用数据增强或重采样策略。本文介绍了交叉验证的概念,包括留一法和K折交叉验证,以及如何使用`train_test_split`进行数据划分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要使用交叉验证

在机器学习或者深度学习的过程中,划分数据集是一个十分重要的工作,我们在进行交叉验证的时候,可以有效的减少过拟合的情况,尽可能的利用数据的全部的有效特征来进行训练模型。
另外,如果存在数据分布不均衡的情况,可能会将结果的accuary降低,因此,在我们进行划分数据集的时候,需要注意数据集的分布的情况,如果是做一个分类的任务的话,是需要不同类别之间的数据的数量大概一致的,比如如果是三分类问题,第一类数据有10w条,第二类和第三类数据有1000条的话,是很容易出现欠拟合的情况。
如果出现数据不均衡的情况,我们可以采取两种方式来进行处理,比如上面的例子中,一种是利用数据增强的方法来增加数据中第二类第三类的数量,可以采取重采样(重采样可以参考我以前写过的博客),翻转,反转等方式,另外,也可以将第一类的数据减少至和第二类和第三类的数量相类似的数量。
这一部分的具体内容会在别的博客中进行撰写。
重采样:http://blog.csdn.net/SuperYR_210/article/details/78952152

二、交叉验证的概念

交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS 回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。来自百度百科:https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E9%AA%8C%E8%AF%81/8543100?fr=aladdin

三、交叉验证的方法

在进行划分数据集的时候,一般是有两种划分方式,一种是将数据集划分为训练集(train set)、测试集(test set)和验证集(validation set),一种是将数据集划分为训练集和测试街。两种划分数据集的方法的区别主要是在于,验证集用于进一步确定模型中的超参数,对于测试集来说,是为了验证模型的精度的,和训练集是相对应的。但使不管是采取哪种划分方式,都是可以采取以下方式来进行划分的。

1、留一法

原理:
假设数据的个数为N,在进行验证的时候,将数据划分为N份,其中的N-1份为训练集,N份为测试集,是一种特殊的交叉验证。
代码:

2、K折交叉验证

原理:
将数据集划分为不相交的K个子集,在进行训练的时候,每次随机的选

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值