Machine Learning · Insper

Regressão Logística

Abordagem fundamental

Como um escore linear vira uma probabilidade, como seus pesos são aprendidos e como lê-los

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 parte

  1. Por que não a retauma reta falha ao classificar
  2. Escore → probabilidadea sigmoide; a fronteira de decisão é uma reta
  3. Ler as chancesum coeficiente multiplica a chance
  4. Perda e treinoentropia cruzada; gradiente descendente, uma iteração à mão
  5. Probabilidade → rótuloo limiar é uma escolha
Cada etapa responde a uma pergunta: por que uma reta não serve para classificar? → como um escore vira uma probabilidade? → o que significa um coeficiente? → como medir o erro e aprender os pesos? → 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, com rótulo correto. Eles deveriam mudar o ponto onde a reta cruza 0,5?

Pontos corretos prejudicam a reta

Esquerda: com 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 para 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 fica na parte plana da curva logística, com probabilidade ≈ 1: não há nada a corrigir, então ele quase não puxa. Toda a ideia está nessa parte plana.
Etapa 2 · como um escore vira uma probabilidade?

Da reta à probabilidade

Mantenha o escore linear (\(w\): pesos, \(x\): atributos, \(b\): intercepto):

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

e esprema-o com a sigmoide na probabilidade prevista \(\hat p\) da classe 1:

\[ \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. Quem passa: 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 (aprova)
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; um \(w\) maior faz a transição mais abrupta. predict_proba é literalmente sigmoid(decision_function).

A fronteira de decisão é uma reta

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

Esquerda: a reta 1,83·x₁ + 1,37·x₂ − 0,27 = 0 com contornos de probabilidade paralelos. Direita: a probabilidade de cada ponto numa só curva σ(2,29·d) da sua 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\), a partir de dois pontos diferentes dela; \(d\) é a distância com sinal até a reta:

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.
Etapa 3 · o que significa um coeficiente?

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} = \frac{1/(1+e^{-z})}{e^{-z}/(1+e^{-z})} = e^{z} \qquad\Longleftrightarrow\qquad z = \ln \frac{\hat{p}}{1 - \hat{p}} = w^\top x + b \]
O escore é o log da chance, o logito. 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)} = \frac{e^{w(x+1)+b}}{e^{wx+b}} = 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} = e^{2{,}619} = 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 se 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 4 · 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. Multiplique sobre os \(n\) exemplos, 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 em cada 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\)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.

Duas curvas em função de 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 vale 0 na ponta certa e cresce sem limite na ponta errada. Dizer sempre 0,5 custa \(\ln 2 = 0{,}693\); um modelo perfeito custa 0.

Treino por gradiente descendente

Para um exemplo, a regra da cadeia através de \(\hat p = \sigma(z)\), com \(\sigma'(z) = \hat p(1-\hat p)\), dá \(\partial L/\partial z = \hat p - y\). Em média sobre as \(n\) linhas da matriz de atributos \(X\):

\[ \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\), \(b \leftarrow b - \eta\,\partial J/\partial b\), com taxa de aprendizado \(\eta\)

Uma iteração, à mão

Quatro dos 23 estudantes (4 h reprova, 6,5 h aprova, 7 h reprova, 9 h aprova), palpite \(w = 1\), \(b = -5\), \(\eta = 0{,}1\). Preveja. Qual estudante empurra a curva com mais força e para que lado?

Em 200 pontos: o mesmo fundo do scikit-learn

As mesmas quatro etapas, 2.000 vezes, nos 200 pontos do slide da fronteira, com \(\eta = 0{,}5\) e pesos zero na partida:

iteraçãoperda
00,6931
100,3391
1000,2956
10000,2955
Os 200 pontos com a reta de fronteira ajustada e os contornos de probabilidade paralelos a ela
Começa em \(\ln 2\) (todo \(\hat p = 0{,}5\)) e termina em \(w = (1{,}8315;\ 1{,}3718)\), a menos de 0,0005 do scikit-learn, \((1{,}8317;\ 1{,}3713)\): uma perda convexa tem um só fundo. Os quatro nomes voltam nas redes neurais.
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 os pontos da classe 1 perdidos? 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 deixar passar um câncer é pior que um alarme falso, mova o limiar.

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\); a variação em probabilidade depende de onde se parte.
  3. Entropia cruzada: menos o log da probabilidade dada à verdade.
  4. Gradiente descendente: forward, perda, backward (\(\hat p - y\)), atualização; começa em \(\ln 2\).
  5. O limiar é uma escolha: movê-lo troca um erro pelo outro.
Lab fundamental · cerca de 35 min, em duplas

Quem sobreviveu ao Titanic? Passos 1 a 6

  • 891 passageiros, sete colunas cruas: um pipeline com imputação, one-hot e escalonamento; depois as probabilidades e um passageiro aberto à mão.
  • Notebook no Colab: nada para baixar. Salve uma cópia no seu Drive.
  • Em cada passo, responda o Preveja antes de rodar.
  • Simulações: o efeito da idade (passo 5) e um atributo por vez (passo 6).

Ritmo: passos 1 a 4 em 20 min; passos 5 e 6, com as suas simulações, em 15 min.