首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在训练或验证分区上执行交叉验证以优化参数。

在训练或验证分区上执行交叉验证以优化参数。
EN

Stack Overflow用户
提问于 2018-09-25 08:23:05
回答 1查看 498关注 0票数 1

我有一个大的数据集,它被划分为三个块(训练-验证-测试)。我想要执行交叉验证( CV ),因为我有一个大的数据集,它将花费太长的时间来执行整个数据集的简历。什么是正确的分区来执行简历?我看过一些教程,它们只使用训练分割,而其他只使用验证分割,而其他则使用整个数据集。

感谢您的任何澄清或帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-25 09:20:09

为了简化事情,让我们假设您只有一个超参数。如果您想要进行交叉验证,您将选择N不同的超参数值,并在训练集上训练N不同的模型。然后,您将选择在验证集上性能最好的超级参数。然后,使用所选的超参数使用培训和验证集对模型进行再培训。然后在测试集上评估模型性能。

如果您的数据集很大,您可以选择一个小的子集,找到最优的超参数,然后继续增加子集,直到您可以推断出在整个数据集大小下最优的超参数是什么。在实践中,您通常可以选择尽可能大的子集,您可能会感到烦恼,只需为该子集使用最佳的超参数即可。

编辑:

如果您使用scikit-learn,下面是假设的带有超参数modelC的伪代码

代码语言:javascript
复制
from sklearn.model_selection import GridSearchCV

# X_train, X_test are the train and test features
# Y_train, Y_test are the corresponding labels/values to predict.
# model is some scikit-learn regression or classification model

# Create a parameter grid
param_grid = {'C': [0.1, 1, 5, 15, 100]}

# Do two fold CV. You can do other types of CV as well by passing
# a cross-validation generator
estimator = GridSearchCV(model, cv=2, param_grid=param_grid)
# Do the cross validation procedure explained below
estimator.fit(X_train, Y_train)

当您运行fit方法时,您会将您的训练集(X_train, Y_train)分成两部分。然后使用C=0.1使用数据的前半部分对模型进行培训,并在下半场对模型的性能进行评分。在这种情况下,前半部分是训练集,下半部分是验证集。之后,您将重复该过程,但使用后半部分作为培训集,使用前半部分作为验证集。然后对性能进行平均和存储。

然后,对C的其余值重复此过程。然后检查C的哪个值给出了最佳的预测精度。然后使用该值使用整个培训集(X_train, Y_train)来训练最终模型。然后,可以在左侧测试集上评估模型的性能。

代码语言:javascript
复制
score = estimator.score(X_test, Y_test)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52493677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档