Ir para o conteúdo

Regressão Logística

Apesar do nome, a regressão logística (Cox, 1958; com raízes na curva logística de Verhulst, 1838) é o algoritmo de classificação canônico — o primeiro modelo padrão para qualquer problema de classificação, presença constante em escoragem de crédito e medicina, e a porta de entrada conceitual para as redes neurais: um único neurônio é uma regressão logística.

Da reta à probabilidade

A regressão linear produz qualquer número real — inútil como probabilidade. A regressão logística mantém o escore linear

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

e o comprime pela função sigmoide (logística):

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

Função sigmoide e perda de entropia cruzada

Preveja a classe 1 quando \(\hat{p} \geq\) limiar (0,5 por padrão → \(z \geq 0\)). O conjunto \(w^\top x + b = 0\) é um hiperplano: a regressão logística é um classificador linear — sua fronteira de decisão é uma reta/plano no espaço de atributos (fronteiras curvas exigem atributos construídos, por exemplo polinomiais, ou outros modelos).

Chances (odds) e interpretabilidade

Inverter a sigmoide mostra que o escore linear é o log das chances (log-odds):

\[ \log \frac{\hat{p}}{1 - \hat{p}} = w^\top x + b \]

Então cada aumento unitário em \(x_j\) multiplica as chances (odds) \(\frac{p}{1-p}\) por \(e^{w_j}\). Um coeficiente de 0,7 em "número de pagamentos atrasados" significa que cada um multiplica as chances de inadimplência por \(e^{0.7} \approx 2\) — o tipo de afirmação que reguladores e médicos exigem, e a razão de a regressão logística persistir em domínios de alto risco (Explicabilidade).

A perda: entropia cruzada

O erro quadrático sobre probabilidades cria uma paisagem não convexa. Em vez disso, maximize a verossimilhança dos rótulos observados — equivalentemente, minimize a log loss / entropia cruzada binária:

\[ J(w) = -\frac{1}{n} \sum_{i=1}^{n} \Big[ y_i \log \hat{p}_i + (1 - y_i) \log (1 - \hat{p}_i) \Big] \]

Cada termo se lê: o log da probabilidade que o modelo atribuiu ao que de fato aconteceu. Como mostra o painel direito acima, estar confiantemente errado (\(\hat{p} \to 0\) quando \(y = 1\)) custa ilimitadamente caro — o modelo é empurrado para uma honestidade calibrada, não apenas para rótulos corretos.

Treino por gradiente descendente

Não existe forma fechada, mas \(J\) é convexa — um único mínimo global. O gradiente é surpreendentemente limpo:

\[ \nabla_w J = \frac{1}{n} X^\top (\hat{p} - y) \]

idêntico em forma ao gradiente da regressão linear, com \(\hat{p} = \sigma(Xw)\) substituindo \(Xw\). O mesmo laço de gradiente descendente se aplica sem mudanças:

import numpy as np

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

w = np.zeros(X.shape[1])
for _ in range(n_epochs):
    p = sigmoid(X @ w)
    w -= eta * X.T @ (p - y) / len(y)

Regularização

Tudo de Ridge e Lasso se transfere: adicione \(\alpha \lVert w \rVert_2^2\) (L2) ou \(\alpha \lVert w \rVert_1\) (L1) à perda. É tão essencial — especialmente com muitos atributos, onde pesos não regularizados podem crescer sem limite em dados separáveis — que o scikit-learn regulariza por padrão, parametrizado por \(C = 1/\alpha\):

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(C=1.0,            # C MENOR = regularização MAIS FORTE
                           penalty='l2',
                           class_weight='balanced',   # para desbalanceamento
                           max_iter=1000)
model.fit(X_train_scaled, y_train)
model.predict_proba(X_test_scaled)[:, 1]     # probabilidades para análise ROC/PR

Ajuste \(C\) em uma grade logarítmica por validação cruzada; escalone os atributos primeiro (regularizado + baseado em gradiente ⇒ duplamente necessário).

Multiclasse: softmax

Para \(k\) classes, aprenda um vetor de pesos por classe e normalize os escores com o softmax:

\[ \hat{p}_c = \frac{e^{z_c}}{\sum_{j=1}^{k} e^{z_j}}, \qquad z_c = w_c^\top x + b_c \]

A entropia cruzada se generaliza literalmente. O LogisticRegression lida com isso automaticamente (multi_class='multinomial' é o padrão moderno). Essa construção exata — escores lineares + softmax + entropia cruzada — é a camada de saída de essencialmente todo classificador neural, incluindo os LLMs escolhendo seu próximo token.

Perfil prático

Pontos fortes rápido; convexo (treino confiável); probabilidades bem calibradas; interpretável via razões de chances; baseline forte; escala para milhões de amostras
Fraquezas fronteira linear (precisa de engenharia de atributos para curvas); tem dificuldade quando interações dominam; sensível a atributos não escalonados sob regularização
Recorra a ela quando você precisa de uma baseline sólida e explicável; as probabilidades importam (risco, triagem); os atributos são informativos individualmente

Material de aula

Notebook da aula (em português)

Notebook prático usado em sala — Aula 16 — Regressão Logística com Gradiente Descendente e Regularização: abrir no Colab


Quiz