sexta-feira, 5 de maio de 2017

O que é Regressão Logística?

\(\newcommand{\x}{\textbf{x}}\) \(\newcommand{\R}{\mathcal{R}}\) \(\newcommand{\x}{\textbf{x}}\) \(\newcommand{\y}{\textbf{y}}\)

Ao trabalhar com Regressão Logística nunca me lembro exatamente qual é o formato das funções de erro e se os labels são \(\{0, 1\}\) ou \(\{-1, 1\}\). Resolvi então criar este post detalhando todas as contas feitas para chegar nas diversas expressões usadas para definir a Regressão Logística. Primeiramente, supomos que temos um conjunto de treinamento \(\{(x_i, y_i)\}_{i=1}^N, x_i \in \R^m\) e iremos explorar tanto o caso em que \(y_i \in \{0, 1\}\) como o caso em que \(y_i \in \{-1, 1\}\). Denotamos \(\x\) e \(\y\) as variáveis correspondentes aos padrões de entrada \(x_i\) e aos rótulos \(y_i\).

Primeiramente, o quê é a Regressão Logística? Em outros textos do blog (veja mais em Resumo de mínimos quadrados parte 1 e parte 2) falamos um pouco sobre a Regressão Linear, um método para estimar parâmetros de uma função linear \(f:\R^m \rightarrow \R\). Os coeficientes \(w\) de \(f\) são determinados pelo seguinte problema de otimização.

\begin{equation} \min_{w \in \R^m} ||Xw - y||^2 = \sum_{i=1}^m (w^T x_i - y_i)^2, \end{equation}

Ou seja, a Regressão Linear minimiza a soma (ou média) dos erros ao quadrado (e por isso também é chamada de método dos mínimos quadrados, Least Squares em inglês). Este tipo de erro é adequado quando \(\y\) é uma variável contínua, pois o erro medido leva em conta a distância entre o valor predito \(w^T \x\) e o esperado \(\y\). Não é este o caso quando \(y_i\) é um conjunto discreto (e pequeno) de valores.

A Regressão Logística estima \(f\) para os casos em que \(\y\) é discreto usando probabilidades. Como podem ser frequentes os casos em que dois exemplos \(x_i\) e \(x_j, x_i = x_j\), possuem rótulos diferentes \(y_i \neq y_j\), vamos estimar as probabilidades \(P(\y=1 | x)\) e \(P(\y=0|x)\) (ou \(\y=-1\)). Decidimos o valor de \(f\) com base nas probabilidades calculadas.

\begin{equation} f(\x) = \begin{cases} 1 & P(\y = 1 | \x) > 0.5 \\ 0 \textrm{ ou } -1 & c.c. \end{cases} \end{equation}

Veremos que, assim como a Regressão Linear, a Regressão Logística é um modelo linear em \(\x\) e que podemos computar \(f\) sem calcular explicitamente as probabilidades \(P(\y=y|\x)\).

A motivação que costuma ser encontrada nos livros para a Regressão Logística é a de querermos modelar o log da razão entre as probabilidades como uma função linear. Eu acho isto confuso e nunca pensaria nisto, então bolei a seguinte intuição.

Gostaríamos de modelar \(P(\y=1|\x)\) como um afunção linear. A primeira opção seria usar

\begin{equation} P(\y=1|\x) = w^T \x, \end{equation}

porém isto claramente é um problema, já que \(w^T \x\) pode ser negativo. Podemos resolver isto usando exponenciação.

\begin{equation} P(\y=1|\x) = e^{w^T \x} \end{equation}

Continuamos fazendo uma combinação linear das variáveis de entrada, mas agora no expoente. Isto evita que as probabilidades sejam negativas, mas \(e^{w^T \x}\) pode ser tão grande quanto quisermos. Podemos então dividir isto por \(1+e^{w^T \x}\)! O resultado será sempre menor que 1 e maior que 0, resultando em

\begin{equation} P(\y = 1 | \x) = \frac{ e^{w^Tx} }{1 + e^{w^Tx} }. \end{equation}

Esta função tem o seguinte formato:


By Qef (talk) - Created from scratch with gnuplot, Public Domain, https://commons.wikimedia.org/w/index.php?curid=4310325


Um vetor de pesos \(w \in \R^m\) induz a função de decisão \(f_w(\x) = 1[P(\y = 1 | \x) > 0.5]\), como visto anteriormente. Porém, note que se \(w^T x = 0\), então

\begin{equation} \frac{ e^{w^Tx} }{1 + e^{w^Tx} } = \frac{e^0}{1+e^0} = \frac{1}{2}. \end{equation}

Portanto, \(P(\y = 1 | \x) > 0.5 \Leftrightarrow w^T \x > 0\)! Não precisamos calcular explicitamente \(P(\y = 1 | \x)\). As diferenças entre as duas formulações começam a aparecer neste ponto.

Labels \(\{0, 1\}\)

Neste caso, basta definir a função de decisão como \(f_w(x) = \frac{sign(w^T x) + 1}{2}\) . Se \(sign(w^Tx) = 1\) então \(f_w(x) = 1\), se \(sign(w^Tx) = -1\) \(f_w(x) = 0\).

