A:如何使用traincontrol来控制训练参数


为了评估模型对数据集的拟合程度,我们需要分析其在以前从未见过的观察结果上的表现。

实现此目的的最常见方法之一是使用k 折交叉验证,它使用以下方法:

1.将数据集随机分为k组,或“折叠”,大小大致相等。

2.选择其中一个折叠作为约束装置。将模板调整到剩余的 k-1 折叠。根据张紧层中的观测值计算 MSE 检验。

3.重复此过程k次,每次使用不同的集合作为排除集。

4.将总体测试 MSE 计算为k 个测试 MSE 的平均值。

在 R 中执行 k 折交叉验证的最简单方法是使用 R 中插入符号库中的trainControl()train()函数。

trainControl()函数用于指定训练参数(例如要使用的交叉验证类型、要使用的折叠数等), train()函数用于实际将模型拟合到数据。 。

以下示例展示了如何在实践中使用trainControl()train()函数。

示例:如何在 R 中使用 trainControl()

假设我们在 R 中有以下数据集:

 #create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
                 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
                 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

现在假设我们使用lm()函数对该数据集拟合多元线性回归模型,使用x1x2作为预测变量, y作为响应变量:

 #fit multiple linear regression model to data
fit <- lm(y ~ x1 + x2, data=df)

#view model summary
summary(fit)

Call:
lm(formula = y ~ x1 + x2, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.6650 -1.9228 -0.3684 1.2783 5.0208 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 21.2672 6.9927 3.041 0.0188 *
x1 0.7803 0.6942 1.124 0.2981  
x2 -1.1253 0.4251 -2.647 0.0331 *
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.093 on 7 degrees of freedom
Multiple R-squared: 0.801, Adjusted R-squared: 0.7441 
F-statistic: 14.09 on 2 and 7 DF, p-value: 0.003516

使用模型输出中的系数,我们可以编写拟合回归模型:

y = 21.2672 + 0.7803*(x 1 ) – 1.1253(x 2 )

为了了解该模型在未见过的观察上的表现如何,我们可以使用 k 折交叉验证。

以下代码演示如何使用插入符号包的trainControl()函数来指定使用 5 次折叠 ( number=5 ) 的 k 次交叉验证 ( method=”cv” )。

然后我们将此trainControl()函数传递给train()函数以实际执行 k 折交叉验证:

 library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " cv ", number = 5 )

#fit a regression model and use k-fold CV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl)

#view summary of k-fold CV               
print (model)

Linear Regression 

10 samples
 2 predictors

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 8, 8, 8, 8, 8 
Resampling results:

  RMSE Rsquared MAE     
  3.612302 1 3.232153

Tuning parameter 'intercept' was held constant at a value of TRUE

从结果中我们可以看到模型拟合了5次,每次使用8 个观测值的样本量。

每次,该模型都用于预测2 个保留观测值的值,并且每次都会计算以下指标:

  • RMSE:均方根误差。它衡量模型预测与实际观察结果之间的平均差异。 RMSE 越低,模型预测实际观测值就越准确。
  • MAE:平均绝对误差。这是模型预测与实际观测值之间的平均绝对差异。 MAE 越低,模型预测实际观测值就越准确。

结果中显示五个分量的 RMSE 和 MAE 值的平均值:

  • 均方根误差: 3.612302
  • 梅: 3.232153

这些指标让我们了解模型在新数据上的表现。

在实践中,我们通常会拟合几个不同的模型并比较这些指标,以确定哪个模型在未见过的数据上表现最好。

例如,我们可以拟合多项式回归模型并对其执行 K 折交叉验证,以查看 RMSE 和 MAE 指标与多元线性回归模型的比较情况。

注意#1:在此示例中,我们选择使用 k=5 折叠,但您可以选择所需的任意折叠次数。在实践中,我们通常选择 5 到 10 层之间,因为事实证明这是产生可靠测试错误率的最佳层数。

注意#2trainControl()函数接受许多潜在的参数。您可以在此处找到此功能的完整文档。

其他资源

以下教程提供有关训练模型的其他信息:

K 折交叉验证简介
留一法交叉验证简介
机器学习中什么是过度拟合?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注