Pre-requisito: Linear Regression
Este artigo discute os fundamentos da Regressão Logística e a sua implementação em Python. A regressão logística é basicamente um algoritmo de classificação supervisionado. Num problema de classificação, a variável(ou output) alvo, y, pode tomar apenas valores discretos para um dado conjunto de características(ou inputs), X.
Contrário à crença popular, a regressão logística é um modelo de regressão. O modelo constrói um modelo de regressão para prever a probabilidade de que uma determinada entrada de dados pertença à categoria numerada como “1”. Assim como a regressão linear assume que os dados seguem uma função linear, a regressão logística modela os dados usando a função sigmóide.
Regressão logística torna-se uma técnica de classificação somente quando um limiar de decisão é trazido para a figura. A definição do valor limiar é um aspecto muito importante da regressão logística e depende do problema de classificação em si.
A decisão do valor do limiar é afetada principalmente pelos valores de precisão e recall. Idealmente, queremos que tanto a precisão como a recordação sejam 1, mas este raramente é o caso. No caso de uma troca Precision-Recall usamos os seguintes argumentos para decidir sobre a debulha:-
1. Baixa Precisão/Alta Chamada: Em aplicações onde queremos reduzir o número de falsos negativos sem necessariamente reduzir o número de falsos positivos, escolhemos um valor de decisão que tenha um valor baixo de Precisão ou alto de Rechamada. Por exemplo, em uma aplicação de diagnóstico de câncer, não queremos que nenhum paciente afetado seja classificado como não afetado sem dar muita atenção se o paciente estiver sendo diagnosticado erroneamente com câncer. Isto porque, a ausência de câncer pode ser detectada por outras doenças médicas, mas a presença da doença não pode ser detectada em um candidato já rejeitado.
2. Alta Precisão/ Baixa Recall: Em aplicações onde queremos reduzir o número de falsos positivos sem necessariamente reduzir o número de falsos negativos, escolhemos um valor de decisão que tenha um valor alto de Precisão ou baixo de Rechamada. Por exemplo, se estamos classificando os clientes se eles reagirão positiva ou negativamente a um anúncio personalizado, queremos ter certeza absoluta de que o cliente reagirá positivamente ao anúncio porque, caso contrário, uma reação negativa pode causar uma perda potencial de vendas do cliente.
Baseado no número de categorias, a regressão logística pode ser classificada como:
- binomial: a variável alvo pode ter apenas 2 tipos possíveis: “0” ou “1” que pode representar “win” vs “loss”, “pass” vs “fail”, “dead” vs “alive”, etc.
- multinomial: a variável alvo pode ter 3 ou mais tipos possíveis que não são ordenados (ou seja, os tipos não têm significado quantitativo) como “doença A” vs “doença B” vs “doença C”.
- ordinal: trata de variáveis alvo com categorias ordenadas. Por exemplo, um resultado de teste pode ser categorizado como: “muito pobre”, “pobre”, “bom”, “muito bom”. Aqui, cada categoria pode receber uma pontuação como 0, 1, 2, 3.
Primeiro de tudo, exploramos a forma mais simples de Regressão Logística, ou seja, Regressão Logística Binomial.
Regressão Logística Binomial
Considerar um conjunto de dados de exemplo que mapeia o número de horas de estudo com o resultado de um exame. O resultado pode levar apenas dois valores, ou seja, aprovado(1) ou reprovado(0):
Hours(x) | 0,50 | 0,75 | 1,00 | 1,25 | 1,50 | 1,75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pass(y) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
So, nós temos
i.e. y é uma variável alvo categórica que pode ter apenas dois tipos possíveis: “0” ou “1”.
A fim de generalizar o nosso modelo, assumimos que:
- O conjunto de dados tem variáveis de características ‘p’ e observações ‘n’.
- A matriz de característica é representada como:
Aqui, denota os valores de característica para observação.
Aqui, estamos mantendo a convenção de deixar = 1. (Continue lendo, você entenderá a lógica em alguns momentos). - A observação, , pode ser representada como:
- representa a resposta prevista para a observação, ou seja . A fórmula que usamos para calcular é chamada de hipótese.
Se você tiver passado por Regressão Linear, você deve lembrar que em Regressão Linear, a hipótese que usamos para predição foi:
onde, são os coeficientes de regressão.
Deixe o coeficiente de regressão matriz/vetor, seja:
Então, de uma forma mais compacta,
A razão de tomar = 1 é bastante clara agora.
Necessávamos fazer um produto de matriz, mas não havia
a multiplicação real na fórmula da hipótese original. Então, definimos = 1.
Agora, se tentarmos aplicar a Regressão Linear no problema acima, é provável que obtenhamos valores contínuos usando a hipótese que discutimos acima. Também, não faz sentido tomar valores maiores que 1 ou menores que 0,
Então, algumas modificações são feitas na hipótese para classificação:
onde,
é chamada função logística ou função sigmóide.
Aqui está um gráfico mostrando g(z):
Nós podemos inferir do gráfico acima que:
- g(z) tende para 1 como
- g(z) tende para 0 como
- g(z) é sempre limitado entre 0 e 1
Então, agora, nós podemos definir probabilidades condicionais para 2 rótulos(0 e 1) para observação como:
Podemos escrever mais compactamente como:
Agora, definimos outro termo, probabilidade dos parâmetros como:
Probabilidade não é nada mais que a probabilidade dos dados(exemplos de treinamento), dado um modelo e valores específicos dos parâmetros(aqui, ). Ele mede o suporte fornecido pelos dados para cada valor possível do parâmetro. Obtemos isso multiplicando tudo por .
E para facilitar os cálculos, tomamos a probabilidade logarítmica:
A função custo para regressão logística é proporcional ao inverso da probabilidade dos parâmetros. Assim, podemos obter uma expressão para função de custo, J usando a equação de probabilidade logarítmica como:
e nosso objetivo é estimar para que a função de custo seja minimizada !!
Usando algoritmo de descida de gradiente
Primeiro, tomamos derivadas parciais de w.r.t cada uma para derivar a regra de descida de gradiente estocástico(apresentamos aqui apenas o valor derivado final):
Aqui, y e h(x) representam o vector de resposta e o vector de resposta previsto(respectivamente). Também, é o vetor representando os valores de observação para a característica.
Agora, a fim de obter min ,
onde é chamado de taxa de aprendizagem e precisa ser definido explicitamente.
Deixe-nos ver a implementação python da técnica acima em um conjunto de dados da amostra (faça o download aqui):
Nota: A descida de gradiente é uma das muitas maneiras de estimar .
Basicamente, estes são algoritmos mais avançados que podem ser facilmente executados em Python uma vez que você tenha definido sua função de custo e seus gradientes. Estes algoritmos são:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algoritmo)
- L-BFGS(Como BFGS mas usa memória limitada)
- Conjugate Gradient
Vantagens/desvantagens de usar qualquer um destes algoritmos sobre a descida de gradiente:
- Vantagens
- Não é necessário escolher a taxa de aprendizagem
- Correr mais rápido (nem sempre o caso)
- Possibilidade de aproximação numérica do gradiente para você (nem sempre funciona bem)
>
- Desvantagens
- Mais complexo
- Mais de uma caixa negra a menos que você aprenda as especificações
Regressão logística multinomial
Na Regressão logística multinomial, a variável de saída pode ter mais de duas saídas discretas possíveis. Considere o conjunto de dados de dígitos. Aqui, a variável de saída é o valor do dígito que pode tirar valores de (0, 12, 3, 4, 5, 6, 7, 8, 9).
A seguir está a implementação do Multinomial Logisitc Regression usando scikit-learn para fazer previsões no conjunto de dados de dígitos.
Logistic Regression model accuracy(in %): 95.6884561892
Finalmente, aqui estão alguns pontos sobre regressão logística a ponderar:
- NÃO assume uma relação linear entre a variável dependente e as variáveis independentes, mas assume uma relação linear entre o logit das variáveis explicativas e a resposta.
- Variáveis independentes podem ser até mesmo os termos de potência ou algumas outras transformações não lineares das variáveis independentes originais.
- A variável dependente NÃO precisa ser distribuída normalmente, mas normalmente assume uma distribuição de uma família exponencial (por exemplo, binomial, Poisson, multinomial, normal,…); a regressão logística binomial assume a distribuição binomial da resposta.
- A homogeneidade da variância NÃO precisa ser satisfeita.
- Os erros precisam ser independentes mas NÃO distribuídos normalmente.
- Usa estimativa de máxima verosimilhança (EML) em vez dos mínimos quadrados comuns (OLS) para estimar os parâmetros e, portanto, depende de aproximações de amostra grande.
Este artigo é contribuído por Nikhil Kumar. Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar seu artigo por e-mail para [email protected]. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.
.