← Back to list

NGBoost en R

Como usar el método de Natural Gradient Boosting en R

Alfonso Carabantes Alamo · 2021-08-25 20:38 · 26 claps · 3.5 min read
#ngboost #python #r #natural #gradient
Open on Medium ↗

NGBoost en R

Como usar el método de Natural Gradient Boosting en R

Foto de Daniel Salcius en Unsplash

Foto de Daniel Salcius en Unsplash

En este artículo vamos a ver como instalar y usar el paquete en R que he creado para poder usar el método NGBoost.

NGBoost

NGBoost es un método de boosting, desarrollado por el grupo de Machine Learning de la Universidad de Stanford. Este grupo está liderado por uno de los gurus del deep learning, Andrew Ng (fundador de Coursera entre otras cosas).

Este método tiene dos elementos muy interesantes que son:

  • Uso del Natural Gradient Descent
  • Predicciones Probabilísticas

Se puede usar tanto para resolver problemas de Regresión, Clasificación o de Análisis de Supervivencia. Si quieres más información del detalle teórico de NGBoost no dudes en leer el artículo original, o accede a la página web del proyecto, seguro que lo encontrarás muy interesante.

Este método de boosting está programado en Python y no existía un paquete para R así que decidí construir un paquete en R que hiciera de wrapper a las llamadas del módulo original en Python, de forma que no hiciera falta saber programar en Python para poder usarlo. De esta manera, nuestros alumnos del Máster Big Data y Data Science en la UNED, en el que la base de programación es en R, podrían usarlo sin tener que conocer Python. Aunque siempre será necesario tener instalado el entorno de Python en el sistema, ya que al final se tiene que ejecutar el código original en Python.

Este artículo no es para contar las bondades del NGBoost, para eso podéis ir a la página web del proyecto de sus creadores (NGBoost), sino para conocer como instalar y usar el paquete de R.

Instalación del paquete ngboostR

Para la instalación podremos hacer todos desde R, sin necesidad de hacer nada en nuestro sistema directamente.

Tendremos que tener instalado el paquete reticulate que es el interface básico con Python. Una vez cargada esta librería usaremos la función install_miniconda() que nos permitirá instalar una distribución de Python en nuestro sistema.

Una vez que tenemos preparado nuestro entorno de Python, instalaremos el paquete ngboostR directamente desde github (pare esto necesitamos tener instalado el paquete devtools) usando la función *install_github pasándole como parámetro acca3003/ngboostR* que nos da acceso a la última versión del código.

Una vez instalado cargamos la librería y entonces, ejecutamos la función install_ngboost() que se encargará de instalar el módulo de NGBoost de Python.

Con estos pasos realizados, ya estaremos listos para poder

[embed]

Usando ngboostR para Regresión

Con NGBoost podemos resolver problemas de regresión en los que tenemos la opción de realizar las predicciones de forma “normal” en la que nos devuelve un número con la predicción numérica estimada. O podemos realizar una predicción de distribución, de forma que en lugar de obtener un valor numérico estimada, lo que nos devuelve la predicción para cada entrada es una distribución. Por ejemplo si le indicamos que la distribución a usar es la Normal, la predicción nos devolverá dos datos: la media y la desviación de esa Normal, para cada entrada que se predice.

Para ilustrar cómo trabajaríamos en R, ponemos un ejemplo de regresión con el clásico dataset Boston que nos permite estimar el precio de viviendas. El dataset lo obtenemos del paquete MASS.

Usamos el paquete caret para usar la función para partir los datos en Entrenamiento y Valicación.

Y el paquete Metrics que nos da funciones para calcular métricas.

Básicamente la forma de trabajar es crear un modelo con la función create_regresor(), luego entrenamos el modelo con nuestros datos mediante la función fit_regressor(). Y ya podemos pasar a realizar las predicciones con las funciones predict_regressor() y predict_regresoor_dist().

[embed]

Usando ngboostR para Clasificación

Con NGBoost también podemos resolver problemas de clasificación en los que tenemos la opción de realizar las predicciones de forma “normal” en la que nos devuelve la clase que se predice. Podemos realizar una predicción probabilidad, en la que se devuelven las probabilidades para cada una de las clases. Y tenemos las predicciones de distribución, de forma que lo que nos devuelve la predicción para cada entrada es una distribución.

Para ilustrar cómo trabajaríamos en R, ponemos un ejemplo de clasificación del dataset de predicción de Cáncer de mama. Que nos permite estimar a partir de los datos estimar si hay o no cáncer.. El dataset lo obtenemos del paquete mlbench.

Usamos el paquete caret para usar la función para partir los datos en Entrenamiento y Valicación.

Y el paquete Metrics que nos da funciones para calcular métricas.

Básicamente la forma de trabajar es crear un modelo con la función create_classifier(), luego entrenamos el modelo con nuestros datos mediante la función fit_classifier(). Y ya podemos pasar a realizar las predicciones con las funciones predict_classifier(), predict_classifier_prob() y predict_classifier_dist().

[embed]

Conclusiones

Todavía el paquete no está acabado, ya que falta de implementar el interface de NGBoostSurvival, así como algunos parámetros de las funciones de regrsión y clasificación que no se contemplan todavía en esta versión del paquete en R.

Pero ya es una versión que se puede utilizar para realizar algunas pruebas y entender como trabaja NGBoost.

Si pruebas el paquete de R ngboostR y tienes algún problema contacto conmigo: acca3003@gmail.com

Referencias

Paquete ngboostR — https://github.com/acca3003/ngboostR

Proyecto NGBoost— https://stanfordmlgroup.github.io/projects/ngboost/

Paper sobre NGBoost — https://arxiv.org/abs/1910.03225

Módulo Python NGBoost — https://blog.rstudio.com/2020/10/07/rstudio-v1-4-preview-python-support/

Usar Python en RStudio — https://acca3003.medium.com/como-usar-python-en-rstudio-335f953c0efd


메타데이터
post_id
2994b34e1fb2
slug
ngboost-en-r-2994b34e1fb2
url
https://medium.com/@acca3003/ngboost-en-r-2994b34e1fb2
canonical_url
https://medium.com/@acca3003/ngboost-en-r-2994b34e1fb2
author_url
https://medium.com/@acca3003
status
ok
fetched_at
2026-07-22 03:37:30