Hessian da função logística


15

Tenho dificuldade em derivar o Hessiano da função objetivo, , em regressão logística em que é: l(θ)l(θ)

l(θ)=i=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]

hθ(x) é uma função logística. O hessiano é . Tentei derivá-lo calculando , mas não me era óbvio como chegar à notação matricial de .XTDX2l(θ)θiθj2l(θ)θiθj

Alguém conhece alguma maneira limpa e fácil de derivar ?XTDX


3
o que você recebeu por ? 2lθiθj
Glen_b -Replica Monica

1
Aqui está um bom conjunto de slides que mostram o cálculo exato que você está procurando: sites.stat.psu.edu/~jiali/course/stat597e/notes2/logit.pdf

Encontrei um vídeo maravilhoso que calcula o Hessian passo a passo. Regressão logística (binário) - computar o Hessian
Naomi

Respostas:


19

Aqui, deduzo todas as propriedades e identidades necessárias para que a solução seja independente, mas, além disso, essa derivação é limpa e fácil. Vamos formalizar nossa notação e escrever a função de perda um pouco mais compacta. Considere m amostras {xi,yi} de tal modo que xiRd e yiR . Lembre-se de que, na regressão logística binária, normalmente temos a função de hipótese hθ ser a função logística. Formalmente

hθ(xi)=σ(ωTxi)=σ(zi)=11+ezi,

onde ωRd e zi=ωTxi . A função de perda (que eu acredito que OPs está faltando um sinal negativo) é então definida como:

l(ω)=i=1m(yilogσ(zi)+(1yi)log(1σ(zi)))

Existem duas propriedades importantes da função logística que derivam aqui para referência futura. Primeiro, observe que 1σ(z)=11/(1+ez)=ez/(1+ez)=1/(1+ez)=σ(z) .

Observe também que

zσ(z)=z(1+ez)1=ez(1+ez)2=11+ezez1+ez=σ(z)(1σ(z))

Em vez de usar derivadas com relação aos componentes, aqui trabalharemos diretamente com vetores (você pode revisar derivadas com vetores aqui ). O Hesse da função perda l(ω) é dada por 2l(ω) , mas primeira recolha que zω=xTωω=xTezωT=ωTxωT=x.

Seja li(ω)=yilogσ(zi)(1yi)log(1σ(zi)) . Usando as propriedades que derivamos acima e a regra da cadeia

logσ(zi)ωT=1σ(zi)σ(zi)ωT=1σ(zi)σ(zi)ziziωT=(1σ(zi))xilog(1σ(zi))ωT=11σ(zi)(1σ(zi))ωT=σ(zi)xi

Agora é trivial mostrar que

li(ω)=li(ω)ωT=yixi(1σ(zi))+(1yi)xiσ(zi)=xi(σ(zi)yi)

uau!

Nosso último passo é calcular o hessiano

2li(ω)=li(ω)ωωT=xixiTσ(zi)(1σ(zi))

Para m amostras temos 2l(ω)=i=1mxixiTσ(zi)(1σ(zi)) . Isso é equivalente à concatenação de vetores de colunas xiRd em uma matriz X de tamanho d×m tal que i=1mxixiT=XXT . Os termos escalares são combinados em uma matriz diagonalD de tal forma queDii=σ(zi)(1σ(zi)) . Finalmente, concluímos que

H(ω)=2l(ω)=XDXT

Uma abordagem mais rápida pode ser obtida considerando todas as amostras de uma só vez desde o início e, em vez disso, trabalhe com derivadas da matriz. Como uma observação extra, com esta formulação é trivial mostrar que l(ω) é convexo. Deixe δ ser qualquer vector de modo a que δRd . Então

δTH(ω)δ=δT2l(ω)δ=δTXDXTδ=δTXD(δTX)T=δTDX20

D>0δTX0Hl


2
In the last equation, shouldn't it be ||δD1/2X|| since XDX = XD1/2(XD1/2)?
appletree

1
Shouldn't it be XTDX?
Chintan Shah
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.