Hola de nuevo. Se me olvidaba la principal razón para utilizar gbm.step del paquete dismo. Como sabéis, los boosted si sobreajustan (a diferencia de los random forest o cualquier otro bootstrap) pero gbm.step hace validación cruzada para determinar el nº óptimo de árboles y evitarlo. Es fundamental. La opción que me queda, Carlos, es hacerlo con gbm, pero muchas veces, y usar el promedio.Vamos, hacer yo mismo un bootstrap con muchos boosted. Los métodos basados en bootstrap no sobreajustan, precisamente porque, como quizás sepas, al sobreajustar aumenta el error debido a la varianza, y el promedio de muchas predicciones con elevada varianza tiene mucha menos varianza que cada una de ellas. Quoting Carlos Ortega <cof en qualityexcellence.es>:> Hola, > > Sí, tienes razón... > ¿No puedes usar la propia función "gbm" del paquete "gbm"?... > > Gracias, > Carlos Ortega > www.qualityexcellence.es > > El 19 de febrero de 2018, 18:01, Manuel Mendoza <mmendoza en mncn.csic.es> > escribió: > >> >> Gracias Carlos. Hasta donde yo entiendo si las hay: >> >> El argumento family puede ser: >> >> "gaussian" (for minimizing squared error); por lo que tiene que ser >> numérica >> "bernoulli" (logistic regression for 0-1 out-comes); binaria por narices >> "poisson" (count outcomes; requires the response to be a positive >> integer); numérica también, pues. >> >> La única podría ser "laplace" (for minimizing absolute loss), pero me da >> este error: Error in while (delta.deviance > tolerance.test & n.fitted < >> max.trees) { : >> missing value where TRUE/FALSE needed >> >> Supongo que loss se refiere a la función de pérdida, y como habla de >> deviance (la función de pérdida por defecto en gbm) pienso que también es >> para variable respuesta numérica, aunque no lo encontré por ningún lado. >> Por eso pregunté. >> >> Probaré sin indicar la family, a ver si funciona. >> Gracias, >> Manuel >> >> >> >> Quoting Carlos Ortega <cof en qualityexcellence.es>: >> >> Hola, >>> >>> No hay ninguna limitación en la ayuda de la función en este sentido. >>> Tan solo se indica que han de existir dos niveles en la variable >>> predictora, vaya que al menos sea binaria... >>> En la función en el parámetro "gbm.y" es donde indicas qué columna es la >>> predictora. No hay otro parámetro donde por otro lado le indiques si es un >>> modelo binario o multinominal... >>> >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> >>> 2018-02-19 14:03 GMT+01:00 Manuel Mendoza <mmendoza en mncn.csic.es>: >>> >>> Hola erreros, ¿sabéis si gbm.step puede usarse para clasificación no >>>> binaria? >>>> Gracias >>>> -- >>>> Dr Manuel Mendoza >>>> Department of Biogeography and Global Change >>>> National Museum of Natural History (MNCN) >>>> Spanish Scientific Council (CSIC) >>>> C/ Serrano 115bis, 28006 MADRID >>>> Spain >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es en r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> >>>> >>> >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >> >> >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain
Hola, Varias cosas: - Puedes usar "gbm" y para los "partial plots" utilizar el paquete "pdp" que considera varios tipos de modelos, entre ellos "gbm". - También puedes usar "xgboost" que tiene una función parecida a esta que quieres usar "xgb.cv" justamente para encontrar el modelo óptimo. De todas formas, por experiencia sí que los randomForest sobreajustan cuando fuerzas un número alto de niveles (en la función en Python RandomForestClassifier con el parámetro "max_depth" que no veo la equivalente en randomForest o ranger de R... Saludos, Carlos Ortega. El 19 de febrero de 2018, 22:02, Manuel Mendoza <mmendoza en mncn.csic.es> escribió:> > Hola de nuevo. Se me olvidaba la principal razón para utilizar gbm.step > del paquete dismo. Como sabéis, los boosted si sobreajustan (a diferencia > de los random forest o cualquier otro bootstrap) pero gbm.step hace > validación cruzada para determinar el nº óptimo de árboles y evitarlo. Es > fundamental. > > > > La opción que me queda, Carlos, es hacerlo con gbm, pero muchas veces, y > usar el promedio.Vamos, hacer yo mismo un bootstrap con muchos boosted. Los > métodos basados en bootstrap no sobreajustan, precisamente porque, como > quizás sepas, al sobreajustar aumenta el error debido a la varianza, y el > promedio de muchas predicciones con elevada varianza tiene mucha menos > varianza que cada una de ellas. > > > > > > Quoting Carlos Ortega <cof en qualityexcellence.es>: > > Hola, >> >> Sí, tienes razón... >> ¿No puedes usar la propia función "gbm" del paquete "gbm"?... >> >> Gracias, >> Carlos Ortega >> www.qualityexcellence.es >> >> El 19 de febrero de 2018, 18:01, Manuel Mendoza <mmendoza en mncn.csic.es> >> escribió: >> >> >>> Gracias Carlos. Hasta donde yo entiendo si las hay: >>> >>> El argumento family puede ser: >>> >>> "gaussian" (for minimizing squared error); por lo que tiene que ser >>> numérica >>> "bernoulli" (logistic regression for 0-1 out-comes); binaria por narices >>> "poisson" (count outcomes; requires the response to be a positive >>> integer); numérica también, pues. >>> >>> La única podría ser "laplace" (for minimizing absolute loss), pero me da >>> este error: Error in while (delta.deviance > tolerance.test & n.fitted < >>> max.trees) { : >>> missing value where TRUE/FALSE needed >>> >>> Supongo que loss se refiere a la función de pérdida, y como habla de >>> deviance (la función de pérdida por defecto en gbm) pienso que también es >>> para variable respuesta numérica, aunque no lo encontré por ningún lado. >>> Por eso pregunté. >>> >>> Probaré sin indicar la family, a ver si funciona. >>> Gracias, >>> Manuel >>> >>> >>> >>> Quoting Carlos Ortega <cof en qualityexcellence.es>: >>> >>> Hola, >>> >>>> >>>> No hay ninguna limitación en la ayuda de la función en este sentido. >>>> Tan solo se indica que han de existir dos niveles en la variable >>>> predictora, vaya que al menos sea binaria... >>>> En la función en el parámetro "gbm.y" es donde indicas qué columna es la >>>> predictora. No hay otro parámetro donde por otro lado le indiques si es >>>> un >>>> modelo binario o multinominal... >>>> >>>> Saludos, >>>> Carlos Ortega >>>> www.qualityexcellence.es >>>> >>>> >>>> 2018-02-19 14:03 GMT+01:00 Manuel Mendoza <mmendoza en mncn.csic.es>: >>>> >>>> Hola erreros, ¿sabéis si gbm.step puede usarse para clasificación no >>>> >>>>> binaria? >>>>> Gracias >>>>> -- >>>>> Dr Manuel Mendoza >>>>> Department of Biogeography and Global Change >>>>> National Museum of Natural History (MNCN) >>>>> Spanish Scientific Council (CSIC) >>>>> C/ Serrano 115bis, 28006 MADRID >>>>> Spain >>>>> >>>>> _______________________________________________ >>>>> R-help-es mailing list >>>>> R-help-es en r-project.org >>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>>> >>>>> >>>>> >>>> >>>> -- >>>> Saludos, >>>> Carlos Ortega >>>> www.qualityexcellence.es >>>> >>>> >>> >>> -- >>> Dr Manuel Mendoza >>> Department of Biogeography and Global Change >>> National Museum of Natural History (MNCN) >>> Spanish Scientific Council (CSIC) >>> C/ Serrano 115bis, 28006 MADRID >>> Spain >>> >>> >>> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > > > -- > Dr Manuel Mendoza > Department of Biogeography and Global Change > National Museum of Natural History (MNCN) > Spanish Scientific Council (CSIC) > C/ Serrano 115bis, 28006 MADRID > Spain > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Gracias, les echaré un ojo. Quoting Carlos Ortega <cof en qualityexcellence.es>:> Hola, > > Varias cosas: > > - Puedes usar "gbm" y para los "partial plots" utilizar el paquete "pdp" > que considera varios tipos de modelos, entre ellos "gbm". > - También puedes usar "xgboost" que tiene una función parecida a esta > que quieres usar "xgb.cv" justamente para encontrar el modelo óptimo. > > De todas formas, por experiencia sí que los randomForest sobreajustan > cuando fuerzas un número alto de niveles (en la función en Python > RandomForestClassifier con el parámetro "max_depth" que no veo la > equivalente en randomForest o ranger de R... > > Saludos, > Carlos Ortega. > > El 19 de febrero de 2018, 22:02, Manuel Mendoza <mmendoza en mncn.csic.es> > escribió: > >> >> Hola de nuevo. Se me olvidaba la principal razón para utilizar gbm.step >> del paquete dismo. Como sabéis, los boosted si sobreajustan (a diferencia >> de los random forest o cualquier otro bootstrap) pero gbm.step hace >> validación cruzada para determinar el nº óptimo de árboles y evitarlo. Es >> fundamental. >> >> >> >> La opción que me queda, Carlos, es hacerlo con gbm, pero muchas veces, y >> usar el promedio.Vamos, hacer yo mismo un bootstrap con muchos boosted. Los >> métodos basados en bootstrap no sobreajustan, precisamente porque, como >> quizás sepas, al sobreajustar aumenta el error debido a la varianza, y el >> promedio de muchas predicciones con elevada varianza tiene mucha menos >> varianza que cada una de ellas. >> >> >> >> >> >> Quoting Carlos Ortega <cof en qualityexcellence.es>: >> >> Hola, >>> >>> Sí, tienes razón... >>> ¿No puedes usar la propia función "gbm" del paquete "gbm"?... >>> >>> Gracias, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> El 19 de febrero de 2018, 18:01, Manuel Mendoza <mmendoza en mncn.csic.es> >>> escribió: >>> >>> >>>> Gracias Carlos. Hasta donde yo entiendo si las hay: >>>> >>>> El argumento family puede ser: >>>> >>>> "gaussian" (for minimizing squared error); por lo que tiene que ser >>>> numérica >>>> "bernoulli" (logistic regression for 0-1 out-comes); binaria por narices >>>> "poisson" (count outcomes; requires the response to be a positive >>>> integer); numérica también, pues. >>>> >>>> La única podría ser "laplace" (for minimizing absolute loss), pero me da >>>> este error: Error in while (delta.deviance > tolerance.test & n.fitted < >>>> max.trees) { : >>>> missing value where TRUE/FALSE needed >>>> >>>> Supongo que loss se refiere a la función de pérdida, y como habla de >>>> deviance (la función de pérdida por defecto en gbm) pienso que también es >>>> para variable respuesta numérica, aunque no lo encontré por ningún lado. >>>> Por eso pregunté. >>>> >>>> Probaré sin indicar la family, a ver si funciona. >>>> Gracias, >>>> Manuel >>>> >>>> >>>> >>>> Quoting Carlos Ortega <cof en qualityexcellence.es>: >>>> >>>> Hola, >>>> >>>>> >>>>> No hay ninguna limitación en la ayuda de la función en este sentido. >>>>> Tan solo se indica que han de existir dos niveles en la variable >>>>> predictora, vaya que al menos sea binaria... >>>>> En la función en el parámetro "gbm.y" es donde indicas qué columna es la >>>>> predictora. No hay otro parámetro donde por otro lado le indiques si es >>>>> un >>>>> modelo binario o multinominal... >>>>> >>>>> Saludos, >>>>> Carlos Ortega >>>>> www.qualityexcellence.es >>>>> >>>>> >>>>> 2018-02-19 14:03 GMT+01:00 Manuel Mendoza <mmendoza en mncn.csic.es>: >>>>> >>>>> Hola erreros, ¿sabéis si gbm.step puede usarse para clasificación no >>>>> >>>>>> binaria? >>>>>> Gracias >>>>>> -- >>>>>> Dr Manuel Mendoza >>>>>> Department of Biogeography and Global Change >>>>>> National Museum of Natural History (MNCN) >>>>>> Spanish Scientific Council (CSIC) >>>>>> C/ Serrano 115bis, 28006 MADRID >>>>>> Spain >>>>>> >>>>>> _______________________________________________ >>>>>> R-help-es mailing list >>>>>> R-help-es en r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Saludos, >>>>> Carlos Ortega >>>>> www.qualityexcellence.es >>>>> >>>>> >>>> >>>> -- >>>> Dr Manuel Mendoza >>>> Department of Biogeography and Global Change >>>> National Museum of Natural History (MNCN) >>>> Spanish Scientific Council (CSIC) >>>> C/ Serrano 115bis, 28006 MADRID >>>> Spain >>>> >>>> >>>> >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >> >> >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain
Bueno, finalmente estaba equivocado en relación a la validación cruzada; resulta que gbm tiene el comando gbm.perf(gbm.model, method="cv") que te indica el mejor nº de árboles por VC. Lo pongo por si a alguien le pudiera interesar. Los gradient boosted son, sin duda, uno de los algoritmos de machine learning con mayor capacidad predictiva. Un saludo. Quoting Carlos Ortega <cof en qualityexcellence.es>:> Hola, > > Varias cosas: > > - Puedes usar "gbm" y para los "partial plots" utilizar el paquete "pdp" > que considera varios tipos de modelos, entre ellos "gbm". > - También puedes usar "xgboost" que tiene una función parecida a esta > que quieres usar "xgb.cv" justamente para encontrar el modelo óptimo. > > De todas formas, por experiencia sí que los randomForest sobreajustan > cuando fuerzas un número alto de niveles (en la función en Python > RandomForestClassifier con el parámetro "max_depth" que no veo la > equivalente en randomForest o ranger de R...> Saludos, > Carlos Ortega. > > El 19 de febrero de 2018, 22:02, Manuel Mendoza <mmendoza en mncn.csic.es> > escribió: > >> >> Hola de nuevo. Se me olvidaba la principal razón para utilizar gbm.step >> del paquete dismo. Como sabéis, los boosted si sobreajustan (a diferencia >> de los random forest o cualquier otro bootstrap) pero gbm.step hace >> validación cruzada para determinar el nº óptimo de árboles y evitarlo. Es >> fundamental. >> >> >> >> La opción que me queda, Carlos, es hacerlo con gbm, pero muchas veces, y >> usar el promedio.Vamos, hacer yo mismo un bootstrap con muchos boosted. Los >> métodos basados en bootstrap no sobreajustan, precisamente porque, como >> quizás sepas, al sobreajustar aumenta el error debido a la varianza, y el >> promedio de muchas predicciones con elevada varianza tiene mucha menos >> varianza que cada una de ellas. >> >> >> >> >> >> Quoting Carlos Ortega <cof en qualityexcellence.es>: >> >> Hola, >>> >>> Sí, tienes razón... >>> ¿No puedes usar la propia función "gbm" del paquete "gbm"?... >>> >>> Gracias, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> El 19 de febrero de 2018, 18:01, Manuel Mendoza <mmendoza en mncn.csic.es> >>> escribió: >>> >>> >>>> Gracias Carlos. Hasta donde yo entiendo si las hay: >>>> >>>> El argumento family puede ser: >>>> >>>> "gaussian" (for minimizing squared error); por lo que tiene que ser >>>> numérica >>>> "bernoulli" (logistic regression for 0-1 out-comes); binaria por narices >>>> "poisson" (count outcomes; requires the response to be a positive >>>> integer); numérica también, pues. >>>> >>>> La única podría ser "laplace" (for minimizing absolute loss), pero me da >>>> este error: Error in while (delta.deviance > tolerance.test & n.fitted < >>>> max.trees) { : >>>> missing value where TRUE/FALSE needed >>>> >>>> Supongo que loss se refiere a la función de pérdida, y como habla de >>>> deviance (la función de pérdida por defecto en gbm) pienso que también es >>>> para variable respuesta numérica, aunque no lo encontré por ningún lado. >>>> Por eso pregunté. >>>> >>>> Probaré sin indicar la family, a ver si funciona. >>>> Gracias, >>>> Manuel >>>> >>>> >>>> >>>> Quoting Carlos Ortega <cof en qualityexcellence.es>: >>>> >>>> Hola, >>>> >>>>> >>>>> No hay ninguna limitación en la ayuda de la función en este sentido. >>>>> Tan solo se indica que han de existir dos niveles en la variable >>>>> predictora, vaya que al menos sea binaria... >>>>> En la función en el parámetro "gbm.y" es donde indicas qué columna es la >>>>> predictora. No hay otro parámetro donde por otro lado le indiques si es >>>>> un >>>>> modelo binario o multinominal... >>>>> >>>>> Saludos, >>>>> Carlos Ortega >>>>> www.qualityexcellence.es >>>>> >>>>> >>>>> 2018-02-19 14:03 GMT+01:00 Manuel Mendoza <mmendoza en mncn.csic.es>: >>>>> >>>>> Hola erreros, ¿sabéis si gbm.step puede usarse para clasificación no >>>>> >>>>>> binaria? >>>>>> Gracias >>>>>> -- >>>>>> Dr Manuel Mendoza >>>>>> Department of Biogeography and Global Change >>>>>> National Museum of Natural History (MNCN) >>>>>> Spanish Scientific Council (CSIC) >>>>>> C/ Serrano 115bis, 28006 MADRID >>>>>> Spain >>>>>> >>>>>> _______________________________________________ >>>>>> R-help-es mailing list >>>>>> R-help-es en r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Saludos, >>>>> Carlos Ortega >>>>> www.qualityexcellence.es >>>>> >>>>> >>>> >>>> -- >>>> Dr Manuel Mendoza >>>> Department of Biogeography and Global Change >>>> National Museum of Natural History (MNCN) >>>> Spanish Scientific Council (CSIC) >>>> C/ Serrano 115bis, 28006 MADRID >>>> Spain >>>> >>>> >>>> >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >> >> >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain