【发布时间】:2014-09-11 12:37:25
【问题描述】:
在尝试使用 caret 包训练随机森林模型时,我注意到执行时间长得令人费解:
> set.seed = 1;
> n = 500;
> m = 30;
> x = matrix(rnorm(n * m), nrow = n);
> y = factor(sample.int(2, n, replace = T), labels = c("yes", "no"))
> require(caret);
> require(randomForest);
> print(system.time({rf <- randomForest(x, y);}));
user system elapsed
0.99 0.00 0.98
> print(system.time({rfmod <- train(x = x, y = y,
+ method = "rf",
+ metric = "Accuracy",
+ trControl = trainControl(classProbs = T)
+ );}));
user system elapsed
95.83 0.71 97.26
在我看来,执行时间应该只延长 10 倍,因为默认情况下会发生 10 次交叉验证而不是单次运行。我没有调整任何参数,但似乎 train 会自动调整:
> rfmod$results
mtry Accuracy Kappa AccuracySD KappaSD
1 2 0.4736669 -0.04437013 0.03323485 0.06493845
2 16 0.4818095 -0.03241901 0.03279341 0.06426745
3 30 0.4878361 -0.02149108 0.02956972 0.05936881
这最多可以解释 30 倍的差异。但是,它的运行时间几乎延长了 100 倍。可能的解释是什么?
提前致谢
【问题讨论】:
标签: r package random-forest r-caret