Machine Learning · Insper

Regressão Logística

Um escore linear espremido numa probabilidade

O primeiro classificador do curso e o neurônio de toda rede neural

De números a categorias

classesexemplos
binária2, codificadas 0 e 1aprovado/reprovado, fraude/legítimo, maligno/benigno, sobreviveu/morreu
multiclasse\(k > 2\)espécies de íris, dígito 0–9, categoria de produto

passo 1: uma probabilidade

"este passageiro sobrevive com probabilidade 0,94"

passo 2: um limiar

"0,94 ≥ 0,5, então: sobreviveu"

Mantenha os dois passos separados. Você já tem as peças: o escore linear e o gradiente descendente. Novidades: a sigmoide, a entropia cruzada e as chances.

O caminho desta aula

  1. Por que não a retauma reta falha ao classificar
  2. Escore → probabilidadesigmoide, fronteira de decisão, chances (odds)
  3. Perda e treinoentropia cruzada, não erro quadrático; gradiente descendente
  4. Além da retafronteiras curvas; muitas classes com softmax
  5. Probabilidade → rótuloo limiar é uma escolha; quando usar o modelo
Cada etapa responde a uma pergunta: por que uma reta não serve para classificar? → como um escore vira uma probabilidade legível? → como medir o erro e aprender os pesos? → e se a fronteira for curva ou houver mais classes? → como uma probabilidade vira uma decisão?
Etapa 1 · por que uma reta não serve para classificar?

Por que não uma reta?

23 estudantes, horas de estudo, aprovado (1) ou reprovado (0). Ajuste uma regressão linear e chame de "aprovado" tudo o que ficar acima de 0,5.

Depois acrescente cinco estudantes que estudaram de 25 a 45 horas e passaram, como qualquer um esperaria.

Preveja. Esses cinco são casos fáceis e rotulados corretamente. Eles deveriam mudar onde a reta cruza 0,5?

Pontos corretos prejudicam a reta

À esquerda, nos 23 estudantes a reta vai de −0,23 a 1,18 e cruza 0,5 em 6,67 h. À direita, cinco aprovados distantes achatam a reta, levam o cruzamento a 8,66 h e dobram os erros; a curva logística continua cruzando em 6,75 h
reta: saídasreta: cruza 0,5reta: erroslogística: cruza 0,5logística: erros
23 estudantes−0,23 a 1,186,67 h26,75 h2
+ 5 aprovados distantes0,31 a 1,398,66 h46,75 h2

Dois problemas, uma cura

a reta sai de [0, 1]

−0,23 para uma hora, 1,18 para doze: não são probabilidades; "quão seguro está o modelo?" fica sem resposta

pontos corretos a puxam

os mínimos quadrados querem a reta perto dos distantes: ela achata e os erros vão de 2 para 4, por causa de dados que concordavam com o modelo

Um estudante com 45 horas está na parte plana da curva logística, com probabilidade ≈ 1: não há mais nada a corrigir, então quase não puxa. Toda a ideia está nessa parte plana.
Etapa 2 · como um escore vira uma probabilidade legível?

Da reta à probabilidade

Mantenha o escore linear:

\[ z = w^\top x + b \]

e esprema-o com a sigmoide:

\[ \hat{p} = \sigma(z) = \frac{1}{1 + e^{-z}} \]

três valores para memorizar

  • \(\sigma(0) = 0{,}5\)
  • \(z\) muito positivo → \(\hat p \to 1\)
  • \(z\) muito negativo → \(\hat p \to 0\)

classe 1 quando \(\hat p \ge 0{,}5\), o mesmo que \(z \ge 0\)

À mão: três novos estudantes

Ajustado nos 23 estudantes: \(w = 2{,}619\) por hora, \(b = -17{,}681\).

Preveja. Antes da tabela: quem passa, quem estudou 4, 6 ou 7,5 horas?
horas \(x\)\(z = 2{,}619x - 17{,}681\)\(e^{-z}\)\(\hat p = 1/(1+e^{-z})\)classe
4−7,20513460,0010 (reprova)
6−1,9677,1490,1230 (reprova)
7,51,9620,14060,8771 (passa)

Uma calculadora basta. No scikit-learn, predict_proba é literalmente sigmoid(decision_function).

A sigmoide, lida em horas

A sigmoide com os três estudantes: 4 h recebe 0,001, 6 h recebe 0,123, 7,5 h recebe 0,877; o eixo de cima mostra a mesma curva em horas
O ponto mais íngreme, \(\hat p = 0{,}5\), fica em \(-b/w = 6{,}75\) horas. Menos de duas horas de cada lado levam de "quase certamente reprova" a "quase certamente passa". Um \(w\) maior deixa a transição mais abrupta.

A fronteira de decisão é uma reta

Dois atributos: \(z = w_1x_1 + w_2x_2 + b\). Onde \(z = 0\) (probabilidade 0,5) é uma reta: um classificador linear.

À esquerda, a reta 1,83·x₁ + 1,37·x₂ − 0,27 = 0 com curvas de probabilidade paralelas. À direita, a probabilidade de cada ponto numa só curva σ(2,29·d) da distância com sinal

200 pontos: \(w = (1{,}832;\ 1{,}371)\), \(b = -0{,}266\), \(\lVert w\rVert = 2{,}288\).

A probabilidade só depende da distância à reta

Afaste-se da fronteira na direção de \(w\), partindo de dois pontos diferentes dela:

distância com sinal \(d\)−100,512
\(\hat p\), de qualquer partida0,0920,50,7580,9080,99
\[ \hat p = \sigma(\lVert w\rVert\, d) \]
  • \(w\) é perpendicular à fronteira e aponta para a classe 1.
  • As curvas de mesma probabilidade são retas paralelas à fronteira.
  • \(\lVert w\rVert = 2{,}29\): a uma unidade da reta o modelo já tem 90,8% de certeza.

Chances (odds): a linguagem das apostas

probabilidade \(p\)chance \(p/(1-p)\)em palavras
0,753"3 para 1": em 4 casos, 3 a favor e 1 contra
0,51"1 para 1": tanto faz
0,20,25"1 para 4": em 5 casos, 1 a favor e 4 contra
\[ \frac{\hat p}{1 - \hat p} = e^{z} \qquad\Longleftrightarrow\qquad z = \ln \frac{\hat{p}}{1 - \hat{p}} = w^\top x + b \]
O escore é o log da chance, o logit. O modelo é linear no log da chance, não na probabilidade.

Uma unidade a mais multiplica a chance

Um modelo com \(w = 0{,}8\), \(b = -4\):

\(x\)\(z = 0{,}8x - 4\)\(\hat p = \sigma(z)\)chance\(e^{z}\)
4−0,80,3100,4490,449
50,00,5001,0001,000
6+0,80,6902,2262,226
\[ \frac{\text{chance}(x+1)}{\text{chance}(x)} = e^{w} = e^{0{,}8} = 2{,}226 \]
A leitura correta: uma unidade a mais de \(x_j\) multiplica a chance por \(e^{w_j}\), em qualquer ponto da curva, mantidos os outros atributos fixos.

No modelo das horas

\(e^{w} = 13{,}727\)

horas\(\hat p\)chance
50,010,01
60,1230,14
70,6581,925

Cada hora a mais multiplica a chance de aprovação por 13,7.

Em probabilidade: +11 pontos de 5 para 6 horas, +54 pontos de 6 para 7.

A variação em probabilidade depende de onde você parte: máxima perto de 0,5, desprezível nas caudas. A razão de chances é o número que médicos e analistas de crédito citam.
Etapa 3 · como medir o erro e aprender os pesos?

A perda: entropia cruzada

Máxima verossimilhança: tornar os rótulos observados os mais prováveis possível. Tome logs e troque o sinal:

\[ J(w, b) = -\frac{1}{n} \sum_{i=1}^{n} \Big[ y_i \log \hat{p}_i + (1 - y_i) \log (1 - \hat{p}_i) \Big] \]
Só um termo não se anula por exemplo: menos o log da probabilidade que o modelo deu à verdade.

À mão: quatro previsões

Preveja. Qual das quatro custa mais?
\(i\)\(y\)\(\hat p\)probabilidade dada à verdade\(-\ln(\cdot)\)
110,90,90,105
210,60,60,511
300,30,70,357
400,80,21,609

