11.13课堂作业:数据集划分

2024年11月13日 机器学习基础

作业题目

题目:详细阐述训练集、测试集和验证集的作用、要求及应用示例。

一、训练集和测试集

1.1 训练集(Training Set)

作用

  • 用于训练机器学习模型,让模型从数据中学习特征和模式
  • 通过训练集数据调整模型参数,使模型能够拟合数据的内在规律
  • 是模型学习的主要数据来源

要求

  • 数据量要充足,通常占总数据集的60%-80%
  • 数据应具有代表性,能够反映真实问题的数据分布
  • 数据质量要高,标签准确无误
  • 应包含各类样本的充分代表,避免类别不平衡问题

1.2 测试集(Test Set)

作用

  • 用于评估模型在未见过的数据上的泛化能力
  • 提供模型性能的无偏估计
  • 检验模型是否过拟合或欠拟合
  • 作为模型最终性能的评价标准

要求

  • 必须与训练集完全独立,在训练过程中不能使用
  • 数据分布应与训练集相似,但样本不能重复
  • 通常占总数据集的20%-40%
  • 只能在模型训练完成后使用一次,避免"数据泄露"
  • 不能用测试集的结果来调整模型,否则会导致过拟合

1.3 划分原则

独立性原则

训练集和测试集必须严格分离,不能有交集

随机性原则

应随机划分数据,避免引入偏差

分层采样

对于类别不平衡的数据,应采用分层抽样保持各类别比例

时间序列特殊处理

对于时间序列数据,应按时间顺序划分,不能随机打乱

二、验证集的作用及应用示例

2.1 验证集(Validation Set)的作用

验证集是在训练集和测试集之外的第三个数据集,主要用于模型开发过程中的调优和选择。

核心作用

  • 用于超参数调优
  • 用于模型选择和比较
  • 防止在测试集上过拟合
  • 提供模型训练过程中的中间评估

典型划分比例

训练集:60%
验证集:20%
测试集:20%

2.2 示例1:神经网络超参数调优

场景描述

训练一个深度神经网络进行图像分类任务,需要确定最优的超参数配置。

验证集的使用过程

1
定义超参数搜索空间
  • 学习率:[0.001, 0.01, 0.1]
  • 批次大小:[32, 64, 128]
  • 隐藏层数:[2, 3, 4]
  • Dropout率:[0.2, 0.3, 0.5]
2
训练和验证流程
对于每组超参数组合:
    在训练集上训练模型
    在验证集上评估性能
    记录验证集准确率
3
选择最优配置
  • 比较所有配置在验证集上的表现
  • 选择验证集准确率最高的超参数组合
  • 例如:学习率=0.01,批次大小=64,隐藏层数=3,Dropout=0.3
4
最终评估
  • 使用选定的超参数在训练集上重新训练
  • 在测试集上进行最终性能评估
验证集的作用
  • 如果直接在测试集上调参,会导致模型"记住"测试集的特点
  • 验证集提供了一个独立的评估标准,避免过拟合到测试集
  • 可以多次使用验证集而不影响最终评估的公正性

2.3 示例2:模型选择(算法比较)

场景描述

对于一个客户流失预测问题,需要从多个机器学习算法中选择最适合的模型。

候选模型

1. 逻辑回归(Logistic Regression)
2. 支持向量机(SVM)
3. 随机森林(Random Forest)
4. 梯度提升树(XGBoost)
5. 神经网络(Neural Network)

验证集的使用过程

1
训练阶段
对于每个候选模型:
    在训练集上训练模型
    调整该模型的超参数(使用交叉验证或单独的验证集)
    获得该模型的最优配置
2
验证阶段
模型 准确率 AUC
逻辑回归 82% 0.85
SVM 84% 0.87
随机森林 88% 0.91
XGBoost 90% 0.93
神经网络 89% 0.92
3
模型选择
  • 根据验证集表现,选择XGBoost作为最终模型
  • 考虑准确率、AUC、训练时间、可解释性等多个因素
4
最终评估
  • 使用选定的XGBoost模型在测试集上评估
  • 测试集准确率:89%,AUC 0.92
  • 这个结果才是模型真实性能的无偏估计
验证集的作用
  • 如果直接在测试集上比较模型,选择表现最好的,相当于把测试集当作训练的一部分
  • 这样会导致选出的模型在测试集上表现好,但在真实新数据上可能表现差
  • 验证集作为"模拟测试集",让我们可以安全地进行模型选择
  • 保持测试集的"纯洁性",确保最终评估的可靠性

2.4 验证集的替代方法:交叉验证

当数据量较小时,可以使用K折交叉验证(K-Fold Cross-Validation)代替单独的验证集:

  • 将训练数据分成K份
  • 轮流使用其中一份作为验证集,其余作为训练集
  • 重复K次,取平均性能作为模型评估指标
  • 这样可以更充分地利用有限的数据

总结

训练集

用于学习模型参数

验证集

用于调优超参数和选择模型

测试集

用于最终性能评估