Validação cruzada de modelo linear, xgboost e randomForest usando crossval :: crossval_ml

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Como visto na semana passada, em uma postagem sobre validação cruzada da pesquisa em grade, crossval contém funções genéricas para validação cruzada de estatística / aprendizado de máquina em R. A Validação cruzada 4 vezes O procedimento é apresentado abaixo:

imagem-título-aqui

Neste post, apresento alguns exemplos de uso de crossval em um modelo linear e no popular xgboost e randomForest modelos. o medida de erro usado é o erro médio quadrático da raiz (RMSE) e atualmente é a única opção implementada.

Instalação

No Github, no console R:

devtools::install_github("thierrymoudiki/crossval")

Demo

Usamos um conjunto de dados simulado para esta demonstração, contendo 100 exemplos e 5 variáveis ​​explicativas:

# dataset creation
 set.seed(123)
 n 

Modelo linear

  • X contém as variáveis ​​explicativas
  • y é a resposta
  • k é o número de dobras na validação cruzada de dobras k
  • repeats é o número de repetições do procedimento de validação cruzada com dobra k

Modelo linear exemplo:

crossval::crossval_ml(x = X, y = y, k = 5, repeats = 3)
## $folds
##         repeat_1  repeat_2  repeat_3
## fold_1 0.8987732 0.9270326 0.7903096
## fold_2 0.8787553 0.8704522 1.2394063
## fold_3 1.0810407 0.7907543 1.3381991
## fold_4 1.0594537 1.1981031 0.7368007
## fold_5 0.7593157 0.8913229 0.7734180
## 
## $mean
## [1] 0.9488758
## 
## $sd
## [1] 0.1902999
## 
## $median
## [1] 0.8913229

Exemplo de modelo linear, com conjunto de validação:

crossval::crossval_ml(x = X, y = y, k = 5, repeats = 3, p = 0.8)
## $folds
##                    repeat_1  repeat_2  repeat_3
## fold_training_1   1.1256933 0.9144503 0.9746044
## fold_validation_1 0.9734644 0.9805410 0.9761265
## fold_training_2   1.0124938 0.9652489 0.7257494
## fold_validation_2 0.9800293 0.9577811 0.9631389
## fold_training_3   0.7695705 1.0091999 0.9740067
## fold_validation_3 0.9753250 1.0373943 0.9863062
## fold_training_4   1.0482233 0.9194648 0.9680724
## fold_validation_4 0.9984861 0.9596531 0.9742874
## fold_training_5   0.9210179 1.0455006 0.9886350
## fold_validation_5 1.0126038 0.9658146 0.9658412
## 
## $mean_training
## [1] 0.9574621
## 
## $mean_validation
## [1] 0.9804529
## 
## $sd_training
## [1] 0.1018837
## 
## $sd_validation
## [1] 0.02145046
## 
## $median_training
## [1] 0.9740067
## 
## $median_validation
## [1] 0.975325

Random Forest

randomForest exemplo:


require(randomForest)

# fit randomForest with mtry = 4

crossval::crossval_ml(x = X, y = y, k = 5, repeats = 3,
fit_func = randomForest::randomForest, predict_func = predict,
packages = "randomForest", fit_params = list(mtry = 4))
## $folds
##         repeat_1  repeat_2  repeat_3
## fold_1 0.9820183 0.9895682 0.8752296
## fold_2 0.8701763 0.8771651 1.2719188
## fold_3 1.1869986 0.7736392 1.3521407
## fold_4 1.0946892 1.1204090 0.7100938
## fold_5 0.9847612 1.0565001 0.9194678
## 
## $mean
## [1] 1.004318
## 
## $sd
## [1] 0.1791315
## 
## $median
## [1] 0.9847612

randomForest com parâmetro mtry = 4 e um conjunto de validação:

Leia Também  ggwebthemes: Alguns temas do ggplot2 otimizados para blogs
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

