Modelos Ensemble
Um ensemble é um modelo que combina vários modelos de aprendizado de máquina para criar um modelo mais poderoso.
Modelo supervisionado, mas podemos aplicar em modelos não supervisionados.
Tipos de Ensemble
Bagging: Utiliza o mesmo algoritmo de aprendizado de máquina para treinar subconjuntos em diferentes conjuntos de dados.
Boosting: Utiliza o mesmo algoritmo de aprendizado de máquina para treinar subconjuntos em diferentes conjuntos de dados, mas o treinamento é feito de forma sequencial.
Stacking: Utiliza diferentes algoritmos de aprendizado de máquina e combina suas previsões.
Begging
Pode ser chamado de pasting.
Begging é um aggregation
Begging = Bootstrap + Aggregation
Begging é um método de ensemble que utiliza o mesmo algoritmo de aprendizado de máquina para treinar subconjuntos em diferentes conjuntos de dados.
O begging com árvores de decisão é conhecido como Random Forest
Características:
- Roda em paralelo
- Também classifica em paralelo
- Costuma ter bom desempenho sem grandes ajustes de hiperparâmetros
- Robusto a outliers
Bootstrapping
Bootstrapping é uma técnica de amostragem que consiste em criar várias amostras de um conjunto de dados com reposição.
- Retirar uma amostra aleatória de tamanho N da base
- Calcular o parâmetro e armazenar a informação
- Repetir o processo M vezes (1000x)
- Calcular a média dos parâmetros e o erro do desvio padrão estimador.
Grid
O grid é uma matriz de hiperparâmetros que serão testados. O modelo é treinado com todas as combinações de hiperparâmetros. O modelo com o melhor desempenho é escolhido.
Podemos utilizar o random search para cobrir mais combinações de hiperparâmetros.
O random search seleciona aleatoriamente os hiperparâmetros.
Stacking
Stacking é um método de ensemble que utiliza diferentes algoritmos de aprendizado de máquina e combina suas previsões em um modelo final.
Boosting
Boosting é um método de ensemble que utiliza o mesmo algoritmo de aprendizado de máquina para treinar subconjuntos em diferentes conjuntos de dados, mas o treinamento é feito de forma sequencial.
O Gradient Boosting é um dos algoritmos de boosting mais populares. Ele é um método de ensemble que utiliza o gradiente descendente para minimizar o erro.
XGBoost é uma implementação do Gradient Boosting.
Hiperparâmetros:
- Gama: Redução minima de perda
- Eta: Learning rate
- Colsample_bytree: Porcentagem de colunas a serem amostradas
- Subsample: Porcentagem de linhas a serem amostradas
- Nrounds: Número de arvores sequenciais
- Max_depth: Profundidade máxima da árvore
- Min_child_weight: Peso mínimo da folha
LightGBM é uma versão mais eficiente do XGBoost.
Conclusão
Existem infinitas possibilidades de combinações de modelos de ensemble. O importante é entender o problema e escolher a melhor combinação de modelos para resolvê-lo.
Estes modes são difíceis de interpretar, mas são muito poderosos.
O Cross validation entra no lugar do step-wise
Quando temos muitas variáveis, podemos utilizar PCA para reduzir a dimensionalidade.
XGBoost é um modelo delicado que leva um tempo maior de tunning.
Quanto maior o valor do feature_importances_ para uma determinada característica, maior a sua importância na decisão final do modelo.