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

[ad_1]

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  Enganado pela aleatoriedade | R-bloggers
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  Explorando os dados demográficos dos distritos congressionais dos EUA 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 …



[ad_2]

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