Modelos de Machine Learning: Uma comparação entre os modelos — Parte 2
Parte 2
Dando continuidade ao tema do artigo anterior, iremos abordar alguns algoritmos um pouco diferentes, como por exemplo, problemas não supervisionados e de redução de dimensionalidade.
Gradient Boosted Trees
Gradient Boosting é uma técnica de aprendizado de máquina para regressão, classificação e outros problemas, que produz um modelo de previsão na forma de um conjunto de modelos de previsão fracos, normalmente árvores de decisão. Quando uma árvore de decisão é o algoritmo utilizado, o modelo resultante é chamado de Gradient Boosted Trees, que geralmente supera o Random Forest. Ele constrói o modelo em uma forma de estágio, como fazem outros métodos de boost, e os generaliza, permitindo a otimização de uma função de perda diferenciável arbitrária (loss function). [1]
Premissas
- Nenhuma
Vantagens
- Boa performance
- Apta para quase todos problemas de machine learning
- Consegue aproximar a maioria das funções não-lineares
Desvantagens
- Propenso a overfitting
- Necessita alguns ajustes de parâmetros
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
- As mesmas aplicações que o Random Forest tem
K-nearest neighbors (K-mais próximos vizinhos)
Em estatística, o algoritmo de Vizinhos K-mais Próximos (k-NN) é um método de classificação não paramétrico. É usado para classificação e regressão. Em ambos os casos, a entrada consiste nos k exemplos de treinamento mais próximos no conjunto de dados. A saída depende se k-NN é usado para classificação ou regressão. [2]
Premissas
- Nenhuma
Vantagens
- Boa performance
Desvantagens
- Demorado para realizar as predições
- Suscetível à alta dimensionalidade (muitas variáveis)
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Robusto a outliers
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Expressão genética
- Interação proteína-proteína
- Recuperação de conteúdo (de páginas da web, por exemplo)
AdaBoost
AdaBoost, abreviação de Adaptive Boosting, é um meta-algoritmo de classificação estatística. Ele pode ser usado em conjunto com muitos outros tipos de algoritmos de aprendizagem para melhorar o desempenho. A saída dos outros algoritmos de aprendizagem (‘modelos de previsão fracos’) é combinada em uma soma ponderada que representa a saída final do classificador otimizado. AdaBoost é adaptativo no sentido de que os modelos de previsão fracos subsequentes são ajustados em favor das instâncias classificadas incorretamente pelos classificadores anteriores. [3]
Premissas
- Nenhuma
Vantagens
- Não ocorre overfitting facilmente
- Poucos parâmetros a serem ajustados
Desvantagens
- Pode ser suscetível a dados ruidosos e outliers
Dados Faltantes
- Consegue tratar dados faltantes
Outliers
- Sensível a outliers
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- O mesmo que Random Forests, mas menos usado, pois XGBoost e LightGBMs são implementações mais populares de Gradient Boosted Machines
Neural Networks (Redes Neurais)
As Redes Neurais Artificiais (RNAs), geralmente chamadas simplesmente de Redes Neurais (NNs), são sistemas de computação vagamente inspirados nas redes neurais biológicas que constituem os cérebros dos animais. [4]
Premissas
- Nenhuma
Vantagens
- Consegue aproximar qualquer função
- Boa performance
Desvantagens
- Muito tempo de treinamento
- Vários parâmetros para ajustar, incluindo arquitetura neural
- Propensa a overfitting
- Pouca interpretabilidade
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Consegue lidar com outliers, mas pode ter a performance afetada se eles forem muitos
Propósitos
- Classificação
- Regressão
Tipo de Aprendizado
- Supervisionado
Exemplos de uso
- Análise de imagens
- Previsões
- Análise de textos
K-means clustering
O agrupamento K-means é um método de quantização vetorial, originário do processamento de sinais, que visa particionar n observações em k clusters em que cada observação pertence ao cluster com a média mais próxima (centros de cluster ou centróide de cluster), servindo como um protótipo do cluster. [5]
Premissas
- Cluster são esféricos
- Clusters têm tamanho similares
Vantagens
- Treinamento rápido
Desvantagens
- Necessário determinar K, o número de clusters
- Sensível a localização inicial dos clusters e a mínimos locais
Dados Faltantes
- Sensível a dados faltantes (no scikit learn é necessário fazer a imputação dos dados faltantes)
Outliers
- Sensível a outliers
Propósitos
- Segmentação
Tipo de Aprendizado
- Não supervisionado
Exemplos de uso
- Segmentação de clientes
- Detecção de outliers
Hierarchical clustering
Na mineração de dados e estatísticas, o Clustering Hierárquico (também chamado de Análise de Cluster Hierárquico ou HCA) é um método de análise de cluster que busca construir uma hierarquia de clusters. As estratégias de clustering hierárquico geralmente se enquadram em dois tipos […][6]
Premissas
- Nenhuma
Vantagens
- Nenhuma informação a priori sobre o número de clusters é necessária
Desvantagens
- O número final de clusters precisa ser definido pelo(a) cientista de dados
- Demorado para ser treinado
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Sensível a outliers
Propósitos
- Segmentação
Tipo de Aprendizado
- Não supervisionado
Exemplos de uso
- Segmentação de clientes
- Análise genética
Principal component analysis
A Análise de Componentes Principais (PCA) é o processo de calcular os componentes principais e usá-los para realizar uma mudança de base nos dados, às vezes usando apenas os primeiros componentes principais e ignorando o resto. [7]
Premissas
- Correlação entre as variáveis
Vantagens
- Captura a maior parte da variação em um número menor de variáveis
Desvantagens
- Número de componentes principais que explicam a maior parte da variação a ser determinada pelo usuário
Dados Faltantes
- Sensível a dados faltantes
Outliers
- Sensível a outliers
Propósitos
- Reduzir a dimensão das variáveis para treinar modelos de machine learning
Tipo de Aprendizado
- Não supervisionado
Exemplos de uso
- Criação de poucas variáveis informativas a partir de muitos dados
Com isso encerro essa série, com dois artigos sobre alguns dos principais modelos de machine learning que temos a nossa disposição e alguns casos de uso para cada um deles.
Qualquer dúvida, sugestão ou crítica, podem me enviar uma mensagem por aqui ou me procurar no LinkedIn.
Referências
[1] https://en.wikipedia.org/wiki/Gradient_boosting
[2] https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
[3] https://en.wikipedia.org/wiki/AdaBoost
[4] https://en.wikipedia.org/wiki/Artificial_neural_network
[5] https://en.wikipedia.org/wiki/K-means_clustering
[6] https://en.wikipedia.org/wiki/Hierarchical_clustering
[7] https://en.wikipedia.org/wiki/Principal_component_analysis