Regressão Logística
A regressão logística (logistic regression) é uma ferramenta fundamental em machine learning. Ela é amplamente aplicável e pode ser usada para várias tarefas. Entre seus pontos fortes se destacam sua interpretabilidade. O modelo de regressão logística é relativamente simples e os resultados são fáceis de explicar, mesmo para públicos não técnicos. Para pessoas com conhecimento técnico, entender esse algoritmo é crucial para compreender modelos de machine learning mais avançados.
Algoritmo de Classificação
A regressão logística é uma técnica estatística utilizada para analisar dados e prever a probabilidade de um evento ocorrer com base em uma ou mais variáveis de entrada. Sua aplicação fundamental é determinar um limite de decisão para um problema de classificação binária. Ou seja, situações onde o resultado tem apenas dois valores possíveis, como sim/não, passa/falha ou verdadeiro/falso.
Na figura acima, a linha tracejada pode ser identificada como o limite de decisão. Ele separa instâncias de classes diferentes em cada lado seu. Nossa intenção na regressão logística é encontrar o ajuste adequado do limite de decisão para podermos prever a qual classe um novo conjunto de recursos pode corresponder.
As Bases do Algoritmo
O nome regressão logística pode ser um ponto de confusão para quem estuda esse algoritmo pela primeira vez. Ele tem a palavra regressão, mas esse é um algoritmo tipicamente usado para classificação. Seu nome também faz referência à função logística da matemática que descreve uma curva sigmoide (curva S). Porém, a regressão logística é um algoritmo para classificação linear. Ele é usada principalmente para problemas de classificação binária. Nesses problemas, seu objetivo é prever um de dois desfechos possíveis, tipicamente representados como 0 e 1.
Curva sigmoide com uma reta passando por seu meio e indicando a separação de duas classes (fonte).
Em sua essência, a regressão logística usa uma equação linear para combinar as características que recebe de entrada com pesos (coeficientes), os quais são parâmetros que o modelo deve aprender:
nessa equação, w representa o vetor peso, x é o vetor das características de entrada e b é o termo de viés. Os pesos w determinam a influência de cada característica no resultado do modelo. A saída dessa equação linear, z, pode apresentar qualquer valor real entre o infinito negativo e o infinito positivo.
O papel da Função Sigmoide
Ao contrário da regressão linear que prediz valores contínuos, a regressão logística prevê probabilidades. No entanto, o resultado bruto da equação linear usada em seu modelo não se traduz diretamente em valores entre 0 e 1. Para converter esses valores reais em probabilidades entre 0 e 1, passamos z através da função sigmoide:
A função sigmoide tem uma curva em forma de S que mapeia qualquer valor real para um valor entre 0 e 1. À medida que z se aproxima do infinito positivo, o termo sigmoid(z) se aproxima de 1, indicando uma alta probabilidade da classe positiva (por exemplo, y=1). Quando z se aproxima do infinito negativo, sigmoid(z) se aproxima de 0, indicando uma alta probabilidade da classe negativa (por exemplo, y=0). Quando z=0, sigmoid(z) = 0,5, a probabilidade é igual para ambas as classes.
A saída da função sigmoide, sigmoide(z), representa a probabilidade predita da classe positiva, P(y=1|x). Já a probabilidade da classe negativa é simplesmente 1 – sigmoid(z).
Sigmoide e Classificação Linear?
Embora a função logística (sigmoide) desempenhe um papel crucial na conversão da saída da equação linear em probabilidades, a relação subjacente entre as características e o resultado é modelada linearmente. Isso torna a regressão logística uma ferramenta poderosa e interpretável, pois podemos entender o impacto de cada característica analisando os pesos na equação linear.
Regressão Logística com Scikit-learn
Em Python, Scikit-learn é a biblioteca ideal para implementar de forma rápida classificações com regressão logística. Um exemplo ilustrativo de como usá-la é mostrado a seguir. Nele, precisamos classificar se as frutas de um conjunto são para exportação (1) ou não (0) a partir de seus tamanhos. As variáveis independentes são armazenadas em X e a variável dependente em y. Abaixo está um conjunto de dados de exemplo:
import numpy as np
#X representa o tamanho de frutas
X = np.array([2.21, 2.3, 2.09, 1.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5.88]).reshape(-1,1)
#y representa se uma fruta é para exportação (0 for "Não", 1 for "Sim").
y = np.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
Para realizar a classificação, teremos que importar o módulo do Scikit-learn:
from sklearn import linear_model
O método fit() usa as variáveis independentes e dependentes para encontrar os parâmetros que descrevem a relação do modelo:
model = linear_model.LogisticRegression()
model.fit(X,y)
Com o uso do método fit(), temos um modelo de regressão logística que está pronto para saber se uma fruta é para exportação ou não, com base no seu tamanho:
predicted = model.predict(np.array([3.46]).reshape(-1,1))
print(predicted) # resultado: [1]
Veja também:
O que é machine learning (aprendizado de máquina)?
Como machine learning (aprendizado de máquina) funciona?
Como machine learning (aprendizado de máquina) aprende?
Como implementar um modelo de machine learning?
Como escolher um bom modelo de machine learning?
Classificação e regressão em machine learning
O que é conjunto de dados (dataset) em machine learning?
Onde conseguir conjuntos de dados para machine learning?
Salve localmente conjuntos de dados para machine learning
Pré-processamento de dados em machine learning
Regressão Linear e Machine Learning
Conjuntos de treinamento e teste em machine learning
Função de perda em machine learning
Scikit-learn para machine learning
Matrizes de Confusão em Machine Learning
Floresta aleatória com Scikit-learn
Detecção de anomalias com Isolation Forest
Máquinas de vetores de suporte (SVMs)
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.