14 votos

¿Cómo entreno a una regresión (logística)? en R usando la función de pérdida L1?

Puedo entrenar una regresión logística en R el uso de

glm(y ~ x, family=binomial(logit)))

pero, IIUC, de este modo se optimiza para el registro de la probabilidad.

Es allí una manera de entrenar el modelo de uso de la lineal ($L_1$) la pérdida de la función (que en este caso es el mismo que el total de la variación de la distancia)?

I. e., dado un vector numérico $x$ y un poco (lógico) de vectores $y$, quiero construir una monótona (de hecho, cada vez mayor) de la función $f$ tal que $\sum |f(x)-y|$ es mínimo.

Ver también

26voto

Patrick Puntos 183

Lo que quieres hacer no existe porque es, a falta de una mejor palabra, matemáticamente, es deficiente.

Pero primero, voy a estrés por qué creo que las premisas de su pregunta son de sonido. A continuación, voy a intentar explicar por qué creo que las conclusiones puedes sacar de ellos descansan en una mala interpretación del modelo logístico y, por último, voy a sugerir un enfoque alternativo.

Voy a denotar $\{(\pmb x_i,y_i)\}_{i=1}^n$ su $n$ observaciones (la más audaz de las letras denotan los vectores) que se encuentran en $p$ espacio tridimensional (la primera entrada de $\pmb x_i$ es 1) con $p<n$, $y_i\in [0,1]$ y $f(\pmb x)= f(\pmb x'\pmb\beta)$ es una función monótona de $\pmb x'\pmb\beta$, digamos como la curva logística para fijar ideas. Por conveniencia, me acaba de asumir que $n$ es lo suficientemente grande en comparación a $p$.

Usted está en lo correcto que si usted va a utilizar TVD como criterio para evaluar el modelo ajustado, entonces es razonable esperar que su ajuste para optimizar el mismo criterio entre todos los posibles candidatos, en sus datos. Por lo tanto

$$\pmb\beta^*=\underset{\pmb\beta\in\mathbb{R}^{p}}{\arg\min}\;\;\;\;\;||\pmb y-f(\pmb x'\pmb\beta)||_1$$

El problema es el término de error: $\epsilon_i=y_i-f(\pmb x'\pmb\beta)$ y si aplicamos $E(\epsilon_i)=0$ (simplemente queremos que nuestro modelo sea asintóticamente insesgados), a continuación, $\epsilon_i$ debe ser heteroskedastic. Esto es debido a que $y_i$ puede tomar en sólo dos valores, 0 y 1. Por lo tanto, dado $\pmb x_i$, $\epsilon_i$ también puede tomar sólo dos valores: $1-f(\pmb x'\pmb\beta)$ al $y_i=1$, lo cual ocurre con probabilidad de $f(\pmb x'\pmb\beta)$, e $-f(\pmb x'\pmb\beta)$ al $y_i=1$, lo cual ocurre con probabilidad de $1-f(\pmb x'\pmb\beta)$.

Estas consideraciones, junto implica que:

$$\text{var}(\epsilon_i)=E(\epsilon_i^2)=(1-f(\pmb x'\pmb\beta))^2f(\pmb x'\pmb\beta)+(-f(\pmb x'\pmb\beta))^2(1-f(\pmb x'\pmb\beta))\\ \;\;\;\;\;\;\;\;\;\;\;\;\;=(1-f(\pmb x'\pmb\beta))f(\pmb x'\pmb\beta)=E(y|\pmb x)E(1-y|\pmb x)$$

por lo tanto $\text{var}(\epsilon_i)$ no es constante, sino cóncava en forma de parábola y se maximiza cuando se $\pmb x$ es tal que $E(y|\pmb x)\approx .5$.

Este inherentes a la heterocedasticidad de los residuos tiene consecuencias. Esto implica, entre otras cosas, que cuando la minimización de la $l_1$ de pérdida de función, que son asintóticamente sobre-ponderación de parte de su muestra. Es decir, el amueblada $\pmb\beta^*$ no se ajusten a los datos, sino sólo la parte de éste que se agrupa alrededor de los lugares donde $\pmb x$ es tal que $E(y|\pmb x)\approx .5$. A saber, estos son menos informativos de puntos de datos en la muestra: se corresponden con las observaciones para que el ruido componente es el más grande. Por lo tanto, su ajuste se tira hacia $\pmb\beta^*=\pmb\beta:f(\pmb x'\pmb\beta)\approx .5$, por ejemplo, hizo irrelevante.

Una solución, como es claro a partir de la exposición anterior es colocar el requisito de la imparcialidad-ness. Una forma popular de sesgo en el estimador (con algunos Bayesiana de la interpretación que se adjunta) es mediante la inclusión de una contracción plazo. Si nos re-escala la respuesta:

$$y^+_i=2(y_i-.5),1\leq i\leq n$$

y, por conveniencia computacional, reemplace $f(\pmb x'\pmb\beta)$ por otro monotonía de la función $g(\pmb x,[c,\pmb\gamma])=\pmb x'[c,\pmb\gamma]$ - será conveniente para la secuela para denotar la primera componente del vector de parámetros como $c$ y el restante $p-1$ ones $\pmb\gamma$-- e incluyen una contracción plazo (por ejemplo, a uno de la forma $||\pmb\gamma||_2$), el consiguiente problema de optimización se convierte en:

$$[c^*,\pmb\gamma^{*}]=\underset{\pmb[c,\pmb\gamma]\in\mathbb{R}^{p}}{\arg\min}\;\;\sum_{i=1}^n\max(0,1-y_i^+\pmb x_i'\pmb[c,\pmb\gamma])+\frac{1}{2}||\pmb\gamma||_2$$

Tenga en cuenta que en esta nueva (convexas) problema de optimización, la pena para una correcta clasificación de las observaciones es 0 y crece linealmente con $\pmb x'\pmb[c,\gamma]$ para una señorita-clasificados --como en el $l_1$ de pérdida. El $[c^*,\pmb\gamma^*]$ solución a este segundo problema de optimización son la célebre svm lineal (con perfecta separación) de los coeficientes. Como contraposición a la $\pmb\beta^*$, tiene sentido para aprender estas $[c^*,\pmb\gamma^{*}]$ a partir de los datos con un TVD-tipo de pena ('tipo', debido a que el sesgo plazo). Por tanto, esta solución se aplica ampliamente. Véase, por ejemplo, el paquete de R LiblineaR.

9voto

Bou Puntos 1859

No estoy seguro por qué querrías usar L1 pérdida algo limitados entre 0 y 1. Dependiendo de cuál es su objetivo, puede que desee considerar algo como pérdida de la bisagra en su lugar, que es similar a la pérdida de la L1 en una dirección y plana en el otro.

En cualquier caso, el código siguiente debe hacer lo que has pedido. Tenga en cuenta que la respuesta óptima es básicamente una función escalón.

set.seed(1)

# Fake data
x = seq(-1, 1, length = 100)
y = rbinom(100, plogis(x), size = 1) # plogis is the logistic function

# L1 loss
loss = function(y, yhat){
  sum(abs(y - yhat))
}

# Function to estimate loss associated with a given slope & intercept
fn = function(par){
  a = par[1]
  b = par[2]
  loss(y = y, yhat = plogis(a + b * x))
}

# Find the optimal parameters
par = optim(
  par = c(a = 0, b = 0),
  fn = fn
)$par

# Plot the results
plot(y ~ x)
curve(plogis(par[1] + par[2] * x), add = TRUE, n = 1000)

-1voto

marbel Puntos 166

Usted puede utilizar el glmnet paquete para el montaje L1, L2 modelos. Esto no se limita a la regresión logística, pero lo incluye.

Aquí está la viñeta: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html

También hay un webminar: https://www.youtube.com/watch?v=BU2gjoLPfDc

Liblinear es buena, pero he encontrado glmnet más fácil para empezar. Glmnet incluye una función de eso se hace la validación cruzada y selecciona un parámetro de regularización para usted, basado en diferentes métricas como las AUC.

Con respecto a la teoría, me gustaría leer el tibshiarini papel con respecto a lasso (L1 regularización) y el capítulo en elementos de aprendizaje estadístico. http://statweb.stanford.edu/~tibs/lazo/lazo.pdf

Sobre el registro de la pérdida, es sólo para evaluar los modelos. No es una pérdida de la función de ajuste del modelo.

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