数据拆分

方法概述

数据拆分是将整体数据集按一定规则划分为若干子集的操作,常用于机器学习建模前将数据划分为训练集、验证集与测试集。本工具支持三种拆分方式:按比例拆分(随机划分训练/验证/测试集,可两段或三段)、分层拆分(按指定类别列在各类别内按比例抽取以保持类别分布)与按组拆分(根据分组列,将指定的组划入训练集,其余组划入测试集,保持组内数据完整)。设置固定随机种子可保证结果可复现。适用于模型训练数据准备、交叉验证前的样本划分以及按用户/日期分组的场景评估。

本工具提供以下核心能力:

  • 支持按比例拆分,训练集、验证集、测试集比例可调(可两段或三段)。
  • 支持分层拆分,按指定类别列保持各子集类别分布与总体一致。
  • 支持按组拆分,按分组列划分组,保持组内数据完整。
  • 支持设置随机种子,保证拆分结果可复现。
  • 训练集、验证集、测试集分别预览并输出各类别分布对比。
  • 自动生成拆分摘要,含拆分方式、总样本量与各子集行数。
  • 集成 AI 智能分析,评估拆分配置与类别平衡情况。
  • 可分别下载训练集、验证集、测试集(CSV/Excel)与分析报告(HTML)。

计算步骤

1. 数据加载与预处理

  • 文件读取:支持 CSV 和 Excel 格式,文件大小不超过 5MB。
  • 缺失值识别:自动将常见缺失符号转换为缺失标记 NA
  • 列类型智能转换:字符型列中超过 80% 的值可转为数值时自动转为数值列。
  • 空行/空列清理:删除完全为空的行和列。

2. 按比例(随机)拆分

设定训练集比例 \(p_{tr}\) 与验证集比例 \(p_{va}\),测试集比例取 \(p_{te} = 1 - p_{tr} - p_{va}\)。若 \(p_{tr} + p_{va} \ge 1\),则验证集比例置 0,此时退化为两段拆分。各子集大小: \[ n_{tr} = \lfloor n \cdot p_{tr} \rfloor, \quad n_{va} = \lfloor n \cdot p_{va} \rfloor, \quad n_{te} = n - n_{tr} - n_{va} \] 对全部行生成随机排列后,按上述数量依次划分给训练集、验证集与测试集。

3. 分层拆分

当指定分层列时,在各类别内单独按比例抽取,以保持分层变量的类别分布在各子集中一致。设第 \(j\) 类样本量为 \(N_j\),则该类在训练、验证、测试集的数量分别为: \[ n_{tr,j} = \lfloor N_j \cdot p_{tr} \rfloor, \quad n_{va,j} = \lfloor N_j \cdot p_{va} \rfloor, \quad n_{te,j} = N_j - n_{tr,j} - n_{va,j} \] 适用于类别不平衡的目标变量,避免训练/测试集中某一类缺失或比例偏离。

4. 按组拆分

根据分组列(如用户ID、门店、日期),由用户指定划入训练集的组集合 \(G_{tr}\),测试集取其余组 \(G_{te} = G \setminus G_{tr}\)。训练样本为第 \(i\) 行满足 \(g_i \in G_{tr}\) 的集合,测试样本为 \(g_i \in G_{te}\) 的集合。同一组的所有行保持在同一子集中,避免信息泄漏。

5. 结果组织与摘要

拆分结果按训练集、验证集、测试集三个子集分别展示,自动生成拆分摘要并输出总样本量与各子集行数;分层拆分时还输出分层列在各子集的类别分布对比。小数位数设置控制预览表格中数值的显示精度,不影响底层数据。

6. AI 智能分析

基于拆分方式、总样本量与各子集行数等信息,调用大语言模型评估拆分比例与方式的合理性,并给出训练集不平衡等问题的处理建议。

7. 结果导出

  • 分别下载训练集、验证集、测试集的数据(CSV 或 Excel 格式)。
  • 下载包含拆分摘要与各子集前 10 行预览的 HTML 报告。

案例分析

案例背景:某信用评分项目共有 1000 条样本,目标变量「违约」类别分布为:是(100 条)、否(900 条)。为保证建模评估可信,采用分层拆分划分为训练集 70%、验证集 15%、测试集 15%,并期望各子集中「违约=是」的比例与总体保持一致。

原始数据(示例)

