• Michel

Classificação usando o RapidMiner - A Tragédia do Titanic

Atualizado: 11 de Dez de 2018

Como efetuar uma análise preditiva de classificação e obter excelentes

resultados sem usar programação.





Competições em Machine Learning

Como na maioria das ciências aplicadas, a melhor maneira de aprender Machine Learning é trabalhar com problemas reais e tentar resolvê-los.

Existem alguns sites de Competições em Machine Learning, dos quais o mais famoso é o Kaggle, recentemente adquirido pelo Google.

O Kaggle é uma plataforma em que cientistas de dados competem para produzir os melhores modelos para problemas reais enviados por enviados por empresas. Essa abordagem de crowdsourcing se baseia no fato de que existem inúmeras estratégias que podem ser aplicadas a qualquer tarefa de modelagem preditiva e é impossível saber de antemão qual delas será mais eficaz.

O Kaggle já realizou mais de 200 competições distribuindo prêmios para os vencedores que chegam a 1 milhão de dólares. As competições resultaram em muitos projetos de sucesso, incluindo o avanço do estado da arte na pesquisa do HIV, identificação de imagens e previsão de tráfego.

Através do Kaggle algoritmos de grande sucesso como o Xgboost e o Keras são amplamente utilizados e as soluções comentadas.

Em maio de 2016, o Kaggle tinha mais de 536.000 usuários registrados, ou Kagglers em 194 países. É a maior e mais diversificada comunidade de cientistas de dados do mundo. Uma posição de destaque em competições representa grande prestígio na comunidade e no mercado.

Na minha opinião a maior virtude do Kaggle é patrocinar a troca de ideias e soluções para um dado problema ou um algoritmo entre os cientistas de dados. É claro que os prêmios são tentadores, mas vencer, ou chegar próximo, geralmente requer além do profundo conhecimento em Machine Learning, a disponibilidade de grande potência computacional e o trabalho em equipes.

O naufrágio do RMS Titanic é um dos mais infames naufrágios da história. Em 15 de abril de 1912, durante sua viagem inaugural, o Titanic afundou depois de colidir com um iceberg, matando 1502 de 2224 passageiros e tripulantes. Esta tragédia sensacional chocou a comunidade internacional e levou a melhores normas de segurança para os navios.

Uma das razões pelas quais o naufrágio causou tal perda de vida foi que não havia botes salva-vidas suficientes para os passageiros e a tripulação. Embora houvesse algum elemento de sorte envolvido na sobrevivência do naufrágio, alguns grupos de pessoas tinham maior probabilidade de sobreviver do que outros, como mulheres, crianças e a primeira classe.



Neste desafio, você deve analisar quais os tipos de pessoas provavelmente sobreviveriam. Em particular, você aplica as ferramentas de aprendizado de máquina para prever quais passageiros sobreviveram à tragédia.

As informações sobre a competição podem ser encontradas em https://www.kaggle.com/c/titanic.

Como desenvolvi a solução

Meus objetivos neste artigo são:

  • Apresentar um processo de abordagem ao problema do ínicio ao fim;

  • Demonstrar que não é indispensável o uso de programação para obter um bom resultado;

  • Demostrar o software RapidMiner, em particular a função Auto Model.

Meu resultado final está nos 7% melhores de um total de 11.387 concorrentes.



Pré-requisitos

Este artigo não é um tutorial de Machine Learning nem do programa RapidMiner.

Como pré-requisitos você deve saber o que é uma Análise Exploratória de Dados e ter os conceitos centrais de algoritmos de Machine Learning.

Se você quiser um tutorial completo de como o aplicar o RapidMiner no problema do Titanic vá para https://www.youtube.com/watch?v=54CRc33WtaE

Os dados foram divididos em dois grupos:

set de treinamento (train.csv)

O set de treinamento é usado para construir os modelos de aprendizado de máquina. No set de treinamento são fornecidos os resultados (sobreviveu ou não) para cada passageiro. O modelo é baseado em atributos como gênero, idade e classe da cabine.

set de testes (test.csv)

O set de testes é usado para avaliar o desempenho do modelo em dados não vistos. Para este set, não são fornecidos os resultados para cada passageiro. O trabalho consiste em predizer esses resultados. Para cada passageiro do set de teste, o modelo treinado irá prever se o passageiro/a sobreviveu ou não ao naufrágio do Titanic.

Objetivo

Prever se um passageiro sobreviveu ao naufrágio do Titanic ou não. Para cada PassengerId no conjunto de testes, prever um valor 0 ou 1 para a variável Survived.

Métrica

A porcentagem de passageiros que prevista corretamente. Isto é conhecido simplesmente como accuracy (precisão).

Dicionário de dados

Os atributos para o problema são descritos no dicionário de dados abaixo.

O Fluxo do processo


Um processo típico em Machine Learning

Coleta dos dados

Primeiro carregamos o dataset Titanic no RapidMiner


Temos um dataset com 1309 observações e 11 atributos.


Esta figura apresenta as estatísticas de cada variável.


Análise Exploratória dos Dados

Neste ponto eu procedo a uma análise exploratória dos dados gerando, por exemplo as informações abaixo.

Feature Engineering

Aquí eu modifico e acrescento alguns atributos no conjunto dos sets de treinamento e testes. Por exemplo:

•Avaliação de outliers

•Tratamento de missing values

•Discretização das idades (age) em 3 partes

•Separação dos títulos dos nomes ( por exemplo, Ms, Miss, Dame, etc se tornam “Senhora”) •Criei duas nova variáveis “Has Cabin?” e “Is alone?”

•Remoção da variável “Ticket

•Transformo todas as variáveis categóricas em dummy variables, resultando 36 variáveis independentes, a variável target e o ID dos passageiros


Modelagem

Agora que temos os dados pré-processados passamos à modelagem. Vamos usar um operação recentemente incorpada ao RM chamada Auto Model.

O RapidMiner Auto Model acelera o trabalho que os cientistas de dados tem ao criar modelos de aprendizado de máquina.

Ao contrário das abordagens de aprendizado de máquina automatizadas existentes, o Auto Model não é uma “caixa preta” que impede que os cientistas de dados compreendam como o modelo funciona. O Auto Model gera um processo do RM nos bastidores, para que os cientistas de dados possam ajustar e testar os modelos antes de colocá-los em produção.

Para mais informações sobre como começar a usar o RapidMiner Auto Model, visite https://rapidminer.com/resource/automated-machine-learning/


Primeiro selecionamos os dados de treinamento

Agora selecionamos a variável target e se desejamos fazer análise supoervisionada ou clustering


Visualizamos a variável target.


Selecionamos as variáveis relevantes.

Várias colunas nos dados do Titanic são problemáticas e devem ser removidas. Os atributos "Name" e “PassenderID" são exclusivos para cada passageiro, pois eles são equivalentes às identificações, e aprendizado de máquina não pode aprender nada com eles. Esses atributos têm uma grande barra azul para ID-ness (I) e - consequentemente - uma bolha de vermelho.

O Auto Model faz uma correlação de cada variável com a variável target e nos informa quais são as mais importantes. Vemos que a grande maioria dos atributos não contribuem para o resultado e podemos eliminá-los.

As variáveis independentes relevantes são reduzidas para apenas 12.

Seleção dos algoritmos

Baseado nos dados os algoritmos relevantes de aprendizagem são exibidos. Se você selecionar mais de um modelo, os resultados incluirão uma comparação de desempenho. Neste caso selecionamos todos os 7 modelos disponíveis.

Pesos dos atributos

A importância de cada atributo é correspondente ao seu peso. Vemos que o atributo mais importante é “Senhora” com peso 1.


Performance dos modelos

Agora podemos ver a performance de cada modelo no set de treinamento, bem como o tempo de processamento.

A melhor performance foi do modelo Decision Tree com 86% de accuracy, ou seja o modelo acertou 86% das previsões. Vemos também que outros modelos chegaram a previsão de 85%, o que mostra uma certa estabilidade dos resultados independente do modelo utilizado. Em geral isto pode significar que uma combinação dos melhores modelos pode melhorar ainda mais o resultado.


Vamos analisar o modelo Decision Tree mais a fundo.

Para isso abrimos o processo que foi utilizado em background pelo RM. Como dissemos não é nossa intenção explicar os operadores do processo. Porém nos gráficos a seguir damos uma visão dos principais blocos de operadores. Abaixo vemos o processo completo, porém não mostramos os sub-processos indicados pelos operadores que contém


Os operadores marcados possuem sub-processos como abaixo.


Todas as etapas de pré-processamento acontecem dentro deste operador.


Substituição dos valores faltantes (missing values)

Nesta fase 20% do set de treinamento é retirada para o set de validação de forma estratificada, isto é, mantendo a proporção de sobreviventes e não sobreviventes.


O set de treinamento entra no operador de cross-validation usando 10 folds que tem como sub-processo o algoritmo Decision Tree. A árvore é treinada neste estágio, e retorna um modelo (port mod) que será aplicado ao set de validação na próxima etapa.


Árvore de decisão final

Como era de esperar a árvore escolheu Titulo Agreg 2 = 2 equivalente a “Senhora” como o principal atributo. Em segundo lugar estão Fare (valor da passagem) e Pclass= 0 (1ª Classe).


Vemos que não somente a performance tem valor alto, como também os outros indicadores como AUC, a curva ROC e f measure.


Ensemble

Como último passo aplicamos o operador stacking que combina os melhores modelos. Usamos os 4 melhores modelos, sendo que o algoritmo Logistic Regression faz a melhor escolha a cada observação.




Como mencionamos no início, este modelo, com alguns parâmetros ajustados nos coloca entre os 7% melhores na competição do Kaggle.

3 Dimensões

Inteligência Artificial nas Empresas

Al. das Papoulas, 147 - Santana de Parnaíba - Alphaville, SP 06539-180 - (11) 4153 6004  - (11) 9 9795 9765

michel@3dimensoes.com.br