ML Atlas

Machine learning do zero · Projeto de portfólio · 45 min

Projeto B: uma tabela limpa

Em resumo

Segundo projeto de portfólio: de uma tabela bruta de pinguins (lacunas, categorias), monte um pipeline sem vazamento e ache o vazamento em três alheios.

A tarefa

Você recebe a tabela como foi publicada: 344 pinguins, 2 deles sem nenhuma medida e 11 sem o sexo anotado. Ilha e sexo são palavras, não números. O modelo deve reconhecer a espécie.

  1. Monte um pipeline com blocos: com o que preencher as lacunas, o que fazer com o sexo ausente, como codificar ilha e sexo, se escalona e qual modelo. Em cada passo que pode aprender com as linhas, escolha onde ele é ajustado: no pipeline ou antes da divisão.
  2. Escreva uma frase de justificativa e envie o pipeline ao teste oculto.
  3. Em três pipelines de outras pessoas, aponte o passo que vaza.

Você verifica o pipeline com validação cruzada. O teste oculto o avalia uma vez, no fim.

Dados e divisão

Palmer Penguins (Gorman, Williams e Fraser 2014; pacote palmerpenguins, Horst, Hill e Gorman 2020), licença CC0 1.0: 344 pinguins de três espécies (Adélia, de-barbicha, gentoo) de três ilhas do arquipélago Palmer, na Antártida. Medidas: comprimento e profundidade do bico, comprimento da nadadeira, massa corporal. Além disso, ilha e sexo. palmerpenguins

  • Aprendizado: 258 pinguins (Adélia 114, de-barbicha 51, gentoo 93). Validação cruzada em 5 partes: cada parte é a validação uma vez, e o pipeline aprende com as outras.
  • Teste oculto: 86 pinguins (Adélia 38, de-barbicha 17, gentoo 31), separados uma vez, ao acaso, mantendo a proporção de espécies (semente 1). O pipeline aprende com os 258 e só então avalia o teste.
  • “Antes da divisão” quer dizer: um passo ajustado na tabela inteira, 344 pinguins com o teste oculto incluído. “No pipeline” quer dizer: só nos pinguins com que o modelo aprende (em cada dobra e, no fim, nos 258).

“Oculto” aqui quer dizer “não mostrado na página”, não protegido. O código da página é público e qualquer pessoa pode lê-lo. Seu navegador conta os envios, então apagar os dados do site zera o limite. É um exercício de disciplina, não uma prova.

Como ser aprovado

A aprovação é automática, por três regras:

  • pipeline sem vazamento: cada passo que aprende com as linhas (a média ou a mediana das lacunas, o sexo mais frequente, a média e a dispersão do escalonador) fica no pipeline. Um passo que olha uma linha por vez (a constante “desconhecido”, remover uma coluna) pode ficar em qualquer lugar;
  • acurácia no teste oculto maior que a das duas regras simples: “sempre a espécie mais comum” (44,2% no teste) e “uma pergunta”, uma árvore de profundidade 1 que pergunta se a nadadeira mede no máximo 207,5 mm (77,9%);
  • só o primeiro envio conta, e só a primeira escolha em cada um dos três pipelines de outras pessoas: é preciso acertar três vazamentos de três. Você tem 3 envios, mas os seguintes são “depois do fato”: mostram o resultado do teste e não mudam a aprovação.

Por que o vazamento é verificado na estrutura, e não no número. Com os pinguins, um vazamento desses quase não mexe no resultado: em cada um dos 2304 pipelines que dá para montar aqui, mover passos do pipeline para antes da divisão muda a acurácia de CV em no máximo 0,8 ponto percentual. O número não avisa, então o pipeline é julgado pela construção, como numa revisão de código.

A ferramenta calcula o CV sozinha, então a validação não pode ser burlada. O que pode ser burlado é o teste: enviar, ver o resultado e ajustar. Por isso só o primeiro envio conta. Antes do envio, a ferramenta mostra a faixa habitual: de CV − 4 a CV + 4 pontos percentuais. Essa foi a dispersão do teste em torno do CV para os pipelines de exemplo em 200 outras divisões aleatórias (95% dos casos). Um pinguim no teste vale 1,2 ponto.

Os pipelines de exemplo sem vazamento são aprovados em 100% dessas 200 divisões. kNN sem escalonar é aprovado só em 35%: a massa corporal em gramas abafa as outras medidas, então na CV esse pipeline (75,7%) perde até para “uma pergunta” (79,0%), e a sorte da divisão decidiria a aprovação. Não há ranking: só você vê o seu resultado.

Seu pipeline

A ferramenta funciona no navegador com JavaScript ativado. Sem ele, monte o pipeline no notebook abaixo.

Três pipelines de outras pessoas

Cada um destes pipelines faz validação cruzada com os 344 pinguins, e em cada um um passo vaza: são três dos oito tipos de vazamento da aula sobre vazamento de dados (Kapoor e Narayanan 2023). Depois da escolha, você vê o tipo, o conserto e quanto o vazamento muda nos pinguins.

A caça aos vazamentos funciona no navegador com JavaScript ativado.

Cartão de conclusão

Depois da aprovação, você pode baixar um cartão (PNG). Você digita seu nome nesta página, o cartão é feito no seu navegador e o nome nunca vai para o endereço da página nem para um servidor. “Compartilhar no LinkedIn” passa só o endereço desta página.

Para quem programa: o notebook

O notebook faz o mesmo no scikit-learn: o mesmo conjunto (o arquivo CSV do repositório seaborn-data, fixado em um commit), as mesmas 86 linhas do teste oculto (dadas por número), as mesmas escolhas dos blocos da página, validação cruzada em 5 partes, a verificação de vazamento pela estrutura e a regra de aprovação. Rode a célula do teste uma vez, depois de escolher: conta a primeira execução. Nos exemplos verificados, o kNN dá os mesmos números da página; uma árvore pode diferir em pinguins isolados, porque o scikit-learn desempata de outro jeito.

Modelo de README para o GitHub

Um notebook copiado de um tutorial diz pouco sobre você. Um README com suas próprias decisões e limites diz mais. Copie o modelo e preencha cada seção com suas palavras.

Mostrar o modelo
# Uma tabela limpa: um pipeline sem vazamento

Projeto B do curso do ML Atlas: https://mlatlas.org/pt/curso/ml/projeto-b/

## Problema
Reconhecer a espécie de um pinguim pelas medidas, pela ilha e pelo sexo quando a tabela tem lacunas e categorias. <Com suas palavras: para quem e para quê.>

## Dados e licença
Palmer Penguins, Gorman, Williams e Fraser (2014), pacote palmerpenguins (Horst, Hill e Gorman 2020), CC0 1.0, https://allisonhorst.github.io/palmerpenguins/. 344 pinguins, 2 sem medidas, 11 sem sexo.

## Validação
<Como você dividiu os dados, quantas partes tem a validação cruzada, onde cada passo é ajustado (no pipeline ou antes da divisão) e quantas vezes você olhou o teste oculto.>

## Resultado ± dispersão
<O pipeline, a acurácia de CV e a dispersão entre as partes; a acurácia no teste.>

## Linha de base
<A acurácia de “sempre a espécie mais comum” e “uma pergunta” nos mesmos dados.>

## O que o modelo não sabe fazer
<Limites: três ilhas, os anos 2007–2009, o que fazer com um pinguim sem medidas, o que fazer com outra espécie.>

## Próximos passos
<O que você verificaria em seguida, e por quê.>