Modelos de Machine Learning: uma comparação entre os modelos — Parte 1
Introdução
No universo do machine learning temos diversas técnicas e ferramentas para extrair o melhor resultado possível a partir do problema que estamos resolvendo. Mas como podemos saber qual é o melhor algoritmo para aquele problema em específico? Ou ainda, os dados que temos atendem as premissas que o algoritmo pressupõe?
Com base nesses questionamentos, resolvi fazer um levantamento de alguns modelos de machine learning e, para cada um deles, buscar o que eles trazem de premissas de dados, algumas vantagens, desvantagens, como lidam com dados faltantes e outliers além de seus propósitos, tipo de aprendizado e exemplos de uso.
Parte 1
Nesse primeiro artigo, irei abordar 7 modelos, sendo eles:
- Classificador Naive Bayes
- Máquina de Suporte Vetorial
- Regressão Linear
- Regressão Logística
- Árvores de Decisão e Classificação
- Random Forests
Vamos nessa?
Classificador Naive Bayes (Naive Bayes classifier)
Os classificadores Naive Bayes são uma família de classificadores probabilísticos simples, baseados na aplicação do teorema de Bayes, com fortes suposições de independência entre as variáveis. [1]
Premissas
- Variáveis são independentes
Vantagens
- Boa performance com variáveis categóricas
- Convergência rápida: menos tempo de treino
- Bom com datasets para treino de tamanho médio a grande
- Bom para datasets com diversas variáveis
Desvantagens
- Variáveis correlacionadas afetam a performance
Dados Faltantes
- Não necessita tratamento (ignora os dados faltantes)
Outliers
- Robusto a outliers
Propósitos
- Classificação
- Classificação multiclasse
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Análise de sentimentos
- Categorização de documentos
- Filtragem de spams (e-mail)
Máquinas de Suporte Vetorial (Support Vector Machines) — SVM
Uma máquina de vetores de suporte é um conceito na ciência da computação para um conjunto de métodos de aprendizado supervisionado que analisam os dados e reconhecem padrões, usado para classificação e análise de regressão. Em outras palavras, o que uma SVM faz é encontrar uma linha de separação - mais comumente chamada de hiperplano - entre dados de duas classes. Essa linha busca maximizar a distância entre os pontos mais próximos em relação a cada uma das classes. [2]
Premissas
- Nenhuma
Vantagens
- Bom para datasets com mais variáveis que observações
- Boa performance
- Bom ‘modelo de prateleira’, em geral, para vários cenários
- Consegue aproximar funções não lineares complexas
Desvantagens
- Necessita bastante tempo para treino
- Necessita conhecimento e ajustes para determinar qual kernel é o melhor para modelos não lineares
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Robusto a outliers
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Previsão de preço de ações
- Análise de risco para crédito
Regressão Linear (Linear Regression)
Em estatística ou econometria, regressão linear é uma equação para se estimar a condicional de uma variável y dados os valores de algumas outras variáveis x. A regressão, em geral, tem como objetivo tratar de um valor que não se consegue estimar inicialmente. [3]
Premissas
- Relação linear entre variáveis e o target (objetivo)
- Os erros residuais são distribuídos normalmente
- Homocedasticidade
Vantagens
- Interpretabilidade
- Poucos ajustes necessários
Desvantagens
- Variáveis correlacionadas afetam a performance
- Necessário fazer processos de tratamento das variáveis (feature engineering)
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Sensível a outliers
Propósitos
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Previsão de vendas
- Precificação de casas
Regressão Logística (Logistic Regression)
A regressão logística é uma técnica estatística que tem como objetivo produzir, a partir de um conjunto de observações, um modelo que permita a predição de valores tomados por uma variável categórica, frequentemente binária, a partir de uma série de variáveis explicativas contínuas e/ou binárias. [4]
Premissas
- Relação linear entre variáveis e o logaritmo das probabilidades
- Os erros residuais são distribuídos normalmente
- Homocedasticidade
Vantagens
- Interpretabilidade
- Poucos ajustes necessários
Desvantagens
- Variáveis correlacionadas afetam a performance
- Necessário fazer processos de tratamento das variáveis (feature engineering)
Dados Faltantes
- Potencialmente sensível a dados faltantes
Outliers
- Sensível a outliers
Propósitos
- Classificação
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Avaliação de risco
- Prevenção de fraudes
Árvores de Classificação e Regressão (Classification and Regression Trees)
O aprendizado de árvore de decisão é uma das abordagens de modelagem preditiva usadas em estatística, mineração de dados e aprendizado de máquina. Ele usa uma árvore de decisão para ir das observações sobre um item às conclusões sobre o valor-alvo do item. [5]
Premissas
- Nenhuma
Vantagens
- Interpretabilidade
- Podemos avaliar a importância das variáveis
- Menos pré-processamento dos dados necessário
Desvantagens
- Não prediz uma saída contínua (para regressões)
- Não faz predições além do intervalo de respostas utilizadas durante o treino
- Overfitting
Dados Faltantes
- Algumas implementações não necessitam tratamento de dados faltantes (Scikit learn necessita)
Outliers
- Robusto a outliers
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Avaliação de risco
- Prevenção de fraudes
Random Forest
Random Forest ou random decision forests são um método de aprendizagem em conjunto para classificação, regressão e outros problemas que funcionam construindo uma infinidade de árvores de decisão no momento do treinamento. Para problemas de classificação, a saída do Random Forest é a classe selecionada pela maioria das árvores. Para problemas de regressão, a média ou previsão média das árvores individuais é retornada. [6]
Premissas
- Nenhuma
Vantagens
- Interpretabilidade
- Retorna a importância das variáveis
- Requer menos pré-processamento dos dados
- Não tem problema de overfit (em teoria)
- Boa performance/acurácia
- Robusta a ruídos
- Poucos ajustes de parâmetros necessários
- Apta para quase todos problemas de machine learning
Desvantagens
- Não prediz uma saída contínua (para regressões)
- Não faz predições além do intervalo de respostas utilizadas durante o treino
- Enviesada para variáveis categóricas com várias categorias
- Enviesada em problemas multiclasse para classes mais frequentes
Dados Faltantes
- Algumas implementações não necessitam tratamento de dados faltantes (Scikit learn necessita)
Outliers
- Robusto a outliers
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Avaliação de risco de crédito
- Prever quebra de peças mecânicas (indústria automobilística)
- Avaliar a probabilidade de desenvolver uma doença crônica (saúde)
- Previsão do número médio de compartilhamentos de mídia social
Para quem chegou até aqui, vou deixar um spoiler para o próximo artigo, no qual falaremos dos seguintes algoritmos:
- Gradient Boosted Trees
- KNN (K-nearest neighbours)
- Adaboost
- Redes Neurais (Neural Networks)
- Clusterização K-means (K-Means Clustering)
- Clusters hierárquicos (Hierarchical Clustering)
- PCA
Referências
[1] https://en.wikipedia.org/wiki/Naive_Bayes_classifier
[2] https://pt.wikipedia.org/wiki/M%C3%A1quina_de_vetores_de_suporte
[3] https://pt.wikipedia.org/wiki/Regress%C3%A3o_linear
[4] https://pt.wikipedia.org/wiki/Regress%C3%A3o_log%C3%ADstica