Explorando los Límites de la Predicción

30
Explorando os Limites da Predição Gilberto Titericz Junior Curitiba/PR - Brasil

Transcript of Explorando los Límites de la Predicción

Explorando os Limites da Predição

Gilberto Titericz Junior

Curitiba/PR - Brasil

Currículo

➔Engenheiro Eletrônico formado pelo CEFET/Curitiba em 2003

➔7 anos experiência em desenvolvimento de circuitos eletrônicos

➔7 anos experiência como engenheiro de automação

➔5 anos trabalhando com ciência de dados

Plataforma Kaggle

➔ É a maior plataforma de competição de modelagem preditiva no mundo

➔ Mais de meio milhão de cientistas de dados cadastrados.

➔ Cerca de 48.000 cientistas ativos em competições

➔ O Kaggle hospeda e empresas podem patrocinar as competições

Plataforma Kaggle

Ranking Mundial Kaggle

Como Funciona uma Competição

➔ Registro no site➔ Escolha uma competição e se registre nela➔ Baixe os Datasets (train set e test set)➔ Monte modelos baseados no train set e faça

previsões do test set➔ Upload suas previsões para avaliação no site➔ Acompanhe seu desempenho no

LeaderBoard

Como Extrair o Máximo do Modelo

➔ Entenda o Problema➔ Pense em várias possiveis soluções➔ Escolha a métrica de performance adequada➔ Crie boas features➔ Crie modelos adequados ao problema➔ Escolha a estrategia de Validação adequada➔ Sintonize hyperparametros baseado na técnica

de validação cruzada➔ Combine modelos usando multiplos níveis de

treino (stack / ensemble)

Domine os algoritmos de classificação e

regressão➔ Gradient Boosting Decision Trees➔ Redes Neurais / Deep Learning (GPU)➔ Árvores de decisão➔ Nearest Neighbors➔ Factorization Machines➔ Suport Vector Machine(SVM)➔ Stochastic Gradient Descend➔ Regressão Linear➔ Bayesian➔ VowpalWabbit

Domine a Técnica de Validação Cruzada

➔ Estime um número de folds adequado ao problema

➔ Use folds aleatórios ou estratificados quando possível, ou agrupados por casos semelhantes.

➔ Em series temporais use folds consecutivos.

➔ FIXE os indices dos folds que serão usados em todos os modelos, isso possibilita comparar a performance dos modelos entre eles ou com modelos de outros membros do time

Roteiro para treinamento de um

modelo validado➔ Prepare o dataset➔ Crie Features➔ Treine com cross-validação e salve a predição de todos os folds

➔ Calcule a performance de todos os folds➔ Guarde o modelo treinado e suas predições

Treinando Ainda Mais Segundo Nível de Treino

Combinando modelos de forma simples.

➔ Média Aritimética

➔ Média Geometrica

Treinando Ainda Mais Segundo Nível de Treino

Combinando modelos de forma complexa:

➔ Aprendizado Supervisionado: Múltiplos Níveis de treinamento

Vários Níveis de Treino

GBM

RandomForest

Neural Net

Logistic Regression

GBMLinear Regression/Weighted Average

Logistic Regression

Neural Net

LEVEL 1 LEVEL 2 LEVEL 3

Multiplos Niveis de Treino

Porque adicionando multiplos niveis de treinamento melhoram a performance?

DIVERSIDADEDIVERSIDADE

● De algoritmos de treinoDe algoritmos de treino

● De featuresDe features

Multiplos Niveis de Treino

➔ Como avaliar a priori se uma simples Como avaliar a priori se uma simples média entre modelos será boa?média entre modelos será boa?

““Supondo que dois modelos X e Y Supondo que dois modelos X e Y apresentam uma performance apresentam uma performance equivalente, quanto menor a correlação equivalente, quanto menor a correlação entre eles, melhor será a performance.”entre eles, melhor será a performance.”

Correlações >0.99 costumam não Correlações >0.99 costumam não melhorar a performancemelhorar a performance

Kaggle – Otto Group Product Classification

Challenge

Kaggle – Data Sets

Kaggle – Otto Challenge

Train set:

> nrow(train)[1] 61878> nrow(test)[1] 144368

Kaggle – Otto Challenge

Feature Engineering:

➔ Contagem de zeros➔ Transformações Logaritmicas➔ Agrupamento K-means ➔ Soma e subtração entre grupos de features similares

➔ Redução de dimensão t-SNE em 3 features

➔ Vizinhos mais próximos

Kaggle – Otto Challenge

Estrategia de Cross-Validação:

● Exemplo: 5 folds aleatórios com índices fixos

TEST SET

1 2 3 4 5

TRAIN SET

Kaggle – Otto Challenge

Estrategia de Cross-Validação 5 Folds:

➔ Cada Modelo passa por 6 etapas de treino:

1) Fold1: treino com folds [2,3,4,5]2) Fold2: treino com folds [1,3,4,5]3) Fold3: treino com folds [1,2,4,5]4) Fold4: treino com folds [1,2,3,5]5) Fold5: treino com folds [1,2,3,4]6) Test Set: treino com folds [1,2,3,4,5]

Kaggle – Otto Challenge

Modelos:

➔ Ao todo foram treinados 37 modelos no primeiro nível de aprendizado.

● No segundo nível, além das 37 meta features, foram criadas mais 8 features não-supervisionadas.

Kaggle – Otto Challenge

Modelos:➔ 18x KneighborsClassifier➔ 6x Xgboost➔ 4x Lasagne Neural Net➔ 3x SofiaML➔ 1x Logistic Regression➔ 1x Extra Trees Classifier➔ 1x Multinomial Naive Bayes➔ 1x Random Forest➔ 1x LibFM➔ 1x H2O Neural Net

Kaggle – Otto Challenge

Neighbors Feature Engineering:

➔ Soma das distâncias dos N vizinhos mais próximos e clusterização K-Means usando as 3 transformações do Dataset:

✔ Data set Original✔ Data set transformado com Log(X+1) ✔ Data set Reduzido a 3 dimensões usando o

algoritmo t-SNE (t-distributed stochastic neighbor embedding)

Otto – Arquitetura da Solução

Meta Predictions37x Modelos

8x Features de

Distância

XgBoostBag: 250 runs

Média Ponderada/Weighted Average

Geometrica e Aritmetica

AdaBoost(ExtraTrees)

Bag: 250 runs

Neural NetBag: 600 runs

LEVEL 1 LEVEL 2 LEVEL 3

Kaggle – Otto Challenge

➔ Média Ponderada nas predições do segundo nível:

PREVISÕES = 0.85 * [([(XGBoostXGBoost^0.65)*(^0.65)*(NeuralNetNeuralNet^0.35)]^0.35)] +0.15 * ADABoost(ET)ADABoost(ET)

Kaggle – Otto Challenge

Resultados:

➔ Level2 crossvalidated + weighted mean LogLoss: 0.3962

➔ Kaggle LeaderBoard (Public): 0.38055

➔ Kaggle LeaderBoard (Private): 0.38243

Kaggle – Otto Challenge

Resultados:

Kaggle – Otto Post Challenge Forum

https://www.kaggle.com/c/otto-group-product-classification-challenge/forums/t/14335/1st-place-winner-solution-gilberto-titericz-stanislav-semenov/79598#post79598

Contact

Gilberto Titericz Junior

[email protected]● https://www.kaggle.com/titericz

● https://br.linkedin.com/in/gilberto-titericz-jr-6601357