Como construir um modelo preditivo

Conteúdo

Visão geral

  • 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.

Introdução

Nos ú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. Em geral, duran entre 2 e 7 dias.

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 variável de destino y ¡BOOM! Tengo mi primer modelo en menos de 10 minutos (suponiendo que sus datos tengan más de 100,000 observações). 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.

Repartição do procedimento de modelagem preditiva

Para comprender las áreas estratégicas, primero analicemos el procedimiento de análisis predictivo en sus componentes esenciales. Aproximadamente, 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álise descritiva dos dados: 50% do tempo
  2. Tratamento de dados (valor ausente e correção de outlier): 40% do tempo
  3. Modelagem de dados: 4% do tempo
  4. Estimativa de desempenho: 6% do tempo

Observação: 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álise descritiva : 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 isso, o tempo que pode levar para realizar uma análise descritiva é restrito para descobrir valores ausentes e grandes recursos que são diretamente visíveis. Na minha metodologia, precisa de 2 minutos para completar esta etapa (supongo un dato con 100.000 observações).

2.Tratamento de dados : 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: em geral, he descubierto que los valores perdidos en la variable además a veces contienen una buena cantidad de información. Como um exemplo, 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 ‘meanfunciona 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.

Com esses métodos simples de processamento de dados, pode reduzir o tempo de processamento de dados para 3-4 minutos.

3. Modelagem de dados : 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. Isso levará o máximo de tempo (~ 4-5 minutos)

4. Estimativa de desempenho : Encuentro k-fold con k = 7 muy efectivo para aceptar mi apuesta inicial. Esta conclusão leva 1-2 minutos executar e documentar.

El motivo para construir este modelo no es ganar la competencia, mas para determinar um benchmark para nós mesmos. Déjame profundizar en mi algoritmo. Además he incluido algunos fragmentos de mi código en este post.

Vamos começar a colocar isso em ação

No incluiré toda mi función para darte espacio para innovar. Aquí hay un esqueleto de mi algoritmo (um 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 / retomar del conjunto de datos

colnames(complete )
[1] "EU IRIA" "Gênero" "Cidade"  "Monthly_Income" "Disbursed" "Comboio"

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 <- função(dados,variável,new_var_name) {
data$new_var_name <- ifelse(is.na(variável),1,0))
Retorna(data$new_var_name)}

Paso 6 : Imputar valores numéricos faltantes

numeric_impute <- função(dados,variável) {
mean1 <- quer dizer(data$variable)
data$variable <- ifelse(is.na(data$variable),mean1,data$variable)
Retorna(new_var_name)
}

Equivalentemente, 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 <- função(trainData,alvo) {
set.seed(120)
myglm <- glm(target ~ . , data=trainData, family = "binômio")
Retorna(myglm) }

Paso 8 : Faça previsões

pontuação <- prever(myglm, newdata = testData, tipo = "resposta")
score_train <- prever(myglm, newdata = complete, tipo = "resposta")

Paso 9 : Chequear el rendimiento

auc(complete$Disbursed,score_train)

E submeta-se!!

Notas finais

Com sorte, 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. Uma vez que eles tenham uma estimativa do ponto de referência, eles começam a improvisar mais. Compartilhe seus códigos completos na caixa de comentários abaixo.

Esta postagem foi útil para você?? Compartilhe suas opiniões / pensamentos na seção de comentários abaixo.

Se você gostou do que acabou de ler e deseja continuar seu aprendizado sobre análise, inscreva-se em nossos e-mails, Siga-nos no Twitter ou como o nosso página do Facebook.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.