Maneira Perfeita de se Construir um Modelo Preditivo em menos de 10 Minutos

Traduzido de: Perfect way to build a Predictive Model in less than 10 minutes

Autor: Tavish Srivastava

Introdução

Nos últimos meses começamos a conduzir hackathons sobre Data Science. Os hackathons são feitos com problemas bem definidos e relacionados a dados, que podem ser resolvidos em um curto espaço de tempo, algo entre 2 a 7 dias.

Se as competições de um mês do Kaggle fossem maratonas, estes hackathons seriam o equivalente a uma corrida de 100 metros. São eventos para os quais os data scientists trazem muita energia, nos quais os líderes se alternam quase que a toda hora e a velocidade com que se revolvem os problemas importa bem mais que nas competições do Kaggle.

Uma das sugestões mais importantes que tenho para os data scientists participantes destes hackathons (ou mesmo para as competições mais longas) é fazer rapidamente uma solução e submeter. As primeiras submissões têm que ser realmente rápidas e tenho criado soluções em Phyton e R que pegam dados tabulares e o nome da variável target e BOOM! Tenho meu primeiro modelo em 10 minutos (para dados com mais de 100.000 observações). Para conjuntos de dados menores, pode ser ainda mais rápido. A razão de submeter soluções super rápidas desta forma é criar seus próprios benchmarks que depois podem ser melhorados. Falarei sobre minha metodologia neste artigo.

Quebrando o Processo de Modelagem Preditiva

Para entender a estratégia, vamos quebrar o processo de análise preditiva nos seus componentes essenciais. De forma ampla, podemos dividi-la em 4 partes. Todos os componentes demandam um tempo X para serem executados. Vamos avaliar estes aspectos:

  1. Análise descritiva dos dados – 50% do tempo
  2. Tratamento dos dados (dados faltantes e extremos) – 40% do tempo
  3. Modelagem – 4% do tempo
  4. Estimativa de performance – 6% do tempo.

Nota: As porcentagens são baseadas em amostra de 40 competições nas quais participei (arredondando).

Agora que sabemos onde precisamos cortar tempo, vamos olhar o passo a passo do processo.

  1. Análise Descritiva: quando comecei minha carreira em analytics, usávamos modelos construídos primariamente baseados em regressão logística e árvore de decisão. A maioria dos algoritmos que usávamos envolviam algoritmos gananciosos que podem subdividir o número de recursos necessários a serem focados.

Com ferramentas avançadas de machine learning chegando, o tempo necessário para isso pode ser reduzido de forma significativa. Para uma análise inicial, provavelmente você não precisará de nenhum recurso de engenharia. Assim, o tempo necessário para a análise descritiva estará restrito a identificar dados faltantes e às características principais que são visíveis diretamente. Com minha metodologia, precisa-se de 2 minutos para completar este passo (assumindo um conjunto de dados com 100.000 observações).

2. Tratamento de dados: como esta etapa é considerada de maior tempo, precisamos encontrar uma maneira inteligente de executá-la. Seguem duas dicas simples que podemos implementar:

  • Criar flags do tipo dummy para dados faltantes: geralmente, tenho percebido que dados faltantes em algumas variáveis também trazem informações importantes. Se você estiver analisando dados de cliques de mouse, por exemplo, provavelmente você não terá muitos valores em variáveis específicas correspondentes ao uso de celulares.
  • Substituir dados faltantes pela média ou qualquer outro método mais fácil: descobri que a média só funciona bem para a primeira iteração. Exceto nos casos onde há uma tendência óbvia, a partir da análise descritiva, você precisará de um método mais inteligente.

Com métodos tão simples, pode-se reduzir o tempo do tratamento de dados para entre 3 e 4 minutos.

3. Modelagem de Dados: Descobri que o GBM é extremamente efetivo para casos de 100.000 observações. Em caso de grupos de dados maiores, considere rodar Floresta Aleatória. Isto irá tomar no máximo um tempo de 4 a 5 minutos.

4. Estimativa de Performance: Acho o k-fold com k=7 altamente efetivo como sendo minha aposta inicial. Isso finalmente leva de 1 a 2 minutos para executar e documentar.

As razões para construir este modelo não é ganhar a competição, mas estabelecer um benchmark para nós mesmos. Deixe-me mergulhar um pouco mais profundamente em meu algoritmo. Vou também incluir alguns fragmentos de meu algoritmo no artigo.

Vamos começar a colocar em prática

Não vou incluir minha função inteira para te dar chance de você inovar. Este é o esqueleto do algoritmo em R:

Passo 1: Junte os dados de treinamento e de testes

Passo 2: Leia o conjunto de dados em memória

setwd("C:\\Users\\Tavish\\Desktop\\Kagg\\AV")
complete <- read.csv("complete_data.csv", stringsAsFactors = TRUE)

Passo 3: Veja o sumário dos nomes das colunas do conjunto de dados

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

Passo 4: Identifique: a) Variáveis numéricas, b) Variáveis ID, c) Fatores das variáveis, d) Variáveis alvo

Passo 5: Crie ‘flags’ para dados faltantes

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

Passo 6: Preencha dados faltantes numéricos

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

De forma similar, preencha variáveis categóricas de forma que todos os dados faltantes fiquem codificados como um único valor, digamos “null”.

Passo 7: Passe as variáveis imputadas no processo de modelagem

#Desafio: tente integrar a metodologia k-fold a este passo

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

Passo 8: Faça previsões

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

Passo 9: Confira a performance

auc(complete$Disbursed,score_train)

E submeta!

Notas Finais

Espero que este artigo tenha te dado motivação suficiente para fazer seu próprio código de scoring de 10 minutos. A maior parte dos mestres em Kaggle e os melhores cientistas dos nossos hackathons já têm estes códigos prontos e já os utilizam antes mesmo de fazer análises detalhadas. Uma vez que eles têm um benchmark estabelecido, começam a evoluir o modelo e os resultados.


Veja também: