(我不确定这是R Caret还是stats问题,但我认为我仅能理解Caret的训练结果输出)
很抱歉没有提供有效的示例,这个问题是关于理解插入符号输出的。
我的数据集dt_in
的尺寸为17,000 x 80。
我有以下代码用于训练模型(例如,随机森林,增强线性模型),与测试数据集相比,该测试的RMSE,R ^ 2和MAE更好。不管使用哪种模型,测试结果的均方根误差通常都低约10%-30%。
# prepare datasets ----------------------------------------------------------------------------
training_indices = createDataPartition(dt_in[, dep], p = .75, list = F)
dt_training = dt_in[training_indices]
dt_test = dt_in[-training_indices]
tc = trainControl(method = "repeatedcv",number = 10,repeats = 3)
# train ---------------------------------------------------------------------------------------
trained = train(dt_training[, -"dep"] , dt_training[, dep], method = fun, trControl = tc)
# model evalution ---------------------------------------------------------
trained$results
mtry RMSE Rsquared MAE RMSESD RsquaredSD MAESD
1 2 80.59007 0.2192741 46.86460 21.27305 0.06727583 2.937344
2 40 73.42838 0.3747700 40.95060 18.61011 0.05384239 1.291299
3 79 71.62358 0.3975308 40.42657 19.50400 0.07105303 1.502392
# test results
models_predicted = extractPrediction(list(trained),
testX = dt_test[, -"dep"],
testY = dt_test[, dep])
postResample(models_predicted$pred, models_predicted$obs)
RMSE Rsquared MAE
59.1520342 0.5816214 23.3004383
我已经消除了因变量中的极端离群值,这些异常值更有可能出现在训练数据集中。
我了解extractPrediction
的作用,但是我不确定trained$results
是如何计算的,只是它基于重采样数据集。我看不出测试结果会比训练结果始终如一地更好。