Média: \((0{,}105 + 0{,}511 + 0{,}357 + 1{,}609)/4 = 0{,}646\). O erro confiante (ponto 4) é 62% do total.

Referências: dizer sempre 0,5 custa \(\ln 2 = 0{,}693\); um modelo perfeito custa 0.

Cada classe tem a sua curva

Duas curvas sobre p̂: −ln p̂ para a classe 1 e −ln(1 − p̂) para a classe 0, cruzando em 0,5 com custo ln 2; os quatro exemplos da tabela estão sobre elas

Cada curva é 0 na ponta correta e cresce sem limite na ponta errada: de 0,8 para 0,99 na classe errada, o ponto 4 vai de 1,609 para 4,6.

Por que não o erro quadrático?

(a) a entropia cruzada cresce sem limite, o erro quadrático nunca passa de 1; (b) a entropia cruzada empurra mais forte os piores erros; (c) a entropia cruzada é um só vale convexo, o erro quadrático tem um platô

(a) o preço

o erro quadrático nunca passa de 1: \(\hat p = 0{,}1\) e \(0{,}001\) custam 0,810 e 0,998

(b) o empurrão

quanto pior o erro, mais fraco o gradiente do erro quadrático

(c) a forma

a entropia cruzada é convexa; o erro quadrático tem um platô

(b) O empurrão do gradiente

\[ \frac{\partial L}{\partial z} = \frac{\partial L}{\partial \hat p} \cdot \underbrace{\hat p\,(1 - \hat p)}_{\text{inclinação da sigmoide}} \qquad \text{entropia cruzada: } \frac{\partial L}{\partial z} = \hat p - y \]
\(\hat p\) dado à classe verdadeirainclinação da sigmoideerro quadráticoentropia cruzada
0,50,25−0,250−0,500
0,10,09−0,162−0,900
0,010,0099−0,0196−0,990
0,0010,001−0,0020−0,999
Com erro quadrático, os exemplos que mais precisam de correção são os que ele ignora (500 vezes mais fraco em 0,001). O \(1/\hat p\) da entropia cruzada cancela a inclinação da sigmoide.

(c) A forma da perda

Um só peso, \(\hat p = \sigma(w\,(\text{horas} - 6{,}5))\), nos 23 estudantes. \(w < 0\) aposta que quem estuda mais reprova.

\(w\)−3−10+1+3
erro quadrático0,9000,7820,2500,0450,042
entropia cruzada8,5972,9920,6930,1660,118
A partir de \(w = -3\), o erro quadrático é um platô (0,900 → 0,782); a entropia cruzada desce forte (8,597 → 2,992). E ela é convexa: um só vale, sem mínimos locais.

Simulador: as duas perdas lado a lado

Preveja. Gire \(w\) para o lado errado. Qual perda percebe que algo está muito errado?

Treino por gradiente descendente

\[ \nabla_w J = \frac{1}{n} X^\top (\hat{p} - y), \qquad \frac{\partial J}{\partial b} = \frac{1}{n}\sum_i (\hat p_i - y_i) \]

A mesma forma do gradiente da regressão linear, com \(\hat p = \sigma(Xw + b)\) no lugar de \(Xw\).

  1. forward: \(\hat p = \sigma(Xw + b)\)
  2. perda: a entropia cruzada \(J\)
  3. backward: os gradientes
  4. atualização: \(w \leftarrow w - \eta\,\nabla_w J\)
iteraçãoperda
00,6931
100,3391
1000,2956
10000,2955

Os pesos terminam a menos de 0,0005 dos do scikit-learn (1,8317; 1,3713): uma função convexa tem um só fundo. Os quatro nomes voltam nas redes neurais.

Etapa 4 · e se a fronteira for curva ou houver mais classes?

Fronteiras curvas: construa os atributos

Os círculos: uma classe dentro, a outra em volta. Qualquer reta deixa pedaços do círculo de fora dos dois lados.

Preveja. Dê à regressão logística \(x_1^2\) e \(x_2^2\) em vez de \(x_1\) e \(x_2\). Que forma a fronteira \(z = 0\) pode ter agora?
\[ z = w_1 x_1^2 + w_2 x_2^2 + b = 0 \quad\Longrightarrow\quad \text{com } w_1 \approx w_2 < 0, \text{ um círculo} \]
atributosacurácia no teste
\(x_1, x_2\)0,400
\(x_1^2, x_2^2\)1,000

