Path: blob/master/site/pt-br/probability/examples/Generalized_Linear_Models.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Modelos lineares generalizados
Neste notebook, apresentamos os modelos lineares generalizados usando um exemplo funcional, que será resolvido de duas formas diferentes usando dois algoritmos para ajustar de forma eficiente modelos lineares generalizados no TensorFlow Probability: pontuação de Fisher para dados densos e método do gradiente proximal com coordenadas. Comparamos os coeficientes ajustados aos coeficientes verdadeiros e, no caso do método do gradiente proximal com coordenadas, à saída do algoritmo glmnet
similar do R. Por fim, fornecemos maiores detalhes matemáticos e derivações de diversas propriedades essenciais dos modelos lineares generalizados.
Contexto
Um modelo linear generalizado (GLM, na sigla em inglês) é um modelo linear () encapsulado em uma transformação (função de ligação) que conta com uma distribuição de respostas a partir de uma família de exponenciais. A escolha da função de ligação e da distribuição de respostas é bastante flexível, proporcionando grande capacidade de expressão para os modelos lineares generalizados. Confira os detalhes completos, incluindo uma apresentação sequencial de todas as definições e resultados até a construção dos modelos lineares generalizados em notação não ambígua, na seção "Derivação de fatos sobre modelos lineares generalizados" abaixo. Vamos resumir:
Em um modelo linear generalizado, uma distribuição preditiva para a variável de resposta está associada a um vetor de preditores observados . A distribuição tem a seguinte forma:
Aqui, são os parâmetros ("pesos"), é um hiperparâmetro que representa a dispersão ("variância"), e , , , são caracterizados pela família de modelos especificados pelo usuário.
A média de depende de pela composição da resposta linear e pela função de ligação (inversa), isto é:
em que é a função de ligação. No TFP, a função de ligação e a família de modelos são especificadas conjuntamente por uma subclasse de tfp.glm.ExponentialFamily
. Confira alguns exemplos:
tfp.glm.Normal
, também chamada de "regressão linear"tfp.glm.Bernoulli
, também chamada de "regressão logística"tfp.glm.Poisson
, também chamada de "regressão de Poisson"tfp.glm.BernoulliNormalCDF
, também chamada de "regressão probit"
O TFP prefere nomear as famílias de modelos de acordo com a distribuição ao longo de Y
em vez da função de ligação, já que as distribuições tfp.Distribution
são funções de primeira classe. Se o nome da subclasse de tfp.glm.ExponentialFamily
contiver uma segunda palavra, isso indica uma função de ligação não canônica.
Os modelos lineares generalizados têm propriedades marcantes que permitem uma implementação eficiente do estimador de máxima verossimilhança. Uma dessas propriedades são fórmulas simples para o gradiente da log-verossimilhança e para a matriz de informação de Fisher, que é o valor esperado da Hessiana da log-verossimilhança negativa ao fazer uma reamostragem da resposta para os mesmos preditores, isto é:
em que é a matriz cuja ésima linha é o vetor de preditores para a ésima amostra de dados, e é um vetor cuja ésima coordenada é a resposta observada para a ésima amostra de dados. Aqui (grosso modo), e , e o negrito denota a vetorização dessas funções. Confira os detalhes completos sobre as expectativas e variâncias dessas distribuições na seção "Derivação de fatos sobre modelos lineares generalizados" abaixo.
Exemplo
Nesta seção, vamos descrever e demonstrar brevemente dois algoritmos integrados de ajuste de modelos lineares generalizados no TensorFlow Probability: pontuação de Fisher (tfp.glm.fit
) e método do gradiente proximal com coordenadas (tfp.glm.fit_sparse
).
Dataset sintético
Vamos fingir o carregamento de um dataset de treinamento.
Observação: estabeleça conexão a um runtime local.
Neste notebook, compartilhamos dados entre os kernels do Python e do R usando arquivos locais. Para permitir esse compartilhamento, use runtimes na mesma máquina na qual você tenha permissão de ler e gravar arquivos locais.
Sem regularização L1
A função tfp.glm.fit
implementa a pontuação de Fisher, que recebe como alguns de seus argumentos:
model_matrix
=response
=model
= callable que, dado o argumento , retorna a tupla .
Recomendamos que model
seja uma instância da classe tfp.glm.ExponentialFamily
. Existem diversas implementações pré-criadas disponíveis, então, para a maioria dos modelos lineares generalizados comuns, não é necessário escrever código personalizado.
Detalhes matemáticos
A pontuação de Fisher é uma modificação do método de Newton para encontrar a estimativa da máxima verossimilhança:
O método padrão de Newton, que é a procura por zeros do gradiente da log-verossimilhança, seguiria a regra de atualização:
em que é uma taxa de aprendizado usada para controlar o tamanho do passo.
Na pontuação de Fisher, substituímos a Hessiana pela matriz de informação de Fisher negativa:
[Observe que, aqui, é aleatório, enquanto ainda é o vetor de respostas observadas.]
Segundo as fórmulas na seção "Ajuste dos parâmetros de modelos lineares generalizados de acordo com os dados" abaixo, isso é simplificado para:
Com regularização L1
tfp.glm.fit_sparse
implementa um ajustador de modelos lineares generalizados mais adequado para datasets esparsos baseado no algoritmo em Yuan, Ho e Lin, 2012. Confira alguns recursos:
Regularização L1
Sem inversão de matrizes
Poucas avaliações do gradiente e da Hessiana
Primeiro, vamos apresentar um exemplo de uso do código. Os detalhes do algoritmo são mais bem explicados na seção "Detalhes do algoritmo para tfp.glm.fit_sparse
" abaixo.
Observe que os coeficientes aprendidos têm o mesmo padrão de esparsidade que os coeficientes verdadeiros.
Comparação com glmnet
do R
Vamos comparar a saída do método do gradiente proximal com coordenadas ao glmnet
do R, que usa um algoritmo similar.
OBSERVAÇÃO: para executar o código nesta seção, você precisa mudar para um runtime de Colab do R.
Comparação entre R, TFP e coeficientes verdadeiros (observação: volte para o kernel do Python)
Detalhes do algoritmo para tfp.glm.fit_sparse
Apresentamos o algoritmo como uma sequência de três modificações do método de Newton. Em cada uma delas, a regra de atualização de é baseada em um vetor e em uma matriz , que faz a aproximação do gradiente e da Hessiana da log-verossimilhança. No passo , escolhemos uma coordenada a ser alterada e atualizamos de acordo com a regra de atualização:
Essa atualização é um passo similar ao Newton com taxa de aprendizado . Exceto pela parte final (regularização L1), as modificações abaixo diferem apenas na forma como e são atualizados.
Ponto de partida: método de Newton com coordenadas
No método de Newton com coordenadas, definimos e como o gradiente verdadeiro e a Hessiana da log-verossimilhança:
Menos avaliações do gradiente e da Hessiana
Geralmente, é caro computar o gradiente e a Hessiana da log-verossimilhança, então costuma valer a pena fazer a aproximação deles da seguinte forma:
Geralmente, fazemos a aproximação da Hessiana como constante localmente e fazemos a aproximação do gradiente para a primeira ordem usando a Hessiana (aproximada):
Ocasionalmente, faça um passo de atualização padrão conforme acima, definindo como o gradiente exato e como a Hessiana exata da log-verossimilhança, avaliada em .
Substituta a informação de Fisher negativa pela Hessiana
Para reduzir ainda mais o custo dos passos de atualização padrão, podemos definir como a matriz de informação de Fisher negativa (eficiente do ponto de vista computacional ao usar as fórmulas da seção "Ajuste dos parâmetros de modelos lineares generalizados de acordo com os dados" abaixo) em vez da Hessiana exata:
Regularização L1 via método do gradiente proximal
Para incorporar a regularização L1, substituímos a regra de atualização
pela regra de atualização mais geral
em que é uma constante fornecida (o coeficiente de regularização L1), e é o operador de limiarização suave (soft threshold), definido por:
Essa regra de atualização tem as duas propriedades inspiradoras abaixo:
No caso limitante (ou seja, sem regularização L1), essa regra de atualização é idêntica à original.
Essa regra de atualização pode ser interpretada como a aplicação de um operador de proximidade cujo ponto fixo é a solução do problema de minimização com regularização L1
O caso degenerado recupera a regra de atualização original
Para entender (1), observe que, se , então , portanto:
Portanto:
Operador de proximidade cujo ponto fixo é a estimativa de máxima verossimilhança regularizada
Para entender (2), primeiro observe (confira a Wikipedia) que, para qualquer , a regra de atualização
satisfaz (2), em que é o operador de proximidade (confira Yu, em que esse operador é denotado como ). O lado direito da equação acima é computado aqui:
Especificamente, ao definir (observe que (note that , desde que a log-verossimilhança negativa seja convexa), obtemos a regra de atualização:
Em seguida, substitua o gradiente exato por sua aproximação , obtendo:
Portanto:
Derivação de fatos sobre modelos lineares generalizados
Nesta seção, apresentamos maiores detalhes e derivamos os resultados sobre modelos lineares generalizados que foram usados nas seções anteriores. Em seguida, usamos gradients
do TensorFlow para verificar numericamente as fórmulas derivadas para o gradiente da log-verossimilhança e da informação de Fisher.
Pontuação e informação de Fisher
Considere uma família de distribuições de probabilidade parametrizadas pelo vetor de parâmetros , com densidades de probabilidade . A pontuação de um resultado no vetor de parâmetros é definida como o gradiente da log-verossimilhança de (avaliada em ), isto é:
Afirmação: a expectativa da pontuação é zero
Sob condições de regularidade fracas (permitindo passar a diferenciação sob a integral),
Prova
Temos:
em que usamos: (1) regra da cadeia para diferenciação, (2) definição da expectativa, (3) passagem da diferenciação sob o sinal da integral (usando as condições de regularidade), (4) a integral de uma densidade de probabilidade é igual a 1.
Afirmação (informação de Fisher): a variância da pontuação é igual à Hessiana esperada negativa da log-verossimilhança
Sob condições de regularidade fracas (permitindo passar a diferenciação sob a integral),
em que denota a matriz Hessiana, cuja entrada é .
O lado esquerdo dessa equação é chamado de informação de Fisher da família no vetor de parâmetros .
Prova da afirmação
Temos:
em que usamos: (1) regra da cadeia para diferenciação, (2) regra do quociente para diferenciação, (3) regra da cadeia novamente, mas reversa.
Para completar a prova, é suficiente demonstrar que:
Para fazer isso, passamos a diferenciação sob o sinal de integral duas vezes:
Lema sobre a derivada da função de partição logarítmica
Se , e são funções de valor escalar, sendo diferenciável duas vezes, de tal forma que a família de distribuições definida por
satisfaça as condições de regularidade fracas que permitem passar a diferenciação com relação a sob uma integral com relação a , então:
e
(Aqui, denota a diferenciação, então e são a primeira e segunda derivadas de . )
Prova
Para essa família de distribuições, temos . A primeira equação vem então do fato de que . Em seguida, temos:
Família de exponenciais superdispersadas
Uma família de exponenciais superdispersadas (escalares) é uma família cujas densidades assumem a forma de:
em que e são funções de valor escalar conhecidas, e e são parâmetros escalares.
[Observe que é sobredeterminada: para qualquer , a função é completamente determinada pela restrição de que para todos os . Todos os gerados por diferentes valores de devem ser iguais, o que coloca uma restrição nas funções e .]
Média e variância da estatística suficiente
Sob as mesmas condições que em "Lema sobre a derivada da função de partição logarítmica" acima, temos:
e
Prova
De acordo com "Lema sobre a derivada da função de partição logarítmica", temos:
e
O resultado vem então do fato de que a expectativa é linear (), e a variância é homogênea de grau 2 ().
Modelo linear generalizado
Em um modelo linear generalizado, uma distribuição preditiva para a variável de resposta está associada a um vetor de preditores observados . A distribuição é membro de uma família de exponenciais superdispersas, e o parâmetro é substituído por , em que é uma função conhecida, é a resposta linear, e é um vetor de parâmetros (coeficientes de regressão) a serem aprendidos. Em geral, o parâmetro de dispersão também pode ser aprendido, mas, em nossa configuração, tratamos como conhecido. Então, temos:
em que a estrutura do modelo é caracterizada pela distribuição e pela função , que converte a resposta linear em parâmetros.
Tradicionalmente, o mapeamento da resposta linear para a média é denotado assim:
Esse mapeamento precisa ser um-para-um obrigatoriamente, e seu mapeamento inverso, , é chamado de função de ligação para esse modelo linear generalizado. Tipicamente, descrevemos um modelo linear generalizado nomeando sua função de ligação e sua família de distribuições – por exemplo: um "modelo linear generalizado com distribuição de Bernoulli e função de ligação logit" (também conhecido como modelo de regressão logística). Para caracterizar totalmente o modelo linear generalizado, a função também precisa ser especificada. Se é a identidade, então dizemos que é a função de ligação canônica.
Afirmação: expressando em termos da estatística suficiente
Definir
e
Então, temos:
Prova
De acordo com "Média e variância da estatística suficiente", temos:
Fazendo a diferenciação com a regra da cadeia, obtemos
e, de acordo com "Média e variância da estatística suficiente", temos:
A conclusão vem daí.
Ajuste dos parâmetros de modelos lineares generalizados de acordo com os dados
As propriedades derivadas acima são excelentes para ajustar os parâmetros de modelos lineares generalizados de acordo com um dataset. Os métodos quase-Newton, como a pontuação de Fisher, dependem do gradiente da log-verossimilhança e da informação de Fisher, que agora podemos computar de uma forma particularmente eficiente para um modelo linear generalizado.
Digamos que tenhamos os vetores de preditores observados e as respostas escalares associadas . Na forma de matriz, vamos dizer que observamos os preditores e a resposta , em que é a matriz cuja ésima linha é , e é o vetor cujo ésimo elemento é . A log-verossimilhança dos parâmetros é, portanto:
Para uma única amostra de dados
Para simplificar a notação, vamos considerar primeiro o caso de um único ponto de dados, ; em seguida, vamos estender para o caso geral por aditividade.
Gradiente
Temos:
Portanto, pela regra da cadeia:
Separadamente, de acordo com "Média e variância da estatística suficiente", temos . Portanto, de acordo com "Afirmação: expressando em termos da estatística suficiente", temos:
Hessiana
Fazendo a diferenciação uma segunda vez pela regra do produto, obtemos:
Informação de Fisher
De acordo com "Média e variância da estatística suficiente", temos:
Portanto:
Para diversas amostras de dados
Agora, estendemos o caso de para o caso geral. Seja o vetor cuja ésima coordenada é a resposta linear da ésima amostra de dados. Seja (respectivamente, , respectivamente, ) a função (vetorizada) difundida que aplica a função de valor escalar (respectivamente, , respectivamente, ) a cada coordenada. Então, temos:
e
em que as frações denotam a divisão com elementos.
Verificação das fórmulas numericamente
Agora, verificamos numericamente a fórmula acima para o gradiente da log-verossimilhança usando tf.gradients
, e verificamos a fórmula para a informação de Fisher com uma estimativa de Monte Carlo usando tf.hessians
:
Referências
[1]: Guo-Xun Yuan, Chia-Hua Ho e Chih-Jen Lin. An Improved GLMNET for L1-regularized Logistic Regression (GLMNET aprimorada para regressão logística com regularização L1). Journal of Machine Learning Research, 13, 2012. http://www.jmlr.org/papers/volume13/yuan12a/yuan12a.pdf
[2]: skd. Derivation of Soft Thresholding Operator (Derivação de operador de soft threshold). 2018. https://math.stackexchange.com/q/511106
[3]: Contribuidores da Wikipedia. Proximal gradient methods for learning (Métodos do gradiente proximal para aprendizado). Wikipedia, The Free Encyclopedia, 2018. https://en.wikipedia.org/wiki/Proximal_gradient_methods_for_learning
[4]: Yao-Liang Yu. The Proximity Operator (Operador de proximidade). https://www.cs.cmu.edu/~suvrit/teach/yaoliang_proximity.pdf