Machine Learning · Insper

Seleção de Modelos

Abordagem avançada

Escolher entre muitos modelos sem se enganar com a sorte

O caminho desta parte

  1. Uma escala comumo número efetivo de parâmetros
  2. Regressão à médiapor que o escore do vencedor cai ao medir de novo
  3. Comparar famíliasuma busca sobre todas as famílias, não existe almoço grátis, a navalha de Occam
  4. O fluxo completocinco passos, uma porta de mão única antes do teste, depois o lab
Cada etapa responde a uma pergunta: como comparar a complexidade de famílias diferentes? → por que o vencedor piora na medida seguinte? → qual família vence e como desempatar? → onde entra o conjunto de teste?
Etapa 1 · Como comparar a complexidade de famílias diferentes?

Uma escala comum: parâmetros efetivos

Para modelos cuja previsão é uma soma ponderada dos rótulos de treino: some o peso que cada ponto dá ao próprio rótulo.

\(n\): pontos de treino · \(p\): colunas · \(k\): vizinhos no k-vizinhos mais próximos (k-NN, do inglês k-Nearest Neighbors) · \(\alpha\): a penalidade do Ridge.

modeloparâmetros efetivoscom \(n = 30\)
mínimos quadrados, \(p\) colunas\(p\)
k-NN\(n / k\)\(k = 30\): 1 · \(k = 3\): 10 · \(k = 1\): 30
Ridgecai de \(p\) em direção a 1 (o intercepto, sem penalidade) à medida que \(\alpha\) crescecontínuo
Uma penalidade transforma a escada dos graus numa rampa: é por isso que ela é um botão tão conveniente. \(k = 1\) gasta um parâmetro por ponto: memorização.
Etapa 2 · Por que o vencedor piora na medida seguinte?

Regressão à média

Prova 1 contra prova 2 para 10 mil estudantes

Nota = habilidade (desvio-padrão, dp, 8) + sorte do dia (o dp dela na primeira coluna). Confiabilidade: \(r = \frac{\sigma^2_\text{habilidade}}{\sigma^2_\text{habilidade} + \sigma^2_\text{sorte}} = \frac{8^2}{8^2 + \text{sorte}^2}\).

Preveja. Os 10% de cima na prova 1 mantêm a nota na prova 2? E quando a sorte cresce?

dp da sorte\(r\)prova 1prova 2
20,9484,483,5
60,6487,680,9
160,20101,476,1
Esperado na prova 2: média + \(r \times\) vantagem. Sorte de dp 6: vantagem \(= 87{,}6 - 70 = 17{,}6\) e \(r = 64/100 = 0{,}64\), então \(70 + 0{,}64 \times 17{,}6 \approx 81{,}3\) (simulado: 80,9). Só a parte da vantagem que é habilidade se repete.

Na seleção de modelos

  • Uma configuração é um estudante; seu desempenho futuro, a habilidade; sua nota de validação cruzada (CV, do inglês cross-validation), uma prova com sorte (os folds, a amostra).
  • Perto do topo de uma grade, as configurações quase não diferem (pouca habilidade) e o ruído da CV continua o mesmo: confiabilidade baixa.
  • Mais candidatos → vencedor mais extremo → mais sortudo. Em puro ruído, o melhor de 100 caiu de 61,2% para 50,9%.
Nunca reporte a nota que escolheu o vencedor. Meça de novo em dados que não participaram da escolha: o teste trancado ou a CV aninhada. Folds novos sobre as mesmas linhas só mostram quanto do ranking é sorte dos folds.
Etapa 3 · Qual família vence e como desempatar?

A família como hiperparâmetro


pipe = Pipeline([('scale', StandardScaler()), ('model', LogisticRegression())])
param_grid = [                                     # uma lista de grades: uma por família
    {'model': [LogisticRegression(max_iter=5000)], 'model__C': np.logspace(-3, 3, 7)},
    {'model': [KNeighborsClassifier()], 'model__n_neighbors': [1, 3, 5, 9, 15, 25, 51]},
    {'model': [SVC()], 'model__C': [0.1, 1, 10, 100], 'model__gamma': ['scale', 0.01, 0.1]},
    {'model': [DecisionTreeClassifier(random_state=0)], 'scale': ['passthrough'],
     'model__max_depth': [1, 2, 3, 4, 6, 8, 12, None]},
]
  

Retornos de radar: 34 configurações, 4 famílias, uma busca. Máquina de vetores de suporte (SVM, do inglês support vector machine) 0,946 · árvore 0,897 · logística 0,883 · k-NN 0,866.

A vaga model recebe estimadores diferentes; 'passthrough' desliga uma etapa. Mesmo cv para todas: dá para comparar fold a fold.

Não existe almoço grátis

conjuntologísticak-NNSVMárvore
ionosphere (real)0,8830,8660,9460,897
breast cancer (real)0,9790,9650,9790,930
credit-g (real)0,7610,7350,7600,719
linear, 40-d0,8200,7100,8050,725
duas luas0,8530,9000,8950,887
regra alinhada aos eixos0,6400,6360,6860,938
Toda família chega ao topo (sozinha ou empatada) em algum lugar e perde feio em algum lugar (Wolpert, 1996). Cada uma aposta numa estrutura — o seu viés indutivo.

As apostas de cada família

Regressão logística

a fronteira é um hiperplano

k-NN

pontos próximos compartilham rótulos

SVM com kernel de função de base radial (RBF, do inglês radial basis function)

a fronteira é suave

Árvore

poucos limiares em poucos atributos

Uma família vence quando sua aposta combina com o problema. Não dá para saber de antemão: por isso a seleção compara famílias, nos mesmos folds.

A navalha de Occam, operacionalizada

  • Breast cancer: logística e SVM, ambas 0,979. Credit-g: 0,761 contra 0,760.
  • Num empate dentro do ruído, fique com o mais simples: 31 números e um produto escalar, contra vetores de suporte e um kernel.
  • Por quê? Um modelo mais flexível tem notas de CV mais ruidosas, então sua vitória apertada tem mais chance de ser sorte da seleção; o mais simples também depende menos da amostra, se sustenta melhor quando os dados mudam e é mais barato de rodar e explicar.
"Mais simples" não é "menos linhas de código": é menos parâmetros efetivos, regularização mais forte, menos atributos.
Etapa 4 · Onde entra o conjunto de teste?

O fluxo completo

Cinco etapas da seleção de modelos, com uma porta de mão única antes do teste
Tudo à esquerda da porta usa só as linhas de treino. Testar, olhar o número e voltar para "melhorar" transforma o teste em validação.
Lab avançado · cerca de 30 min, em duplas

Selecionar e testar, passos 7 a 9

  • Mesmo notebook, mesma sessão: os passos usam pre, cv, rmse e candidates dos passos 1 a 6.
  • Uma busca com Ridge, k-NN e árvore; reembaralhar os folds para ver quanto do ranking é sorte; abrir o teste uma vez.
  • Notebook no Colab, a partir do passo 7.
  • Simulações: o empate, fold a fold (passo 7) e quão precisa é a nota de teste? (passo 9).

Ritmo: passo 7 e a primeira simulação em 12 min; passo 8 em 8 min; passo 9 e a segunda simulação em 10 min.