Machine Learning: Avaliação de modelos de classificação
Como saber se o público alvo do seu marketing comprará um produto, antes mesmo de você anunciar?
A ciência de dados
A ciência de dados (ou Data Science) é uma das áreas tecnológicas com maior crescimento nos últimos anos. Por aplicar técnicas abrangentes e sofisticadas de inteligência artificial na resolução de problemas, tornou-se essencial tanto no mundo empresarial quanto na pesquisa científica. Vejamos como ela funciona, de modo geral, com um exemplo.
Muitas vezes, ao nos depararmos com um número imenso de linhas e colunas em um banco de dados, não conseguimos detectar padrões importantes. Máquinas têm um poder especial de organização de informação que pode ser usado neste caso; por exemplo, para prever se o gasto com marketing de uma empresa trará retorno ou não. Este é um caso clássico. Para resolvê-lo, precisamos reunir características tanto dos clientes que compraram quanto dos que não compraram um produto no passado, para decidir onde dispender recursos.
Neste artigo, explico como um cientista de dados trabalha para encontrar padrões e interpretá-los, a fim de encontrar a melhor solução para a empresa junto com a direção e a equipe de marketing. O processo costuma dar-se desta forma: 1) Definição do problema; 2) Peparo dos dados; 3) Criação e avaliação de modelos; 4) Apresentação dos resultados e discussão de estratégias.
Aqui, nos limitaremos à terceira etapa: vamos comentar cada um dos métodos (ou algoritmos) utilizados e, então, escolher o melhor.
Métodos utilizados
- Support Vector Machine (SVM)
- Decision Tree
- K-nearest neighbors (KNN)
- Kernel SVM
- Logistic Regression
- Naive Bayes (Gaussian)
- Random Forest
- XGboost
A imagem a seguir é de um código que escrevi para comparar oito diferentes técnicas de classificação. Os dados foram retirados desta página do GitHub, e dizem se cada pessoa (da qual sabemos a idade e o salário anual) comprou ou não um produto.
As regiões representam o que o método prevê. Em vermelho: uma pessoa com tal idade e tal salário não efetuará a compra. Em verde: uma pessoa com tal idade e tal salário efetuará a compra. Os pontos são dados reais usados para teste (claro, os algoritmos NÃO tiveram acesso a eles.) Ao lado do nome dos métodos, há o valor da proporção de acerto seguida do desvio padrão.
Todo modelo de Machine Learning divide aleatoriamente os dados em dois grupos: treinamento e teste. A proporção de acerto é uma média desta proporção em vários grupos de treinamento e teste diferentes. O desvio padrão mostra o quanto cada resultado depende da escolha do grupo de teste por parte da máquina.
Interpretação do resultado
SVM e Logistic Regression
A primeira coluna possui o que chamamos de modelos lineares. Ou seja, realizam classificações mais simples. São bastante úteis para conjuntos de dados bem divididos — sem clara distribuição probabilística — sendo este um dos motivos para não se recomendar a escolha dos mesmos, neste caso. A sobreposição de valores, contornada em outros modelos, também dificulta o mapeamento dos padrões.
Decision Tree e Random Forest
Random Forest é um conjunto de Decision Trees (daí o nome), do qual pode-se retirar a média das previsões de classificação. Os algoritmos “fatiam” os dados em conjuntos menores, colocando-os em diferentes categorias. Isso pode resultar em uma quantidade maior de regiões vermelhas pequenas “perdidas” entre as verdes, que não fazem muito sentido na prática, mas também não afetam considerável e negativamente a precisão do método. Quando aplicada no conjunto de teste, Decision Tree apresentou baixa performance. Já a Random Forest, performance intermediária, evidenciando a necessidade de relevância estatística. Com o conjunto correto de dados, ambas funcionam muito bem: o kinect, do Xbox, foi treinado com Random Forest.
XGboost
O famoso código vencedor de diversas competições na plataforma Kaggle é, quase sempre, uma boa opção para quem está na dúvida. Se olharmos com atenção, vemos que é um algoritmo otimizado de Decision Tree — por suas características visuais — e traz melhores predições. Apesar do desempenho intermediário, neste caso, pode atingir resultados muito melhores, quando fornecida a combinação correta de parâmetros.
K-nearest Neighbors (KNN)
Este algoritmo pode ser bastante pesado em algumas configurações, mas certamente deve ser levado em consideração. Por basear-se em distâncias até seus vizinhos semelhantes, consegue fluir — com continuidade e cautela — para regiões mais afastadas do “centro de massa” da informação. Está entre os três melhores modelos para este conjunto de dados.
Naive Bayes
Este algoritmo é bastante eficiente por utilizar métodos probabilísticos, e tem como base o Teorema de Bayes. Sua curva é suave, permitindo um melhor ajuste se comparado a modelos lineares. Naive Bayes é bastante útil para casos onde a distribuição é mais uniforme — como no caso de fortes dependências entre as variáveis e a predição — e aproximadamente Gaussiana.
Kernel SVM
Este algoritmo consagrou-se como campeão. É uma configuração do SVM (originalmente linear) que possui alguns truques como o kernel RBF (radial basis function), treino e teste em várias amostras diferentes (k-fold cross validation) e combinação de vários parâmetros distintos (grid search). Dado o desvio padrão, em alguns grupos de teste acertou até 97% das previsões. Definitivamente, para este projeto, um cientista de dados recomendaria este modelo.
Conclusão
A performance de um modelo é totalmente dependente do conjunto de dados e do objetivo traçado nas etapas iniciais do processo. Além disso, cada caso exige uma rigorosa busca por parâmetros ideais que sejam testados em várias amostras diferentes, para que não tenhamos uma baixa relevância estatística na avaliação.
Redes neurais artificiais
Além dos métodos descritos acima, que são padrões de Machine Learning, existe a possibilidade de se utilizar uma técnica chamada Artificial Neural Network (ANN).
Como sub-área de Machine Learning, esta inteligência artificial busca imitar o funcionamento do cérebro humano. Através de camadas de neurônios artificiais, aprende com os dados e gera resultados surpreendentes.
Resolvi testar um modelo de ANN nos dados deste artigo e, por incrível que pareça, consegui resultados melhores que o Kernel SVM, antigo campeão!
Esta imagem é da predição realizada pelo cérebro artificial. Testando em dez conjuntos de dados aleatórios, atingiu a média de 91% de precisão com, pasmem!, um desvio padrão de apenas 1%. Definitivamente, eu confiaria neste modelo.
Redes neurais vêm crescendo nos últimos anos, ampliando os limites do Machine Learning.
Gostou? Não gostou? Deixe um comentário, uma dúvida ou sugestão/correção. Postagem original no LinkedIn.