项目作者: sgreben

项目描述 :
R package for stacking caret models
高级语言: R
项目地址: git://github.com/sgreben/caretStack.git
创建时间: 2017-08-07T17:35:50Z
项目社区:https://github.com/sgreben/caretStack

开源协议:

下载


caretStack

A small library to train stacked models using caret::train.

You give it a list of layers (each layer is a list of models) and it trains either a

  • restacked (each layer uses all lower layers) or
  • non-restacked (each layer uses only the previous layer)

model.

Installation

  1. devtools::install_github("sgreben/caretStack")

Usage

  1. # Train
  2. model <- caretStack::trainStack(x, y, layers, folds, verbose = T)
  3. # Train (without re-stacking)
  4. modlel2 <- caretStack::trainStackNoRestack(x, y, layers, folds, verbose = T)
  5. # Predict
  6. yHat <- caretStack::predictStack(model, x)

The structure of a layers spec is as follows:

  1. layers <- list(
  2. list( # First layer
  3. modelName = list(
  4. parallel = NULL, # or an int = number of cores
  5. params = list (
  6. # params for caret::train
  7. )
  8. )
  9. ),
  10. list( # Second layer
  11. # Second layer models
  12. )
  13. )

Example

Here’s a full example:

  1. library(caret)
  2. gbm2 <- list(
  3. parallel = 4,
  4. params = list(
  5. method = "gbm",
  6. tuneGrid = expand.grid(
  7. n.trees = 300,
  8. interaction.depth = 2,
  9. shrinkage = 0.1,
  10. n.minobsinnode = 10
  11. ),
  12. trControl = trainControl(method = "none")
  13. )
  14. )
  15. gbm10 <- list(
  16. parallel = 4,
  17. params = list(
  18. method = "gbm",
  19. tuneGrid = expand.grid(
  20. n.trees = 300,
  21. interaction.depth = 10,
  22. shrinkage = 0.1,
  23. n.minobsinnode = 10
  24. ),
  25. trControl = trainControl(method = "none")
  26. )
  27. )
  28. xgb10 <- list(
  29. parallel = NULL,
  30. params = list(
  31. metric = "RMSE",
  32. method = "xgbTree",
  33. tuneGrid = data.frame(
  34. nrounds = 100,
  35. max_depth = 10,
  36. eta = 0.07,
  37. min_child_weight = 1.5,
  38. colsample_bytree = 0.5,
  39. subsample = 0.95,
  40. gamma = 0.045
  41. ),
  42. trControl = trainControl(method = "none")
  43. )
  44. )
  45. layers <- list(
  46. list(
  47. gbm2 = gbm2,
  48. gbm10 = gbm10,
  49. xgb10 = xgb10
  50. ),
  51. list(
  52. xgb10 = xgb10
  53. )
  54. )
  55. data(BostonHousing)
  56. x <- BostonHousing[,!(names(BostonHousing) %in% c("medv"))]
  57. x$chas <- ifelse(x$chas == "1", 1, 0)
  58. y <- BostonHousing$medv
  59. folds <- caret::createFolds(y, 5)
  60. model <- caretStack::trainStack(x, y, layers, folds, verbose = T)
  61. yHat <- caretStack::predictStack(model, x)