123 votos

derivada de la función de coste para la Regresión Logística

Estoy repasando las conferencias sobre Machine Learning en Coursera.

Estoy luchando con lo siguiente. ¿Cómo puede la derivada parcial de

$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{i}\log(h_\theta(x^{i}))+(1-y^{i})\log(1-h_\theta(x^{i}))$$

donde $h_{\theta}(x)$ se define como sigue

$$h_{\theta}(x)=g(\theta^{T}x)$$ $$g(z)=\frac{1}{1+e^{-z}}$$

sea $$ \frac{\partial}{\partial\theta_{j}}J(\theta) =\sum_{i=1}^{m}(h_\theta(x^{i})-y^i)x_j^i$$

En otras palabras, ¿cómo podríamos calcular la derivada parcial con respecto a $\theta$ de la función de costes (los logaritmos son logaritmos naturales):

$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{i}\log(h_\theta(x^{i}))+(1-y^{i})\log(1-h_\theta(x^{i}))$$

0 votos

Creo que para resolver $\theta$ por gradiente será difícil (¿o imposible?). Porque es diferente a la clasificación lineal, no tendrá una forma cercana. Así que le sugiero que utilice otro método, por ejemplo Método de Newton . Por cierto, ¿te parece que $\theta$ ¿usando la forma anterior?

6 votos

Falta $\frac{1}{m}$ para la derivada del Coste

171voto

Avi Puntos 21

La razón es la siguiente. Utilizamos la notación

$$\theta x^i:=\theta_0+\theta_1 x^i_1+\dots+\theta_p x^i_p.$$

Entonces

$$\log h_\theta(x^i)=\log\frac{1}{1+e^{-\theta x^i} }=-\log ( 1+e^{-\theta x^i} ),$$ $$\log(1- h_\theta(x^i))=\log(1-\frac{1}{1+e^{-\theta x^i} })=\log (e^{-\theta x^i} )-\log ( 1+e^{-\theta x^i} )=-\theta x^i-\log ( 1+e^{-\theta x^i} ),$$ [ esta usado: $ 1 = \frac{(1+e^{-\theta x^i})}{(1+e^{-\theta x^i})},$ los 1's en el numerador se cancelan, entonces usamos: $\log(x/y) = \log(x) - \log(y)$ ]

Dado que nuestra función de coste original tiene la forma de:

$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{i}\log(h_\theta(x^{i}))+(1-y^{i})\log(1-h_\theta(x^{i}))$$

Introduciendo las dos expresiones simplificadas anteriores, obtenemos $$J(\theta)=-\frac{1}{m}\sum_{i=1}^m \left[-y^i(\log ( 1+e^{-\theta x^i})) + (1-y^i)(-\theta x^i-\log ( 1+e^{-\theta x^i} ))\right]$$ que se puede simplificar a: $$J(\theta)=-\frac{1}{m}\sum_{i=1}^m \left[y_i\theta x^i-\theta x^i-\log(1+e^{-\theta x^i})\right]=-\frac{1}{m}\sum_{i=1}^m \left[y_i\theta x^i-\log(1+e^{\theta x^i})\right],~~(*)$$

donde la segunda igualdad se deduce de

$$-\theta x^i-\log(1+e^{-\theta x^i})= -\left[ \log e^{\theta x^i}+ \log(1+e^{-\theta x^i} ) \right]=-\log(1+e^{\theta x^i}). $$ [ utilizamos $ \log(x) + \log(y) = log(x y) $ ]

Todo lo que necesitas ahora es calcular las derivadas parciales de $(*)$ por ejemplo $\theta_j$ . Como $$\frac{\partial}{\partial \theta_j}y_i\theta x^i=y_ix^i_j, $$ $$\frac{\partial}{\partial \theta_j}\log(1+e^{\theta x^i})=\frac{x^i_je^{\theta x^i}}{1+e^{\theta x^i}}=x^i_jh_\theta(x^i),$$

la tesis sigue.

0 votos

AHAHAH :D ¡Espero que ayude! Siéntase libre de upvotearlo, si fue útil. Próximo paso: cálculo del principio de máxima entropía que lleva a la regresión logística ;-)

1 votos

No puedo subir el voto porque aún no tengo 15 de reputación. :) Voy a buscar en Google el principio de máxima entropía, ya que no tengo ni idea de lo que es! como nota al margen no estoy seguro de cómo se hizo el salto de log(1 - hipótesis(x)) a log(a) - log(b), pero va a plantear otra pregunta para esto, ya que no creo que pueda escribir látex aquí, realmente impresionado con su respuesta! el aprendizaje de todas estas cosas por mi cuenta está demostrando ser todo un reto por lo tanto más felicitaciones a usted para proporcionar una respuesta tan elegante! :)