客户ID 收入(元/月) 信用分 违约
C001 8500 720
C002 12000 780
C003 6000 640
C004 15000 810

处理过程

  1. 数据加载:上传 CSV 文件。
  2. 拆分方式:按比例拆分。
  3. 参数设置:训练集比例 0.7,验证集比例 0.15,随机种子 123。
  4. 分层列:违约。
  5. 执行拆分:在「违约=是」「违约=否」两类内分别按比例随机划分。

拆分结果(示例)

子集 行数 违约=是 违约=否 违约=是占比
训练集 700 70 630 10%
验证集 150 15 135 10%
测试集 150 15 135 10%

结论:在本示例数据范围内,通过分层拆分,违约=是的样本比例在训练、验证、测试三个子集中均约为 10%,与总体分布一致;相比之下,若随机拆分可能使某个子集的违约样本比例出现波动。

常见问题

Q1: 训练集、验证集、测试集的比例如何设置?
A: 常见组合如 70%/15%/15% 或 60%/20%/20%,可根据样本量调整。数据量大可适当减少训练集比例,小样本可加大训练集比例。

Q2: 分层拆分与按比例拆分的区别?
A: 按比例拆分对全部样本统一随机划分;分层拆分在目标类别的每个类别内分别按比例划分,能保持各子集的类别分布与总体接近,适合类别不平衡的场景。

Q3: 按组拆分适用于什么情况?
A: 当数据存在自然分组(如同一用户的多条记录)且不希望同一组的数据同时出现在训练集与测试集时,按组拆分可避免信息泄漏,保证组内数据完整。

Q4: 随机种子的作用是什么?
A: 设置固定随机种子可保证同一数据与参数下拆分结果一致,便于复现与对比实验。

Q5: 拆分后可以用哪些子集做什么?
A: 训练集用于拟合模型,验证集用于调参与选择模型,测试集用于最终性能评估;三段划分完成后即可接入下游建模流程。

Q6: 按组拆分时有验证集吗?
A: 按组拆分模式划分为训练集与测试集两组,不额外生成验证集;如需验证集,可结合按比例(分层)拆分或采用交叉验证等方法。

平台功能

  • 数据输入:支持 CSV、Excel 格式(不超过 5MB),自动识别缺失值并转换数值列。
  • 按比例拆分:训练集比例(0.1-0.9)与验证集比例(0-0.5)可调,测试集比例自动取余。
  • 分层拆分:可选分层列,保持各类别在各子集中的比例分布。
  • 按组拆分:选择分组列并勾选划入训练集的组,其余组自动进入测试集。
  • 结果展示
    • 训练集(绿色标注)、验证集(橙色标注)、测试集(红色标注)分别预览。
    • 拆分摘要(方式、总样本量、各子集行数)与分层列分布对比。
  • AI 智能分析:评估拆分比例与方式并提供训练集不平衡处理建议(每日限 3 次,需配置 API 密钥)。
  • 报告下载:支持分别下载训练集、验证集、测试集(CSV/Excel)及含摘要与各子集预览的 HTML 报告。

使用建议

  1. 按任务确定拆分方式:常规建模用按比例拆分;类别不平衡时优先考虑分层拆分;按用户、门店等分组的数据用按组拆分。
  2. 合理选择比例:测试集过小评估不稳定,验证集过大浪费训练样本,建议结合样本量在三段间取平衡。
  3. 分层列选目标变量:分层列通常为模型的目标类别列,以保持各子集中目标类别分布接近总体。
  4. 记录随机种子:固定种子便于复现;若需更稳健的评估,可组合交叉验证等方法。
  5. 检查分布对比:拆分后核对分层列在各子集的占比,确认与总体分布一致。
  6. AI 分析辅助:配置 API 密钥后,可用 AI 分析评估拆分配置并识别潜在的类别不平衡风险。

平台界面

官方地址:https://superr.online

数据拆分工具界面

平台界面包含:数据上传区、拆分方式选择区(按比例/按组)、训练/验证集比例与随机种子设置、分层列或分组列及训练组勾选区、训练集/验证集/测试集分块预览、拆分摘要与分布对比、AI 分析模块与结果下载区

参考文献

  1. Kohavi, R. (1995). A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection. Proceedings of the 14th International Joint Conference on Artificial Intelligence (IJCAI), 1137-1143.
  2. Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer.