如何使用交叉验证获得最佳系数向量

Posted

技术标签:

【中文标题】如何使用交叉验证获得最佳系数向量【英文标题】:How to get the best coefficient vector using cross-validation 【发布时间】:2015-07-14 15:26:44 【问题描述】:

我正在对数据集运行岭回归。我已经完成了 5 折交叉验证。所以基本上我的数据集分为 5 个训练和 5 个测试折叠。

这就是我在 scikit 中的做法:

from sklearn import cross_validation
k_fold=cross_validation.KFold(n=len(tourism_train_X),n_folds=5) 

我这样设置正则化参数:

#Generating alpha values for regularization parameters
n_alphas = 200
alphas = np.logspace(-10, -1, n_alphas)

现在,我的疑问是,对于每个训练和测试折叠 我做这样的事情。

ridge_tourism = linear_model.Ridge()
for a in alphas:
    ridge_tourism.set_params(alpha=a)
    index=0
    for train_indices, test_indices in k_fold:
        ridge_tourism.fit(tourism_train_X[train_indices], tourism_train_Y[train_indices])  # Fitting the model
        coefs.append(ridge_tourism.coef_)

问题是它会给我每个 alpha 内五个训练折叠中的每一个的系数向量。我想要的只是对于每个 alpha,选择的最佳系数向量是什么。我们如何得到它?我们如何从 5 个训练集中选择最终报告那个 alpha 的系数向量?

【问题讨论】:

“每个 alpha 的最佳系数向量”是什么意思? 【参考方案1】:

对于每个 alpha 值,取 5 次验证的验证错误的平均值。然后,您将能够获得平均验证误差与曲线。 α。选择 alpha 值,它给出了最低的平均验证错误。

【讨论】:

以上是关于如何使用交叉验证获得最佳系数向量的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark交叉验证后如何获得最佳超参数值?

使用 sklearn 嵌套交叉验证获得最佳参数

交叉验证后如何获取支持向量数

k折交叉验证模型选择方法

使用 libsvm 进行交叉验证以找到最佳参数

如何使用 Weka API 在 J48 / C4.5 上进行 10 倍交叉验证后保存最佳树