crossval::crossval_ml(x = X, y = y, k = 5, repeats = 2, p = 0.8,
fit_func = randomForest::randomForest, predict_func = predict,
packages = "randomForest", fit_params = list(mtry = 4))
## $folds
##                    repeat_1  repeat_2
## fold_training_1   1.0819863 0.9096807
## fold_validation_1 0.8413615 0.8415839
## fold_training_2   0.9507086 1.0014771
## fold_validation_2 0.5631285 0.6545253
## fold_training_3   0.7020669 0.9632402
## fold_validation_3 0.5090071 0.9129895
## fold_training_4   0.8932151 1.0315366
## fold_validation_4 0.8299454 0.7147867
## fold_training_5   0.9158418 1.1093461
## fold_validation_5 0.6438410 0.7644071
## 
## $mean_training
## [1] 0.9559099
## 
## $mean_validation
## [1] 0.7275576
## 
## $sd_training
## [1] 0.1151926
## 
## $sd_validation
## [1] 0.133119
## 
## $median_training
## [1] 0.9569744
## 
## $median_validation
## [1] 0.7395969

xgboost

Nesse caso, a resposta e as covariáveis ​​são nomeadas “rótulo” e “dados”. Então (por enquanto), fazemos o seguinte:

# xgboost example -----

require(xgboost)

f_xgboost 

Em forma xgboost com nrounds = 10:



crossval::crossval_ml(x = X, y = y, k = 5, repeats = 3,
  fit_func = f_xgboost, predict_func = predict,
   packages = "xgboost", fit_params = list(nrounds = 10,
   verbose = FALSE))
## $folds
##         repeat_1  repeat_2  repeat_3
## fold_1 0.9487191 1.2019850 0.9160024
## fold_2 0.9194731 0.8990731 1.2619773
## fold_3 1.2775092 0.7691470 1.3942022
## fold_4 1.1893053 1.1250443 0.7173760
## fold_5 1.1200368 1.1686622 0.9986680
## 
## $mean
## [1] 1.060479
## 
## $sd
## [1] 0.1965465
## 
## $median
## [1] 1.120037

Em forma xgboost com `nrounds = 10 e conjunto de validação:

crossval::crossval_ml(x = X, y = y, k = 5, repeats = 2, p = 0.8,
  fit_func = f_xgboost, predict_func = predict,
   packages = "xgboost", fit_params = list(nrounds = 10,
   verbose = FALSE))
## $folds
##                    repeat_1  repeat_2
## fold_training_1   1.1063607 1.0350719
## fold_validation_1 0.7891655 1.0025217
## fold_training_2   1.0117042 1.1723135
## fold_validation_2 0.4325200 0.5050369
## fold_training_3   0.7074600 1.0101371
## fold_validation_3 0.1916094 0.9800865
## fold_training_4   0.9131272 1.2411424
## fold_validation_4 0.8998582 0.7521359
## fold_training_5   0.9462418 1.0543695
## fold_validation_5 0.5432650 0.6850912
## 
## $mean_training
## [1] 1.019793
## 
## $mean_validation
## [1] 0.678129
## 
## $sd_training
## [1] 0.147452
## 
## $sd_validation
## [1] 0.2600431
## 
## $median_training
## [1] 1.023388
## 
## $median_validation
## [1] 0.7186136

Nota: Atualmente, estou procurando um show. Você pode me contratar no Malt ou me enviar um email: thierry dot moudiki às pm me dot. Eu posso fazer estatísticas descritivas, preparação de dados, engenharia de recursos, calibração de modelos, treinamento e validação e interpretação de resultados de modelos. Sou fluente em Python, R, SQL, Microsoft Excel, Visual Basic (entre outros) e francês. Meu resumo? Aqui!

Leia Também  Construindo um pipeline simples em R

Licença Creative Commons
Sob licença Creative Commons Attribution 4.0 International.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: o email, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br