Podemos definir o vetor de pesos \(w \in \R^m\) como o estimador de máxima verossimilhança da amostra \(\{(x_i, y_i)\}\). Queremos, portanto, resolver o seguinte problema de otimização:

\begin{equation} \max_{w \in \R^m} \prod_{i=1}^{N} P(\y=y_i|x_i) \end{equation}

Ao invés de maximizar a verossimilhança diretamente, é mais fácil maximizar seu log. Isto transforma o produtório em um somatório, resultando na seguinte expressão.

\begin{equation} \begin{aligned} \max_{w \in \R^m} & \sum_{i=1}^{N} \log P(\y=y_i|x_i) = \\ & \sum_{i=1}^{N} y_i \log P(\y=1|x_1) + (1 - y_i) \log P(\y=0|x_i) \end{aligned} \label{eq:min-log-01} \end{equation}

Examinando cada termo \(P(\y=y_i|x_i)\) separadamente para os casos \(y_i=1\) e \(y_i=0\), temos que

\begin{equation} \begin{aligned} \log P(\y=1|x_i) = & \log \left(\frac{e^{w^T x_i}}{1+e^{w^T x_i}} \right) = \\ & \log e^{w^T x_i} - \log (1 + e^{w^T x_i}) = \\ & w^T x_i - \log (1 + e^{w^T x_i}) \end{aligned} \end{equation}

e

\begin{equation} \begin{aligned} \log P(\y=0|x_i) = & \log \left(\frac{1}{1+e^{w^T x_i}} \right) = \\ & \log 1 - \log (1 + e^{w^T x_i}) = \\ & - \log (1 + e^{w^T x_i}) \end{aligned} \end{equation}

Colocando essas expressões de volta na equação anterior obtemos

\begin{equation} \begin{aligned} \max_{w \in \R^m} & \sum_{i=1}^{N} y_i \log P(\y=1|x_1) + (1 - y_i) \log P(\y=0|x_i) = \\ & \sum_{i=1}^{N} y_i (w^T x_i - \log (1+e^{w^T x_i} ) + (1 - y_i) (-\log (1+e^{w^T x_i})) = \\ & \sum_{i=1}^{N} y_i w^T x_i - y_i \log (1+e^{w^T x_i}) - \log(1+e^{w^T x_i}) + y_i\log (1+e^{w^T x_i}) = \\ & \sum_{i=1}^{N} y_i w^T x_i - \log (1+e^{w^T x+i}) \end{aligned} \end{equation}

Em Aprendizado de Máquina a maioria dos problemas de otimização são de minimização. Logo, a forma mais comum da Regresssão logística é

\begin{equation} \min_{w \in \R^m} \sum_{i=1}^{N} -y_i w^T x_i + \log(1+e^{w^T x_i}) \label{eq:regr-log-01} \end{equation}

Labels \(\{-1, 1\}\)

Dependendo da fonte estudada pode-se encontrar a Regressão Logística escrita usando labels \(\{-1, 1\}\) ao invés de \(\{0, 1\}\). Isto facilita na hora de definir a a função de decisão \(f(x) = sign(w^T x)\) e não torna o problema necessariamente mais complicado. As definições relativas às funções de probabilidade são iguais:

\begin{equation} P(\y=1|\x) = \frac{ e^{w^T \x} }{1 + e^{w^T \x} }. \end{equation} \begin{equation} P(\y=-1|\x) = \frac{1}{1 + e^{w^T \x} }. \end{equation}

Porém, note que

\begin{equation} \begin{aligned} P(\y=1|\x) = \frac{e^{w^T \x}}{1 + e^{w^T \x}} \\ \frac{e^{-w^T \x}}{e^{-w^T \x}} \frac{e^{w^T \x}}{1 + e^{w^T \x}} = \\ \frac{1}{e^{-w^T \x}(1+ e^{w^T \x})} = \\ \frac{1}{1 + e^{-w^T \x}} \end{aligned} \end{equation}

Esta expressão é idêntica a de \(P(\y=-1|x)\) a menos do sinal nas exponenciações. Como \(y \in \{-1, 1\}\), podemos definir então uma só expressão para as probabilidades.

\begin{equation} \begin{aligned} P(\y=y|\x) = & \frac{1}{1 + e^{-\y w^T \x}} \end{aligned}\end{equation}

Usamos o mesmo método (Máxima Verossimilhança) para encontrar um \(w\) que torne um conjunto de treinamento \(\{(x_i, y_i)\}\) o mais provável possível, mas desta vez usando a expressão acima para as probabilidades. As passagens abaixo iniciam já na log-Máxima Verossimilhança.

\begin{equation}\begin{aligned} \min_{w \in \R^m} & -\sum_{i=1}^N \log P(\y=y_i | x_i) = \\ & -\sum_{i=1}^N \log \frac{1}{1 + e^{-y_i w^T x_i}} = \\ & -\sum_{i=1}^N - \log (1 + e^{-y_i w^T x_i}) = \\ & \sum_{i=1}^N \log (1 + e^{-y_i w^T x_i}) \end{aligned}\end{equation}

Portanto, mostramos acima as duas formas mais comuns da Regressão Logística e vimos as funções de custo usadas em cada um dos casos. Espero que o post tenha sido útil. Comentários e dúvidas são muito benvindos nas seção de comentários abaixo!

Nenhum comentário:

Postar um comentário