Cómo construir un modelo predictivo

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp

Contenidos

Visión general

  • Los hackatones implican la construcción de modelos predictivos en un corto período de tiempo.
  • El paso de preprocesamiento de datos ocupa la mayor parte del tiempo compartido al crear un modelo
  • Otros pasos incluyen análisis descriptivo, modelado de datos y evaluación del desempeño del modelo.

Introducción

En los últimos meses, hemos comenzado a realizar ciencia de datos. hackatones. Estos hackatones son concursos con un obstáculo de datos bien definido, que debe resolverse en poco tiempo. Por lo general, duran entre 2 y 7 días.

Si las competiciones de un mes en Kaggle son como maratones, entonces estos hackatones son un formato más corto del juego: 100 mts Sprint. Son eventos de alta energía donde los científicos de datos aportan mucha energía, la tabla de clasificación cambia casi cada hora y la velocidad para solucionar el problema de la ciencia de datos es mucho más importante que las competencias de Kaggle.

modelo predictivo, diez minutos, rápido

Uno de los mejores consejos que puedo ofrecer a los científicos de datos que participan en estos hackatones (o inclusive en competiciones más largas) es crear rápidamente la primera solución y enviarla. Las primeras presentaciones deberían ser muy rápidas. He creado módulos en Python y R que pueden incluir datos tabulares y el nombre de la variable de destino y ¡BOOM! Tengo mi primer modelo en menos de 10 minutos (suponiendo que sus datos tengan más de 100,000 observaciones). Para conjuntos de datos más pequeños, esto puede ser inclusive más rápido. El motivo de enviar esta solución ultrarrápida es crear un punto de referencia para usted en el que necesita mejorar. Hablaré de mi metodología en este post.

Desglose del procedimiento de modelado predictivo

Para comprender las áreas estratégicas, primero analicemos el procedimiento de análisis predictivo en sus componentes esenciales. A grandes rasgos, se puede dividir en 4 partes. Cada componente necesita x cantidad de tiempo para ejecutarse. Evaluemos estos aspectos n (con el tiempo empleado):

  1. Análisis descriptivo de los datos: 50% del tiempo
  2. Tratamiento de datos (valor perdido y corrección de valores atípicos): 40% del tiempo
  3. Modelado de datos: 4% del tiempo
  4. Estimación del rendimiento: 6% del tiempo

Nota: Los porcentajes se centran en una muestra de 40 competencias, en las que he participado en el pasado (redondeado).

Ahora sabemos dónde debemos reducir el tiempo. Vayamos paso a paso en el procedimiento (con tiempo estimado):

1.Análisis descriptivo : Cuando comencé mi carrera en la analítica, solíamos construir principalmente modelos basados ​​en Regresión logística y árboles de decisión. La mayor parte del algoritmo que usamos involucró algoritmos codiciosos, que pueden subconjuntar la cantidad de características en las que necesito enfocarme.

Con las herramientas avanzadas de aprendizaje automático en carrera, el tiempo necesario para realizar esta tarea se puede reducir significativamente. Para su análisis inicial, probablemente no necesite realizar ningún tipo de ingeniería de funciones. Por eso, el tiempo que podría necesitar para realizar un análisis descriptivo está restringido para conocer los valores perdidos y las grandes características que son de forma directa visibles. En mi metodología, necesita 2 minutos para completar este paso (supongo un dato con 100.000 observaciones).

2.Tratamiento de datos : Dado que se considera que este es el paso que lleva más tiempo, necesitamos hallar técnicas inteligentes para completar esta etapa. Aquí hay dos trucos simples que puede poner en práctica:

  • Crear indicadores ficticios para los valores perdidos: en general, he descubierto que los valores perdidos en la variable además a veces contienen una buena cantidad de información. A modo de ejemplo, si está analizando los datos del flujo de clics, probablemente no tendrá muchos valores en variables específicas correspondientes al uso de dispositivos móviles.
  • Imputar el valor faltante con mean / cualquier otro método más fácil: he encontrado que ‘mean’ funciona bien para la primera iteración. Solo en los casos en que haya una tendencia obvia proveniente del análisis descriptivo, probablemente necesite un método más inteligente.

Con métodos tan simples de tratamiento de datos, puede reducir el tiempo de tratamiento de datos para 3-4 minutos.

3. Modelado de datos : He descubierto que GBM es extremadamente eficaz para 100.000 casos de observación. En caso de datos más grandes, puede considerar ejecutar un bosque aleatorio. Esto llevará la máxima cantidad de tiempo (~ 4-5 minutos)

4. Estimación del rendimiento : Encuentro k-fold con k = 7 muy efectivo para aceptar mi apuesta inicial. Esto en conclusión toma 1-2 minutos ejecutar y documentar.

El motivo para construir este modelo no es ganar la competencia, sino determinar un punto de referencia para nosotros mismos. Déjame profundizar en mi algoritmo. Además he incluido algunos fragmentos de mi código en este post.

Comencemos a poner esto en acción

No incluiré toda mi función para darte espacio para innovar. Aquí hay un esqueleto de mi algoritmo (en R):

Paso 1 : Anexa el conjunto de datos de prueba y de tren juntos

Paso 2 : Leer el conjunto de datos en su memoria

setwd("C:UsersTavishDesktopKaggAV")
complete <- read.csv("complete_data.csv", stringsAsFactors = TRUE)

Paso 3: Ver los nombres de columna / resumen del conjunto de datos

colnames(complete )
[1] "ID" "Gender" "City"  "Monthly_Income" "Disbursed" "train"

Paso 4: Identifique la a) Variable numérica b) Variables de identificación c) Variables de factor d) Variables de destino

Paso 5 : Crea banderas para los valores perdidos

missing_val_var <- function(data,variable,new_var_name) {
data$new_var_name <- ifelse(is.na(variable),1,0))
return(data$new_var_name)}

Paso 6 : Imputar valores numéricos faltantes

numeric_impute <- function(data,variable) {
mean1 <- mean(data$variable)
data$variable <- ifelse(is.na(data$variable),mean1,data$variable)
return(new_var_name)
}

De manera equivalente, impute una variable categórica para que todos los valores faltantes se codifiquen como un solo valor, diga «Nulo».

Paso 7 : Pasa la variable imputada al procedimiento de modelado.

#Desafío: intente integrar una metodología K-fold en este paso

create_model <- function(trainData,target) {
set.seed(120)
myglm <- glm(target ~ . , data=trainData, family = "binomial")
return(myglm) }

Paso 8 : Hacer predicciones

score <- predict(myglm, newdata = testData, type = "response")
score_train <- predict(myglm, newdata = complete, type = "response")

Paso 9 : Chequear el rendimiento

auc(complete$Disbursed,score_train)

¡Y somete!

Notas finales

Con suerte, este post le habrá dado suficiente motivación para crear su propio código de puntuación de 10 minutos. La mayoría de los maestros de Kaggle y los mejores científicos de nuestros hackatones disponen estos códigos listos y disparan su primera presentación antes de hacer un análisis detallado. Una vez que disponen una estimación del punto de referencia, comienzan a improvisar más. Comparta sus códigos completos en el cuadro de comentarios a continuación.

¿Le ha resultado útil este post? Comparta sus opiniones / pensamientos en la sección de comentarios a continuación.

Si le gusta lo que acaba de leer y desea continuar con su aprendizaje sobre análisis, suscríbete a nuestros correos electrónicos, Síguenos en Twitter o como nuestro pagina de Facebook.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.