ML Atlas

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.
Da aula 1.6: Descida de gradiente: aprender em pequenos passos Por que se usa descida de gradiente em redes neurais em vez de uma fórmula exata?

Ver a resposta

Resposta certa: Porque, na maioria dos modelos, não há fórmula, mas o gradiente se calcula

A descida de gradiente só precisa da inclinação da perda no ponto atual, e ela está disponível até para modelos com bilhões de parâmetros.

Da aula 1.5: Regressão linear: ajustando uma reta Por que a regressão linear eleva os resíduos ao quadrado em vez de simplesmente somá-los?

Ver a resposta

Resposta certa: Para que erros acima e abaixo da reta não se anulem e os grandes custem mais

Quadrados são sempre positivos e crescem rápido, então a pontuação reflete cada erro e pune com força os grandes.

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.

Preveja, depois confira O modelo distingue pinguins Adélia de pinguins-de-barbicha, e o limiar de decisão padrão é 0,5. Qual limiar do controle dá a maior acurácia: 0,1; 0,3; 0,5 ou 0,9?
Qual é o seu grau de certeza?

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.

1. O que a regressão logística devolve antes de qualquer limiar ser aplicado?
Ver a resposta

Resposta certa: Uma probabilidade entre 0 e 1 para uma das classes

A sigmoide transforma a soma ponderada numa probabilidade, e o limiar transforma essa probabilidade numa decisão.

2. Você sobe o limiar de 0,5 para 0,8. O que acontece com a fronteira?
Ver a resposta

Resposta certa: Ela se desloca sem girar; menos pinguins vão para a classe de probabilidade alta

Cada limiar corresponde a uma reta com a mesma direção; um limiar mais exigente a desloca para que só os casos confiantes passem.

3. Por que a regressão logística usa perda logarítmica em vez de erro quadrático?
Ver a resposta

Resposta certa: Porque a perda logarítmica pune com força respostas erradas e confiantes

A perda logarítmica cresce de forma abrupta quando a probabilidade dada à classe verdadeira se aproxima de zero, desencorajando a confiança injustificada.

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 a z ≥ ln(t / (1 − t)).
  • Para t = 0.5 o lado direito é 0, então a fronteira é a reta w·x + b = 0. Para t = 0.3 é −0.85: a mesma direção, deslocada para a classe 0.
  • w define a direção da fronteira. t apenas a desliza.
  • Uma resposta errada e confiante custa muito na perda logarítmica, já que −ln p cresce sem limite quando p tende 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.

Para quem pratica
  • predict() sempre usa 0,5. Para usar outro limiar, pegue predict_proba e compare você mesmo, como acima, ou envolva o modelo em FixedThresholdClassifier (um limiar fixo) ou TunedThresholdClassifierCV (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 LogisticRegression aplica 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.

Vá mais fundo no Atlas

Verbetes da enciclopédia sobre as ideias desta aula: