train set、 validation set 、test set三者的概念

转载至:点击打开链接

在有监督(supervise learning)机器学习中,数据集常被分成2~3个部分:
训练集(train set):用来估计模型;
验证集(validation set):确定网络结构或者控制模型复杂程度的参数;
测试集(test set):检验最终选择最优的模型的性能如何。

一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。

这三个名词在机器学习领域的文章中极其常见,但很多人对他们的概念并不是特别清楚,尤其是后两个经常被人混用。Ripley, B.D(1996)在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。

Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier.
Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network.
Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier.

显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。

### 验证集的概念 在机器学习中,验证集是从训练数据集中分离出来的一部分数据,主要用于调整模型超参数并防止过拟合。通过使用验证集,可以在最终测试之前评估不同配置下的模型表现,从而选择最优的模型设置[^1]。 ### 验证集的作用 #### 调整超参数 验证集允许开发者尝试不同的算法配置选项(如决策树的最大深度、神经网络的学习率等),并通过比较这些配置下模型的表现来挑选最佳组合。这有助于找到最适合特定任务的最佳参数设定而不依赖于测试集的结果[^2]。 #### 模型选择 除了帮助调优单个模型外,验证集还被用来对比多个候选模型之间的相对性能差异。例如,在决定采用支持向量机还是随机森林作为分类器时,可以利用验证集上的预测准确性来进行判断。 #### 过拟合检测 当观察到随着训练轮次增加而训练误差持续下降但验证误差却开始上升的情况,则表明当前模型可能出现了过拟合现象。此时应考虑简化模型结构或引入正则化手段以改善泛化能力。 ```python from sklearn.model_selection import train_test_split # 假设X为特征矩阵,y为目标变量 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) # 使用X_train和y_train进行模型训练 model.fit(X_train, y_train) # 利用X_val和y_val评估模型效果 val_accuracy = model.score(X_val, y_val) print(f'Validation Accuracy: {val_accuracy}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值