Métodos de ensemble

Praticando perguntas de entrevista de Machine Learning em Python

Lisa Stuart

Data Scientist

Técnicas de ensemble learning

  • Bootstrap Aggregation
  • Boosting
  • Empilhamento de modelos
Praticando perguntas de entrevista de Machine Learning em Python

Medição de erro

Praticando perguntas de entrevista de Machine Learning em Python

Árvores rasas

Praticando perguntas de entrevista de Machine Learning em Python

Árvores altas

Praticando perguntas de entrevista de Machine Learning em Python

Árvores largas

Praticando perguntas de entrevista de Machine Learning em Python

Modelo linear

Praticando perguntas de entrevista de Machine Learning em Python

Viés

Suposição de relação linear (incorreta)

  • Alto viés
  • Underfitting
  • Fraca generalização do modelo
  • Aumentar a complexidade reduz o viés
Praticando perguntas de entrevista de Machine Learning em Python

Modelo complexo

Praticando perguntas de entrevista de Machine Learning em Python

Variância

Modelos de alta complexidade:

  • Alta variância
  • Overfitting
  • Fraca generalização do modelo
Praticando perguntas de entrevista de Machine Learning em Python

Trade-off viés–variância

1 Fonte: Elements of Statistical Learning, de Trevor Hastie, Robert Tibshirani e Jerome Friedman
Praticando perguntas de entrevista de Machine Learning em Python

Bagging (Bootstrap aggregation)

  • Amostras com bootstrap
    • Subconjunto selecionado com reposição
    • A mesma linha pode ser escolhida
  • Modelo criado para cada amostra
  • Fazer a média da saída
  • Reduz a variância

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Praticando perguntas de entrevista de Machine Learning em Python

Boosting

  • Vários modelos construídos sequencialmente
  • Previsões incorretas recebem mais peso
  • Reduz o viés

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Praticando perguntas de entrevista de Machine Learning em Python

Empilhamento de modelos

  • Previsões do Modelo 1
  • Previsões do Modelo 2...
  • Previsões do Modelo N
  • Empilhar para maior acurácia
    • Usa previsões do modelo base (Modelo N) como entrada para o modelo de 2º nível

1 http://supunsetunga.blogspot.com/
Praticando perguntas de entrevista de Machine Learning em Python

Pacote Vecstack

# import modules
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import AdaBoostClassifier
from xgboost import XGBClassifier
from vecstack import stacking

# Create list: stacked_models
stacked_models = [BaggingClassifier(n_estimators=25, random_state=123), AdaBoostClassifier(n_estimators=25, random_state=123)]

# Stack the models: stack_train, stack_test
stack_train, stack_test = stacking(stacked_models, X_train, y_train, X_test, regression=False, mode='oof_pred_bag', 
                                   needs_proba=False, metric=accuracy_score, n_folds=4, stratified=True, shuffle=True, random_state=0, verbose=2)

# Initialize and fit 2nd level model
final_model = XGBClassifier(random_state=123, n_jobs=-1, learning_rate=0.1, n_estimators=10, max_depth=3)
final_model_fit = final_model.fit(stack_train, y_train)

# Predict: stacked_pred
stacked_pred = final_model.predict(stack_test)

# Final prediction score
print('Final prediction score: [%.8f]' % accuracy_score(y_test, stacked_pred))
1 https://towardsdatascience.com/automate-stacking-in-python-fc3e7834772e
Praticando perguntas de entrevista de Machine Learning em Python

Funções de ensemble

Algoritmo Função
Bootstrap aggregation sklearn.ensemble.BaggingClassifier()
Boosting sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Praticando perguntas de entrevista de Machine Learning em Python

Bagging vs boosting

Técnica Viés Variância
Bootstrap aggregation (Bagging) Aumenta Diminui
Boosting Diminui Aumenta
Praticando perguntas de entrevista de Machine Learning em Python

Principais técnicas de ensemble: Múltipla escolha

Qual das afirmações a seguir é verdadeira sobre as três principais técnicas usadas em métodos de ensemble em Machine Learning? Selecione a afirmação verdadeira:

  • Métodos de boosting diminuem a variância do modelo.
  • Métodos de boosting aumentam a capacidade preditiva de um classificador.
  • Bootstrap aggregation, ou bagging, diminui o viés do modelo.
  • O empilhamento de modelos usa as previsões de modelos individuais e as combina para criar um modelo de maior acurácia.
Praticando perguntas de entrevista de Machine Learning em Python

Principais técnicas de ensemble: resposta

Qual das afirmações a seguir é verdadeira sobre as três principais técnicas usadas em métodos de ensemble em Machine Learning? A resposta correta é:

  • O empilhamento de modelos usa as previsões de modelos individuais e as combina para criar um modelo de maior acurácia. (O modelo final obtido a partir das previsões de vários modelos individuais quase sempre supera cada um isoladamente.)
Praticando perguntas de entrevista de Machine Learning em Python

Principais técnicas de ensemble: respostas incorretas

Qual das afirmações a seguir é verdadeira sobre as três principais técnicas usadas em métodos de ensemble em Machine Learning?

  • Métodos de boosting diminuem a variância do modelo. (Boosting diminui o viés e, ao mesmo tempo, pode aumentar a variância para buscar o ponto ideal de melhor generalização.)
  • Métodos de boosting aumentam a capacidade preditiva de um classificador. (Boosting reduz o viés, o que pode ou não aumentar a capacidade preditiva.)
  • Bootstrap aggregation, ou bagging, diminui o viés do modelo. (Bagging diminui a variância.)
Praticando perguntas de entrevista de Machine Learning em Python

Vamos praticar!

Praticando perguntas de entrevista de Machine Learning em Python

Preparing Video For Download...