0 votos

¿Quiere decir que $\log(1-h_\theta)=\log(1-\frac{1}{1+e^{-\theta x^i}})=...$ ? La igualdad se desprende de la definición de $h_\theta$ y el resto por la propiedad de los logaritmos: $\log(\frac{a}{b})=\log a-\log b$ .

6voto

sergzach Puntos 2153

Hay que obtener la derivada parcial con respecto a $\theta_j$ . Recuerde que la función de hipótesis aquí es igual a la función sigmoidea que es una función de $\theta$ En otras palabras, tenemos que aplicar la regla de la cadena. Este es mi enfoque:

$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}y^{i}\log(h_\theta(x^{i}))+(1-y^{i})\log(1-h_\theta(x^{i}))$$

$$\frac{\partial}{\partial\theta_{j}}J(\theta) = \frac{\partial}{\partial\theta_{j}} [-\frac{1}{m}\sum_{i=1}^{m}y^{i}\log(h_\theta(x^{i}))+(1-y^{i})\log(1-h_\theta(x^{i})) ]$$

Cualquier cosa sin $\theta$ se trata como constante:

$$ \tag{1} \frac{\partial}{\partial\theta_{j}}J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}y^{i}\frac{\partial}{\partial\theta_{j}}[\log(h_\theta(x^{i}))]+(1-y^{i})\frac{\partial}{\partial\theta_{j}}[\log(1-h_\theta(x^{i})) ]$$

Resolvamos cada derivada por separado y luego volvamos a enchufar (1):

$$\tag{2} \frac{\partial}{\partial\theta_{j}}[\log(h_\theta(x^{i}))] = \frac{1}{h_\theta(x^{i})} \frac{\partial}{\partial\theta_{j}} h_\theta(x^{i})$$

$$ \tag{3} \frac{\partial}{\partial\theta_{j}}[\log(1 - h_\theta(x^{i}))] = \frac{1}{1 - h_\theta(x^{i})} \frac{\partial}{\partial\theta_{j}} (1 -h_\theta(x^{i}) = \frac{-1}{1 - h_\theta(x^{i})} \frac{\partial}{\partial\theta_{j}} h_\theta(x^{i}) $$

Introduce (3) y (2) en (1):

$$ \frac{\partial}{\partial\theta_{j}}J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}y^{i} \frac{1}{h_\theta(x^{i})}\frac{\partial}{\partial\theta_{j}} h_\theta(x^{i}) +(1-y^{i}) \frac{-1}{1 - h_\theta(x^{i})} \frac{\partial}{\partial\theta_{j}} h_\theta(x^{i}) ]$$

$$\tag{4} \frac{\partial}{\partial\theta_{j}}J(\theta) = -\frac{1}{m}\sum_{i=1}^{m} [ \frac{y^{i}}{h_\theta(x^{i})} - \frac{(1-y^{i})}{1 - h_\theta(x^{i})} ] * \frac{\partial}{\partial\theta_{j}} h_\theta(x^{i})$$

Obsérvese que utilizando la regla de la cadena, la derivada de la función de hipótesis puede entenderse como $$\tag{5}\frac{\partial}{\partial\theta_{j}}[\ h_\theta(x^{i})] = \frac{\partial}{\partial z }[\ h(z)] * \frac{\partial}{\partial\theta_{j}}[\ z(\theta)] = [h(z) * [1 - h(z) ]] *[x_j^i] $$

donde

$$ \frac{\partial}{\partial z }[\ h(z)] = \frac{\partial}{\partial z } \frac{1}{1+e^{-z}} = \frac{0 - (1)*(1+e^{-z})'}{(1+e^{-z})^2} = \frac{ (e^{-z})}{(1+e^{-z})^2} = [\frac{1}{(1+e^{-z})}] * [\frac{ (e^{-z})}{(1+e^{-z})}] = [\frac{1}{(1+e^{-z})}] * [1 -\frac{1}{(1+e^{-z})}] = h(z) * [1 - h(z) ] $$ y $$\frac{\partial}{\partial\theta_{j}}[\ z(\theta)] = \frac{\partial}{\partial\theta_{j}}[\ \theta x^i] = x_j^i $$

Enchufa (5) en (4):

$$ \frac{\partial}{\partial\theta_{j}}J(\theta) = -\frac{1}{m}\sum_{i=1}^{m} [ \frac{y^{i}}{h_\theta(x^{i})} - \frac{(1-y^{i})}{1 - h_\theta(x^{i})} ] * [ h_\theta(x^{i}) * ( 1 -h_\theta(x^{i})) * x_j^i ]$$

Aplicando algo de álgebra y resolviendo restas:

$$\frac{\partial}{\partial\theta_{j}}J(\theta) =\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{i})-y^i)x_j^i$$

