Comunidad

04 de febrero de 2021 | por: José Gutiérrez | 0 comentarios

Nuestro amigo R: Feature Engineering. Preprocesamiento de datos con la librería “recipes”

Dentro de las fases que la metodología CRISP-DM nos sugiere para realizar un correcto proyecto de ciencia de datos, está la fase 3, en donde tenemos que hacer una preparación de los datos para que sean la mejor entrada para el algoritmo.

Está fase se conoce también como “feature engineering” y consiste en la creación de las mejores variables para que el proceso de modelización puede tener el mayor éxito posible; por lo tanto, es una tarea que tenemos que realizar con el objetivo de que el algoritmo pueda detectar las mejores y más significativas variables que puede predecir el target.

Es un trabajo creativo, pero también puede tratarse de un trabajo de “hormiguitas” en donde haya que llevar a cabo una operativa quizás muy extensa de trabajo, que nos puede ocupar una gran cantidad de tiempo.

Hay profesionales que realizan esas operaciones en Excel o en un entorno ajeno al que trabajan; otros se atreven, como es más aconsejable, a programarlas en un lenguaje que admite también programación algorítmica y que hacen que ese proceso puede ser ejecutado múltiples veces.

Dentro de esto último nos encontramos con la librería “recipes”, que programada por Max Khun, representa una mejora respecto de su anterior contribución “caret”, al todo el ecosistema que tiene R.

Veamos cómo opera:

Aquí cargamos las librerías que nos hacen falta para el ejemplo.

Aquí podemos ver que los datos nos muestran una serie de préstamos a vehículos que han tenido éxito o no, en la variable target “status”.

Aquí hacemos las divisiones en conjuntos de entrenamiento y de pruebas.

set.seed(55)
train_test_split <- initial_split(credit_data)

credit_train <- training(train_test_split)
credit_test <- testing(train_test_split)

En esta sección definimos “la receta que vamos a cocinar” con una variable target y 13 predictores.

rec_obj <- recipe (Status ~., data = credit_train)
rec_obj

Aquí definimos los pasos de preprocesamiento que queremos aplicar: una imputación knn de los valores missing; una conversión dummy de variables categóricas en numéricas; una estandarización 0,1 de todas las variables numéricas predictoras.

… que vienen a ser los ingredientes de la receta.

file1 <- rec_obj %>%
step_knnimpute(all_predictors()) %>%
step_dummy(all_predictors(), -all_numeric()) %>%
step_center(all_predictors())  %>%
step_scale(all_predictors())

file1

Aquí preparamos todos los ingredientes echándoles en el recipiente

trained_rec <- prep(file1, training = credit_train)
trained_rec

Y aquí podemos aplicar todas esas transformaciones en todos los conjuntos similares que queramos.

train_data <- bake(trained_rec, new_data = credit_train)
test_data  <- bake(trained_rec, new_data = credit_test)

Viendo el resultado en un fichero

head(train_data)

y en el otro.

head(test_data)

Naturalmente, para más transformaciones que hacer en nuestro “feature engineering”, sólo tenemos que consultar la librería “recipes”.

Autor:  Pedro Jiménez López. Docente del Máster en Big Data y Business Intelligence de EADIC.

Máster en Big Data y Business Intelligence

 

Comentarios

Deja tu comentario

You must be logged in to post a comment. So log in!

EADIC Blog