深度学习--训练集验证集测试集合理划分比例

随着数据量增长至百万级别,传统的7:3或6:2:2的训练集、验证集和测试集划分方式已不再适用。本文探讨了如何在大数据背景下进行更合理的划分,提出了一种新的比例建议——98:1:1。

众所周知,在机器学习深度学习领域,合理划分训练集验证集和测试集是很重要的,本文主要介绍如何划分。

过去,人们运用机器学习传统方法的时候,一般将训练集和测试集划为7:3.

若有验证集,则划为6:2:2. 这样划分确实很科学,当数据量不大的时候(万级别及以下)。


但到了大数据时代,数据量陡增为百万级别,此时我们不需要那么多的验证集和训练集。

假设有100W条数据,只需要拿出1W条来当验证集,1W条来当测试集,就能很好地work了。

因此,在深度学习中若是数据很大,我们可以将训练集、验证集、测试集比例调整为98:1:1



### 深度学习数据划分比例与方法 在深度学习中,合理划分数据集为训练集验证集测试集是确保模型性能的关键步骤之一。以下是关于如何按比例划分数据集的具体方法。 #### 1. 数据划分的基本原则 数据集通常被划分为三个主要部分: - **训练集(Training Set)**:用于训练模型参数[^1]。这是模型学习特征的核心数据源。 - **验证集(Validation Set)**:用于调整超参数以及监控模型的过拟合情况[^2]。 - **测试集(Test Set)**:用于最终评估模型的泛化能力,不应参与任何训练过程[^3]。 #### 2. 常见的数据划分比例 根据不同场景下的数据规模,推荐以下几种常见比例- **中小规模数据集(几千至几万条数据)**: 推荐比例为 **6:2:2** 或者 **8:1:1**。这意味着将总数据中的 60%-80% 用于训练,剩余的部分平均分配给验证集测试集][^[^23]。 - **大规模数据集(数百万条以上数据)**: 当数据量较大时,可以适当减少验证集测试集比例,例如采用 **9:0.5:0.5** 的比例[^4]。这是因为更多的数据有助于提高训练效果,而少量的验证测试数据已经足以反映模型表现。 #### 3. 实现数据划分的方法 实现数据划分可以通过编程完成,具体流程如下: - 将所有数据路径存储在一个列表中; - 使用随机种子打乱该列表以保证划分的一致性可重复性; - 根据设定的比例分割列表成训练集验证集测试集。 下面是一个基于 Python `random` 库的例子代码片段: ```python import random def split_dataset(data_paths, train_ratio=0.6, val_ratio=0.2, test_ratio=0.2, seed=42): """ Split dataset into training set, validation set and testing set. :param data_paths: List of all data paths. :param train_ratio: Proportion of the training set. :param val_ratio: Proportion of the validation set. :param test_ratio: Proportion of the testing set. :param seed: Random seed for reproducibility. :return: Tuple (train_set, val_set, test_set). """ assert abs(train_ratio + val_ratio + test_ratio - 1) < 1e-6, "Ratios must sum to 1." random.seed(seed) random.shuffle(data_paths) total_size = len(data_paths) train_split = int(total_size * train_ratio) val_split = int(total_size * (train_ratio + val_ratio)) train_set = data_paths[:train_split] val_set = data_paths[train_split:val_split] test_set = data_paths[val_split:] return train_set, val_set, test_set # Example usage: data_list = list(range(100)) # Simulated data paths train, val, test = split_dataset(data_list, train_ratio=0.6, val_ratio=0.2, test_ratio=0.2, seed=42) print(f"Train size: {len(train)}, Val size: {len(val)}, Test size: {len(test)}") ``` 上述代码通过指定比例实现了数据集的划分,并利用固定随机种子确保实验结果具有可复现性[^5]。 --- ### 注意事项 - 如果数据集中存在类别不平衡的情况,则需考虑分层采样(stratified sampling),即保持各类别的比例一致。 - 在某些情况下,尤其是当数据非常稀少时,可能仅使用训练集验证集而不单独设置测试集。这种做法适用于初步研究阶段,在正式发布前仍应预留独立的测试集
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哎呦不错的温jay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值