Hay un $1/m$ factor que falta en su respuesta esperada.

Espero que esto ayude.

5voto

RedEyed Puntos 141

@pedro-lopes, se llama como: regla de la cadena . $$(u(v))' = u(v)' * v'$$ Por ejemplo: $$y = \sin(3x - 5)$$ $$u(v) = \sin(3x - 5)$$ $$v = (3x - 5)$$ $$y' = \sin(3x - 5)' = \cos(3x - 5) * (3 - 0) = 3\cos(3x-5)$$

En cuanto a: $$\frac{\partial}{\partial \theta_j}\log(1+e^{\theta x^i})=\frac{x^i_je^{\theta x^i}}{1+e^{\theta x^i}}$$ $$u(v) = \log(1+e^{\theta x^i})$$ $$v = 1+e^{\theta x^i}$$ $$\frac{\partial}{\partial \theta}\log(1+e^{\theta x^i}) = \frac{\partial}{\partial \theta}\log(1+e^{\theta x^i}) * \frac{\partial}{\partial \theta}(1+e^{\theta x^i}) = \frac{1}{1+e^{\theta x^i}} * (0 + xe^{\theta x^i}) = \frac{xe^{\theta x^i}}{1+e^{\theta x^i}} $$ Tenga en cuenta que $$\log(x)' = \frac{1}{x}$$ Espero haber respondido a su pregunta.

4voto

sandipan Puntos 192

Lo tenemos, \begin{align*} L(\theta) &= -\frac{1}{m}\sum\limits_{i=1}^{m}{y_i. log P(y_i|x_i,\theta) + (1-y_i). \log{(1 - P(y_i|x_i,\theta))}} \\ h_\theta(x_i) &= P(y_i|x_i,\theta) = P(y_i=1|x_i,\theta) = \frac{1}{1+\exp{\left(-\sum\limits_k \theta_k x_i^k \right)}} \end{align*}

Entonces, \begin{align*} \log{(P(y_i|x_i,\theta))}=\log{(P(y_i=1|x_i,\theta))} &=-\log{\left(1+\exp{\left(-\sum\limits_k \theta_k x_i^k \right)} \right)} \\ \Rightarrow \frac{\partial }{\partial \theta_j} log P(y_i|x_i,\theta) =\frac{x_i^j.\exp{\left(-\sum\limits_k \theta_k x_i^k\right)}}{1+\exp{\left(-\sum\limits_k \theta_k x_i^k\right)}} &= x_i^j.\left(1-P(y_i|x_i,\theta)\right) \end{align*} y \begin{align*} \log{(1-P(y_i|x_i,\theta))}=\log{(1-P(y_i=1|x_i,\theta))} &=-\sum\limits_k \theta_k x_i^k -\log{\left(1+\exp{\left(-\sum\limits_k \theta_k x_i^k \right)} \right)} \\ \Rightarrow \frac{\partial }{\partial \theta_j} \log{(1 - P(y_i|x_i,\theta))} &= -x_i^j + x_i^j.\left(1-P(y_i|x_i,\theta)\right) = -x_i^j.P(y_i|x_i,\theta) \\ \end{align*}

Por lo tanto,

\begin{align*} \frac{\partial }{\partial \theta_j} L(\theta) &= -\frac{1}{m}\sum\limits_{i=1}^{m}{y_i.\frac{\partial }{\partial \theta_j} log P(y_i|x_i,\theta) + (1-y_i).\frac{\partial }{\partial \theta_j} \log{(1 - P(y_i|x_i,\theta))}} \\ &=-\frac{1}{m}\sum\limits_{i=1}^{m}{y_i.x_i^j.\left(1-P(y_i|x_i,\theta)\right) - (1-y_i).x_i^j.P(y_i|x_i,\theta)} \\ &=-\frac{1}{m}\sum\limits_{i=1}^{m}{y_i.x_i^j - x_i^j.P(y_i|x_i,\theta)} \\ &=\frac{1}{m}\sum\limits_{i=1}^{m}{(P(y_i|x_i,\theta)-y_i).x_i^j} \end{align*} (Probado)

3voto

Pedro, => fracciones parciales

$$\log(1 - \frac{a}{b})$$

$$1 - \frac{a}{b} = \frac{b}{b} - \frac{a}{b} = \frac{b-a}{b},$$ $$\log(1 - \frac{a}{b}) = \log(\frac{b-a}{b}) = \log(b-a) - \log(b)$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X