Machine learning do zero · Aula 2.1 · 8 de 33 aulas prontas · 10 min
Classificação: traçando uma fronteira
Em resumo
Um classificador transforma medidas numa categoria. A regressão logística dá uma probabilidade e uma fronteira, mostradas com duas espécies de pinguins.
Aquecimento Duas perguntas de aulas anteriores. Um minuto, e a aula nunca fica bloqueada.
Uma bióloga na Antártida mede o bico e as nadadeiras de um pinguim. De que espécie ele é? Essa pergunta é diferente de “quanto a doença vai progredir?”. A resposta não é um número numa escala, e sim uma escolha entre categorias. As retas e os passos morro abaixo das lições anteriores dão conta disso? Dão, com uma virada esperta.
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: 0,3
Com limiar 0,3 a acurácia é 98,6% (3 erros), com 0,5 só 96,8% (7 erros), com 0,9 92,2% e com 0,1 90,4%. O 0,5 não é sagrado: o melhor limiar depende da proporção das classes e de qual erro custa mais.
Experimente
- Olhe primeiro para a fronteira. Encontre os pinguins que estão do lado errado: são os casos que o modelo erra mesmo com a sua melhor reta.
- Mova o controle do limiar de probabilidade para uma das pontas e veja a fronteira se deslocar em direção a uma das espécies. Repare que a reta se move, mas mantém a direção.
- Coloque o limiar perto de um extremo e conte como os erros mudam: agora uma espécie quase nunca é deixada de fora, à custa da outra.
- Encontre pinguins perto da fronteira e compare com os que estão longe. Quais você conferiria à mão?
A ideia em poucas palavras
Vamos ver agora, em palavras simples, o que você acabou de manipular.
Prever uma categoria se chama classificação. Nesta lição usamos o conjunto de dados Palmer Penguins: 344 pinguins de três espécies, de ilhas perto da estação Palmer, na Antártida, cada um com medidas do bico, das nadadeiras e do corpo. Para tudo caber num plano, pegamos duas espécies e duas medidas, de modo que cada pinguim vira um ponto num plano — uma medida na horizontal, a outra na vertical — com a espécie conhecida.
Um classificador precisa dividir esse plano em duas regiões: “aqui a espécie A, ali a espécie B”. A linha entre as regiões é a fronteira de decisão. A regressão logística, apesar do nome, é um modelo de classificação, e a fronteira dela é uma reta.
A virada é que a regressão logística não responde só “A” ou “B”. Ela responde com uma probabilidade: “este pinguim é da espécie B com probabilidade 0,9”. Pense na previsão do tempo. A meteorologista diz “80% de chance de chuva”, e você decide se isso basta para levar guarda-chuva. O modelo faz o papel da meteorologista; o limiar é a sua regra do guarda-chuva.
Por que funciona
Primeiro o modelo calcula uma pontuação exatamente como a regressão linear: uma soma ponderada dos atributos mais um intercepto, z = w₁x₁ + w₂x₂ + b. Essa pontuação pode ser qualquer número, então a função sigmoide a espreme no intervalo de 0 a 1:
p = 1 / (1 + e^(−z))
Uma pontuação muito positiva dá probabilidade perto de 1, uma muito negativa dá probabilidade perto de 0, e uma pontuação exatamente zero dá 0,5. Pinguins longe da fronteira recebem probabilidades confiantes; os que estão perto recebem probabilidades próximas de meio — o modelo está em dúvida, e diz isso.
Os pesos são aprendidos com descida de gradiente, como na lição 4, mas com outra perda. Em vez do erro quadrático, o modelo usa a perda logarítmica (log loss, também chamada de entropia cruzada). Ela quase não pune uma resposta certa e confiante, e pune com muita dureza uma resposta errada e confiante. Isso empurra o modelo a ter certeza só quando os dados justificam.
Por fim, o limiar transforma a probabilidade numa decisão: probabilidade acima do limiar → espécie B; abaixo → espécie A. O padrão costuma ser 0,5, mas nada obriga a usá-lo. Mover o limiar move a fronteira. Como a probabilidade depende da soma ponderada, cada limiar corresponde a uma reta com a mesma direção, só deslocada: a opinião do modelo sobre em que direção as espécies diferem continua a mesma; só muda o quanto de certeza você exige.
Erro comum
Dois erros são comuns. O primeiro é tratar 0,5 como lei. O limiar é uma decisão sobre custos, não parte do modelo; na medicina, você pode aceitar muitos alarmes falsos para deixar passar menos cânceres. O segundo é ler a probabilidade como certeza. Uma probabilidade de 0,97 significa que o modelo espera errar em cerca de três casos assim em cada cem — e só se os dados novos se parecerem com os de treino. Um pinguim de uma população que o modelo nunca viu pode receber uma resposta confiante e errada.
Uma fronteira que acerta a maioria dos pinguins parece boa, mas “a maioria” esconde muita coisa: quais erros, quantos e quão graves? Na próxima lição abrimos a caixa dos erros e aprendemos a contá-los direito.
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
- A classificação prevê uma categoria; a fronteira de decisão separa as regiões de cada classe.
- A regressão logística passa uma soma ponderada pela sigmoide para obter uma probabilidade.
- O limiar transforma uma probabilidade numa decisão e é uma escolha sobre custos, não um 0,5 fixo.
- Mudar o limiar desloca a fronteira da regressão logística sem girá-la.
Mais a fundo: fórmula, código, prática
A matemática
O modelo calcula uma pontuação z = w·x + b e a transforma em probabilidade com a sigmoide, p = 1 / (1 + e^(−z)). Ele é treinado minimizando a perda logarítmica L = −mean( y·ln p + (1 − y)·ln(1 − p) ), cujo gradiente é simplesmente mean((p − y)·x) para cada peso.
- A previsão é a classe 1 quando
p ≥ t. Como a sigmoide é crescente, isso equivale az ≥ ln(t / (1 − t)). - Para
t = 0.5o lado direito é 0, então a fronteira é a retaw·x + b = 0. Parat = 0.3é−0.85: a mesma direção, deslocada para a classe 0. wdefine a direção da fronteira.tapenas a desliza.- Uma resposta errada e confiante custa muito na perda logarítmica, já que
−ln pcresce sem limite quandoptende a 0.
No código (Python)
O modelo do lab: Adelie contra Chinstrap pelo comprimento e pela profundidade do bico, padronizados, avaliado nos mesmos pinguins em quatro limiares:
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
df = pd.read_csv("data/raw/penguins.csv")
df = df[df["species"].isin(["Adelie", "Chinstrap"])].dropna(subset=["bill_length_mm", "bill_depth_mm"])
X, y = df[["bill_length_mm", "bill_depth_mm"]], df["species"] == "Chinstrap"
model = make_pipeline(StandardScaler(), LogisticRegression()).fit(X, y)
p = model.predict_proba(X)[:, 1] # probabilidade de Chinstrap
for t in [0.1, 0.3, 0.5, 0.9]:
wrong = int(((p >= t) != y).sum()) # dizer Chinstrap quando p >= t
print(f"threshold {t}: {wrong} mistakes, accuracy {1 - wrong / len(y):.1%}")
Saída
threshold 0.1: 21 mistakes, accuracy 90.4%
threshold 0.3: 3 mistakes, accuracy 98.6%
threshold 0.5: 7 mistakes, accuracy 96.8%
threshold 0.9: 17 mistakes, accuracy 92.2%
O notebook indicado abaixo da saída baixa os dados sozinho. O melhor limiar aqui é 0,3, não o 0,5 padrão.
Baixar o notebook (.ipynb). Abra no Jupyter ou envie para o Google Colab; ele baixa sozinho os dados que faltarem.
Para quem pratica
predict()sempre usa 0,5. Para usar outro limiar, peguepredict_probae compare você mesmo, como acima, ou envolva o modelo emFixedThresholdClassifier(um limiar fixo) ouTunedThresholdClassifierCV(um limiar escolhido por validação cruzada), ambos no scikit-learn 1.5 ou mais recente.- Escolha o limiar com dados de validação, não com as linhas que você reporta. Os 98,6% daqui são medidos nos mesmos pinguins em que o modelo foi ajustado, então são otimistas.
- Padronize as variáveis. A
LogisticRegressionaplica por padrão regularização L2 (C=1.0), e essa penalidade depende da escala de cada variável. - Compare a acurácia com a baseline da classe majoritária e, quando as classes são desbalanceadas ou os custos diferem, olhe os dois tipos de erro separadamente.
- Uma probabilidade só é tão boa quanto os dados em que foi ajustada. Para um animal de outra população, uma resposta confiante ainda pode estar errada.
Isto foi útil?
Obrigado! Isso nos ajuda a melhorar.
Vá mais fundo no Atlas
Verbetes da enciclopédia sobre as ideias desta aula: