Machine learning do zero · Aula 4.1 · 20 de 33 aulas prontas · 12 min
Exploração: olhe antes de modelar
Em resumo
Quatro conjuntos com a mesma média, correlação 0,82 e reta não se parecem em nada. Desenhe os dados antes de confiar nos números e de construir um modelo.
Aquecimento Duas perguntas de aulas anteriores. Um minuto, e a aula nunca fica bloqueada.
O módulo 4 começa antes do modelo. Antes de treinar qualquer coisa, olhe para os dados. A análise exploratória de dados (EDA, do inglês exploratory data analysis) é desenhar os dados e calcular resumos simples para ver com o que você está lidando: a forma, os grupos, os pontos longe do resto. Uma média ou uma correlação é um resumo, e um resumo pode esconder justamente o mais importante. Hoje, dois exemplos: os quatro pequenos conjuntos de Anscombe e os pinguins da aula 0.1.
Escolha uma resposta e o seu grau de certeza.
Responda para liberar o experimento.
Experimento interativo
Este experimento interativo funciona em um navegador com JavaScript ativado. O texto ao redor descreve o que ele mostra.
Ver a resposta
Resposta certa: Totalmente diferentes: uma nuvem, um arco, um ponto atípico e um ponto longe do resto
Totalmente diferentes. O conjunto I é uma nuvem em torno da reta. O II fica sobre um arco: uma parábola explica R² = 1,000 da variação de y, a reta só 0,666. No III, dez pontos estão quase exatamente sobre outra reta, mais plana (inclinação 0,345), e um ponto atípico puxa a reta ajustada para si, até uma inclinação de 0,5. No IV, dez pontos têm o mesmo x = 8, e um único ponto em (19; 12,50) define a reta.
Experimente
- Passe pelos conjuntos I–IV. Quais números abaixo dos gráficos mudam e quais continuam iguais?
- Em qual conjunto um único ponto define a reta? O que aconteceria com a reta sem ele?
- Mude para os pinguins e escolha comprimento do bico × altura do bico. Que sinal tem a correlação? Depois divida os pinguins por espécie.
- Veja o mesmo par dividido por ilha. Por que a imagem é diferente da divisão por espécie?
Depois de conferir no lab, vamos dar nome ao que você vê.
A ideia em palavras simples
As estatísticas descritivas, ou seja, a média, a variância, a correlação e a reta de regressão, resumem os dados em poucos números. Um resumo sempre perde alguma coisa. Em 1973 Francis Anscombe montou quatro conjuntos de 11 pontos em que esses números são quase idênticos: a média de x é 9, a de y 7,50, a variância de x 11, a de y 4,12–4,13, a correlação 0,816, a reta y = 3,00 + 0,500·x. No gráfico o conjunto I é uma nuvem, o II um arco, o III uma reta com um ponto atípico e o IV uma coluna vertical com um ponto distante. Uma regressão linear ajustada a cada um dá a mesma reta, embora só descreva com sentido o primeiro.
Os pinguins mostram o mesmo com dados reais. Com os 342 pinguins, a correlação entre o comprimento e a altura do bico é −0,235: quanto mais longo o bico, mais baixo. Dividindo por espécie, o sinal se inverte: Adelie 0,391, Chinstrap 0,654, Gentoo 0,643. Dentro de cada espécie um bico mais longo também é mais alto. Um só número para o conjunto todo descreve uma relação que não existe em nenhum grupo.
Jak to policzono
- Quarteto: Anscombe (1973), The American Statistician. 4 conjuntos de 11 pontos, cópia do repositório seaborn-data. Variância dividida por n − 1.
- Pinguins: Palmer Penguins (Gorman, Williams e Fraser, 2014; pacote palmerpenguins: Horst, Hill e Gorman, 2020), licença CC0. 342 pinguins com medidas do bico, 3 espécies: Adelie 151, Chinstrap 68, Gentoo 123.
- Correlação r: coeficiente de Pearson, de −1 a 1; 0 significa nenhuma relação linear.
- Retas: mínimos quadrados, separadamente para cada conjunto e cada grupo.
Por que funciona
De onde vem o sinal invertido dos pinguins? Os Gentoo têm bicos longos, mas baixos: em média 47,5 mm de comprimento e 15,0 mm de altura. Os Adelie têm bicos curtos e altos: 38,8 e 18,3 mm. Uma só correlação para todos compara sobretudo as espécies entre si: os Gentoo ficam embaixo à direita do gráfico, os Adelie em cima à esquerda, então a reta de todos os pontos desce. Dentro de cada espécie a relação é positiva, porque um pinguim maior tem um bico maior nas duas direções. É o paradoxo de Simpson: quando os grupos diferem nas médias, a relação no todo pode ter o sinal oposto ao de cada grupo.
No quarteto o mecanismo é ainda mais simples. A média, a variância e a correlação são somas sobre os pontos, e arranjos diferentes de pontos dão as mesmas somas, assim como conjuntos diferentes de números têm a mesma média. Os pontos longe do resto puxam mais. No conjunto IV o ponto em x = 19 define sozinho a inclinação, porque os outros 10 pontos têm o mesmo x = 8 e não dizem nada sobre a direção.
Será acaso desta amostra de pinguins? No código abaixo reamostramos os pinguins com reposição 1000 vezes: o mesmo número de pinguins, alguns duas vezes, outros nenhuma. Em 1000 de 1000 reamostragens a correlação com todos é negativa e positiva em cada espécie.
Erro comum
Verdadeiro ou falso: "as estatísticas descritivas bastam; se dois conjuntos têm a mesma média, variância e correlação, eles se parecem". Falso. No lab os quatro conjuntos de Anscombe têm esses números iguais até duas casas decimais e são totalmente diferentes. Os números resumem: não mostram a forma, os grupos nem os pontos isolados que puxam o resultado. Nos pinguins uma só correlação de −0,235 diz "bico mais longo, bico mais baixo", e dentro de cada espécie é o contrário.
Para um modelo isso tem consequências concretas. Uma regressão linear ajustada ao conjunto II prevê uma reta onde os dados formam um arco. Um modelo de pinguins que não conhece a espécie aprende uma relação negativa que não existe em nenhuma espécie. Por isso você primeiro desenha os dados e só depois escolhe o modelo e os atributos.
Quiz
Três perguntas para você se testar. Escolha uma resposta ou abra a resposta embaixo de cada pergunta. No teclado: as setas escolhem, Enter ou Espaço confirma.
Pontos-chave
- Antes de construir um modelo, desenhe os dados: a distribuição de cada atributo, os pares de atributos e os grupos.
- As mesmas médias, variâncias e correlações podem esconder uma nuvem, um arco, um ponto atípico ou um ponto de alavanca.
- Uma relação nos dados inteiros pode ter o sinal oposto ao de cada grupo (paradoxo de Simpson); pinte os gráficos com uma cor por grupo.
- Um único ponto distante pode definir a reta sozinho: verifique o que muda sem ele.
Mais a fundo: fórmula, código, prática
A matemática
Correlação de Pearson: r = Σ(xᵢ − x̄)(yᵢ − ȳ) / √(Σ(xᵢ − x̄)² · Σ(yᵢ − ȳ)²). Reta de mínimos quadrados: b = r · s_y / s_x, a = ȳ − b · x̄. Então a reta depende só das médias, dos desvios-padrão e da correlação: conjuntos que têm esses números em comum têm a mesma reta, seja qual for a aparência.
O paradoxo de Simpson numa correlação vem de dividir a covariância por grupos: cov(x, y) = Σ_g p_g · cov_g(x, y) + Σ_g p_g · (x̄_g − x̄)(ȳ_g − ȳ), onde p_g é a proporção do grupo g. O primeiro termo é a relação dentro dos grupos; o segundo, a relação entre as médias dos grupos. Quando as médias dos grupos ficam numa linha descendente, o segundo termo é negativo e pode superar o primeiro, positivo.
No código (Python)
O mesmo cálculo em pandas: os números do quarteto, a correlação do bico com todos os pinguins e dentro de cada espécie, e 1000 reamostragens com reposição que verificam se o sinal invertido é acaso desta amostra.
import numpy as np
import pandas as pd
q = pd.read_csv("data/raw/anscombe.csv")
for name, d in q.groupby("dataset"):
slope, intercept = np.polyfit(d.x, d.y, 1)
print(f"set {name}: mean x {d.x.mean():.2f}, mean y {d.y.mean():.2f}, variance x {d.x.var():.2f}, variance y {d.y.var():.2f}, r {d.x.corr(d.y):.3f}, line y = {intercept:.2f} + {slope:.3f}x")
df = pd.read_csv("data/raw/penguins.csv").dropna(subset=["bill_length_mm", "bill_depth_mm"])
r = lambda d: d.bill_length_mm.corr(d.bill_depth_mm)
print(f"{len(df)} penguins, bill length vs bill depth: all r = {r(df):.3f}; " + ", ".join(f"{s} {r(g):.3f}" for s, g in df.groupby("species")))
rng = np.random.default_rng(0)
same = 0
for b in range(1000):
s = df.sample(len(df), replace=True, random_state=rng) # reamostragem com reposição: o mesmo número de pinguins, alguns duas vezes
same += r(s) < 0 and all(r(g) > 0 for _, g in s.groupby("species"))
print(f"1000 bootstrap resamples: negative over all and positive in every species in {same}")
Saída
set I: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set II: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.13, r 0.816, line y = 3.00 + 0.500x
set III: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.816, line y = 3.00 + 0.500x
set IV: mean x 9.00, mean y 7.50, variance x 11.00, variance y 4.12, r 0.817, line y = 3.00 + 0.500x
342 penguins, bill length vs bill depth: all r = -0.235; Adelie 0.391, Chinstrap 0.654, Gentoo 0.643
1000 bootstrap resamples: negative over all and positive in every species in 1000
Os quatro conjuntos só diferem na terceira casa decimal. Nos pinguins o sinal invertido não é acaso desta amostra: ele se mantém em 1000 de 1000 reamostragens com reposição.
Baixar o notebook (.ipynb). Abra no Jupyter ou envie para o Google Colab; ele baixa sozinho os dados que faltarem.
Para quem pratica
- Em pandas:
df.describe(),df.isna().sum()edf.groupby("species").mean(). Em seaborn,pairplot(df, hue="species")desenha todos os pares de medidas nas cores dos grupos com uma só chamada. - Olhe a distribuição de cada atributo (histograma), os pares de atributos (gráfico de dispersão) e os dados faltantes antes de dividir ou treinar qualquer coisa.
- Faça a EDA que orienta decisões (escolher atributos, limiares, remover linhas) na parte de treino. Olhar o conjunto de teste para essas decisões é vazamento (aula 4.5).
- Anote o que você viu: grupos, pontos atípicos, códigos estranhos (por ex. 0 no lugar de um dado faltante). É uma lista de coisas para verificar quando o modelo se comportar de forma estranha.
Isto foi útil?
Obrigado! Isso nos ajuda a melhorar.
Vá mais fundo no Atlas
Verbetes da enciclopédia sobre as ideias desta aula: