O que é Regressão Logística? Entenda de Forma Simples

A Regressão Logística é um dos algoritmos mais populares em ciência de dados e machine learning quando o objetivo é prever categorias em vez de valores numéricos exatos. Diferente da Regressão Linear (que prevê valores contínuos), a Regressão Logística é ideal para problemas em que queremos prever resultados do tipo “sim” ou “não”, “aprovado” ou “reprovado”, “fraude” ou “não fraude”, ou seja, situações de classificação.

A Regressão Logística é uma poderosa ferramenta para transformar dados em decisões objetivas, especialmente quando precisamos separar ou agrupar informações em categorias. É simples, eficiente e altamente aplicável em diversas áreas, mas, como todo modelo, tem suas limitações. Saber quando e como usá-la é um passo importante para quem quer atuar com ciência de dados.

Conceito Simplificado

O nome pode assustar, mas o conceito é direto: Em vez de ajustar uma linha reta aos dados, a regressão logística calcula a probabilidade de um evento pertencer a uma categoria específica, usando uma curva chamada “sigmoide”. O resultado final é sempre um valor entre 0 e 1 — que pode ser facilmente interpretado como uma probabilidade.

Exemplo de fórmula:

P(y) = 1 / (1 + e^-(a + bx))

Onde:

  • P(y): probabilidade de um resultado (ex: ser aprovado)
  • a e b: coeficientes ajustados pelo modelo
  • e: constante (base do logaritmo natural)
  • x: variável de entrada

Exemplos de Uso

  • Saúde: prever se um paciente tem risco de determinada doença baseado em características clínicas.
  • Finanças: identificar se uma transação é ou não fraudulenta.
  • Negócios: prever se um cliente vai comprar, cancelar assinatura ou não responder a uma campanha.
  • RH: prever se um candidato será aprovado em um processo seletivo.
  • Marketing: saber se um usuário vai clicar em um anúncio.

Pontos Fortes

  • Simplicidade e eficácia: fácil de implementar e interpretar.
  • Interpretação probabilística: além da classificação, fornece a probabilidade do evento.
  • Poucos recursos computacionais: é rápido e funciona bem mesmo em grandes bases de dados.
  • Versatilidade: pode ser adaptado para múltiplas categorias (regressão logística multinomial).

Pontos Fracos

  • Suposição de relação linear: espera uma relação linear entre variáveis preditoras e o logaritmo da chance.
  • Limitação para problemas complexos: pode não captar padrões não-lineares em dados complexos.
  • Sensível a outliers: valores atípicos podem prejudicar o desempenho do modelo.
  • Requer variáveis independentes: alta correlação entre variáveis diminui a qualidade do modelo.

Exemplo de Algoritmo de Regressão Logística em C#

using System;

class RegressaoLogisticaSimples
{
    // Função sigmoide
    public static double Sigmoid(double z)
    {
        return 1.0 / (1.0 + Math.Exp(-z));
    }

    // Função para treinar o modelo
    public static void Treinar(double[] x, double[] y, ref double peso, ref double bias, double learningRate, int epochs)
    {
        int n = x.Length;

        for (int epoch = 0; epoch < epochs; epoch++)
        {
            double gradPeso = 0;
            double gradBias = 0;

            for (int i = 0; i < n; i++)
            {
                double z = peso * x[i] + bias;
                double pred = Sigmoid(z);
                double erro = pred - y[i];

                gradPeso += erro * x[i];
                gradBias += erro;
            }

            // Atualizar os parâmetros
            peso -= learningRate * gradPeso / n;
            bias -= learningRate * gradBias / n;
        }
    }

    public static double Prever(double x, double peso, double bias)
    {
        double z = peso * x + bias;
        double prob = Sigmoid(z);
        return prob >= 0.5 ? 1 : 0; // Classificação binária
    }

    static void Main(string[] args)
    {
        // Exemplo de dados (x: nota de teste, y: 1 = aprovado, 0 = reprovado)
        double[] x = { 1, 2, 3, 4, 5, 6 };
        double[] y = { 0, 0, 0, 1, 1, 1 };

        // Inicialização dos parâmetros
        double peso = 0;
        double bias = 0;
        double learningRate = 0.1;
        int epochs = 1000;

        // Treinar o modelo
        Treinar(x, y, ref peso, ref bias, learningRate, epochs);

        Console.WriteLine($"Peso treinado: {peso:F4}");
        Console.WriteLine($"Bias treinado: {bias:F4}");

        // Fazer previsão para um novo valor
        double novaNota = 3.5;
        double probabilidade = Sigmoid(peso * novaNota + bias);
        int resultado = Prever(novaNota, peso, bias);

        Console.WriteLine($"Para nota = {novaNota}, probabilidade de aprovação = {probabilidade:F2}");
        Console.WriteLine($"Classificação prevista: {(resultado == 1 ? "Aprovado" : "Reprovado")}");
    }
}

Explicação

  • Sigmoid: Função que transforma o valor linear em uma probabilidade entre 0 e 1.
  • Treinar: Treina os parâmetros do modelo usando descida do gradiente.
  • Prever: Classifica a saída baseada na probabilidade.
  • Exemplo: Usa amostras fictícias para demonstrar aprendizado.


Esse exemplo é didático, focando na lógica principal da regressão logística. Bibliotecas especializadas (como ML.NET) trazem muita otimização e facilidade, mas entender como funciona por baixo dos panos é fundamental!

Views: 1

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima