Iterando sem overfitting

Projetando Workflows de Machine Learning em Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Um esquema indicando que um pipeline de Machine Learning pode ser ajustado ainda mais após ir para produção.

Projetando Workflows de Machine Learning em Python

No mesmo esquema, indica-se que mais dados podem ser extraídos da produção para ajudar a ajustar o modelo.

Projetando Workflows de Machine Learning em Python

No mesmo esquema, mostra-se que especialistas do domínio podem trazer novos insights que mudam o modelo, como novas funções de perda.

Projetando Workflows de Machine Learning em Python

No mesmo esquema, o modelo em produção é rotulado como champion e o em desenvolvimento como challenger.

Projetando Workflows de Machine Learning em Python

Resultados da validação cruzada

grid_search = GridSearchCV(pipe, params, cv=3, return_train_score=True)
gs = grid_search.fit(X_train, y_train)
results = pd.DataFrame(gs.cv_results_)
results[['mean_train_score', 'std_train_score', 
   'mean_test_score', 'std_test_score']]
   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
...
Projetando Workflows de Machine Learning em Python

Resultados da validação cruzada

   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
4             0.986            0.003            0.728           0.009
5             0.995            0.002            0.751           0.008

Observações:

  • Pontuação de treino bem maior que a de teste.
  • O desvio padrão da pontuação de teste é alto.
Projetando Workflows de Machine Learning em Python

Um conjunto de dados dividido em treino e teste, com treino ainda fracionado por validação cruzada.

Projetando Workflows de Machine Learning em Python

Um conjunto de dados dividido em treino e validação, com treino ainda fracionado por validação cruzada.

Projetando Workflows de Machine Learning em Python

Detectando overfitting

  • Pontuação de treino na CV >> de teste na CV
    • overfitting na etapa de ajuste do modelo
    • reduzir a complexidade do classificador
    • obter mais dados de treino
    • aumentar o número de folds da CV
  • Pontuação de teste na CV >> pontuação de validação
    • overfitting na etapa de tuning do modelo
    • diminuir o número de folds da CV
    • reduzir o tamanho da grade de parâmetros

Um conjunto de dados dividido em treino e validação, com treino ainda fracionado por validação cruzada.

Projetando Workflows de Machine Learning em Python

Um conjunto de dados dividido em treino e validação, com treino ainda fracionado por validação cruzada.

Projetando Workflows de Machine Learning em Python

Um conjunto de dados dividido em treino, validação e produção, com treino ainda fracionado por validação cruzada.

Projetando Workflows de Machine Learning em Python

"Expert em CV" no seu CV!

Projetando Workflows de Machine Learning em Python

Preparing Video For Download...