\(w = (-16{,}83;\ -16{,}00)\), \(b = 9{,}70\): um círculo de raio \(\approx 0{,}77\), entre o círculo de dentro (0,5) e o de fora (1).

Quando a forma não é óbvia

Luas: fronteira reta 91,7%, grau 3 95,8%. Círculos: reta 40,0%, grau 3 95,8%
  • PolynomialFeatures(degree=3): 9 atributos; luas 0,917 → 0,958, círculos 0,400 → 0,958.
  • Nos círculos, os 2 atributos certos (100%) ganham de 9 genéricos: conhecer a forma vence.
  • Os preços: os coeficientes perdem a leitura e mais atributos sobreajustam mais. Escalone depois de expandir.

Multiclasse: softmax

\[ \hat{p}_c = \frac{e^{z_c}}{\sum_{j=1}^{k} e^{z_j}} \]
classe\(z_c\)\(e^{z_c}\)\(\hat p_c\)
A2,07,3890,659
B1,02,7180,242
C0,11,1050,099
soma11,2121,000
  • Um vetor de pesos e um intercepto por classe.
  • Uma diferença de 1 no escore é um fator \(e \approx 2{,}7\) na probabilidade.
  • Com duas classes, a softmax é a sigmoide.

No wine: um quase empate

178 vinhos, 3 cultivares; dois atributos, álcool e flavonoides.

vinhocultivar verdadeiroescoresprobabilidadespredict
006,47; −0,22; −6,250,999; 0,001; 00
1001−0,29; 5,32; −5,020,004; 0,996; 01
1332−3,11; 1,56; 1,550,005; 0,502; 0,4931 ✗
O vinho 133 custa \(-\ln 0{,}493 \approx 0{,}706\), setecentas vezes o vinho 0. Escores lineares + softmax + entropia cruzada é a camada de saída de praticamente todo classificador neural.
Etapa 5 · como uma probabilidade vira uma decisão?

Das probabilidades aos rótulos: o limiar

Preveja. Baixe o limiar de 0,5 para 0,2. O que acontece com a classe 1 perdida e com os alarmes falsos?
limiarclasse 1 previstaclasse 1 perdidaalarmes falsosacurácia
0,21311320,835
0,5971290,895
0,8763170,810
0,5 é uma escolha, não parte do modelo. A acurácia conta os dois erros como igualmente ruins; quando um câncer perdido é pior que um alarme falso, mova o limiar.

Perfil prático

pontos fortes

  • rápida; convexa: a mesma resposta sempre
  • probabilidades razoáveis
  • interpretável pelas razões de chances
  • uma baseline forte

pontos fracos

  • fronteira linear
  • interações acrescentadas à mão
  • lenta com atributos sem escala
  • coeficientes correlacionados instáveis de ler
Avisos de max_iter costumam indicar atributos sem escala. Razão de chances não é razão de probabilidades.

Resumo

  1. \(\hat p = \sigma(w^\top x + b)\): um escore linear espremido em (0, 1); a fronteira é uma reta.
  2. \(e^{w_j}\) multiplica a chance por unidade de \(x_j\).
  3. Entropia cruzada: menos o log da probabilidade dada à verdade; convexa.
  4. Gradiente \(\frac{1}{n}X^\top(\hat p - y)\): forward, perda, backward, atualização.
  5. Curvas pedem atributos; softmax para \(k\) classes; o limiar é uma escolha.
Lab · cerca de 60 min, em duplas

Prevendo a sobrevivência no Titanic

  • Abra o notebook no Colab e salve uma cópia no seu Drive.
  • Em cada passo, responda o Preveja antes de rodar.
  • Simulações: o efeito da idade (passo 5), um atributo por vez (passo 6), a razão de chances é a mesma para todo mundo (passo 7), mexendo no limiar (passo 8).
  • Compare com a saída e a leitura na página da aula.

Ritmo: passos 1 a 4 em 20 min; passos 5 a 7 em 25 min; passo 8 e o fechamento em 15 min.