Regresión

Mínimos Cuadrados, Mìnimos Cuadrados No-Lineales y Logística

Mariano Rivera

febrero 2017

%matplotlib inline

Unas notas previas:
x yx=y                    x Ax=A                    x xAx=Ax+Ax                        x xAx=2Ax,    si  A=A                        x xy2=x (xy)(xy)                                    =2x(xy)                    xx2 xAx=2A,    si  A=A \nabla_x \, y^\top x = y \;\;\;\;\;\;\;\;\;\; \\ \nabla_x \, A x = A \;\;\;\;\;\;\;\;\;\; \\ \nabla_x \, x^\top A x = A^\top x + A x \\ \;\;\;\;\;\;\;\;\;\;\;\; \nabla_x \, x^\top A x = 2 Ax, \;\; si \; A^\top=A \\ \;\;\;\;\;\;\;\;\;\;\;\; \nabla_x \, \|x-y\|^2 = \nabla_x \, (x-y)^\top (x-y) \\ \;\;\;\;\;\;\;\;\;\;\;\; \;\;\;\;\;\; = 2 x^\top (x-y) \\ \;\;\;\;\;\;\;\;\;\; \nabla^2_{xx} \, x^\top A x = 2A, \;\; si \; A^\top=A

Regresión Lineal

Sea xiRn\mathbf{x_i} \in \mathbb{R}^n un vector que corresponde al ii-ésimo dato tal que la jj-ésima entrada xij\mathbf{x}_{ij} corresponde a la jj-ésima característica. Luego arreglamos los datos de la forma

(1)
X=[x1x2xm], X = \begin{bmatrix} \mathbf{x}^\top_1 \\ \mathbf{x}^\top_2 \\ \vdots \\ \mathbf{x}^\top_m \\ \end{bmatrix}, \\
de tal que cada dato correponde a un renglón de la matrix XRm×nX \in \mathbb{R}^{m \times n}.

Luego tenemos una observacion yiRk\mathbf{y}_i \in \mathbb{R}^k (generalmente k=1) asociada a cada dato, variable dependiente. Y denotamos por

(2)
Y=[y1y2ym], Y = \begin{bmatrix} \mathbf{y}^\top_1 \\ \mathbf{y}^\top_2 \\ \vdots \\ \mathbf{y}^\top_m \\ \end{bmatrix},\\
la matriz de variables dependientes, cadad renglón en una variable dependiente.

Regresión lineal multivariada

Ahora que asumimos que existencia de una función desconocida

(3)
yi=f(xi)+ηi \mathbf{y}_i=f(\mathbf{x}_i) + \eta_i \\
donde ff es “suave” y ηi\eta_i es ruido. El problema de regresión es estimar ff a partir de una serie de datos X,YX, Y.
Existen muchas maneras de proponer la función ff. Por ejemplo, usando polinomios:

(4)
yil=θ0l+θ1lxi1+θ2lxi2++θnlxin+ηli \mathbf{y}_{il} = \theta_{0l} + \theta_{1l} \mathbf{x}_{i1} + \theta_{2l}\mathbf{x}_{i2} + \ldots + \theta_{nl} \mathbf{x}_{in} + \eta_{li}
La función (4) se pueded escribir como:

(5)
Y=XΘ+η Y = \mathbf{X} \Theta + \eta

Donde hemos definido el vector

(6)
θl=[θ0lθ1lθ2lθnl],      l=1,2,,k; \theta_l = \begin{bmatrix} \mathbf{\theta}_{0l} \\ \mathbf{\theta}_{1l} \\ \mathbf{\theta}_{2l} \\ \vdots \\ \mathbf{\theta}_{nl} \\ \end{bmatrix}, \;\;\; l=1,2,\ldots,k;

Luego, definimos la matriz de parámetros

(7)
Θ=[θ1,θ2,,θk] \Theta = [\theta_1, \theta_2, \ldots , \theta_k ]
donde la ll-ésima columna corresponden a los parámetros para generar la componente ll-ésima de YY. También hemos definido la matrix

(8)
X=[1  X] \mathbf{X} = [ \mathbf{1} \, | \, X]
donde XX es definida en (1) y 1\mathbf{1} es un vector con todas sus entradas igual a 1, cuyo tamaño depende del contexto.

Note que la función en (5) es lineal en los parámetros θ\theta

Es posible incorporar términos de mayor orden o no lineales en x\mathbf{x} y manter el modelo lineal respecto a los parámetros θ\theta:

yil=θ0l+θ1lxi1+θ2lxi2++θnlxin+θn+1,lxi,12+θn+2,lxi,22++θ2n,lxin2+θ2n+1,lcos(xi12+xi22)+θ2n+2,lxi3xi4+θ2n+3,lln(xin+1)+ηli \mathbf{y}_{il} = \theta_{0l} + \theta_{1l} \mathbf{x}_{i1} + \theta_{2l}\mathbf{x}_{i2} + \ldots + \theta_{nl} \mathbf{x}_{in} + \\ \theta_{n+1,l} \mathbf{x}_{i,1}^2 + \theta_{n+2,l}\mathbf{x}_{i,2}^2 + \ldots + \theta_{2n,l} \mathbf{x}_{in}^2 + \\ \theta_{2n+1,l} \cos(\mathbf{x}_{i1}^2 +\mathbf{x}_{i2}^2 )+ \theta_{2n+2,l} \mathbf{x}_{i3} \mathbf{x}_{i4} + \theta_{2n+3,l} \ln (\mathbf{x}_{in}+1) + \eta_{li} \\

En cuyo caso, lo que cambia es el cálculo de la matriz de diseño X\mathbf{X}.

Mínimos Cuadrados Lineales

Una forma de resolver el problema de estimar los parámetros Θ\Theta de la función ff es mediante mínimos cuadrados lineales, capítulo 3 en [3]:
Θ=arg minΘ  F(Θ)=12YX ΘF2(9) \Theta^* = \underset{\Theta}{\operatorname{arg\,min}}\; F(\Theta) = \frac{1}{2} \| Y- \mathbf{X} \, \Theta \|_F^2 \\ (9)
donde la norma de Frobenius esta definida por
AF2=ijaij2. \| A\|_F^2 = \sum_i \sum_j a_{ij}^2.
En este contexto X\mathbf{X} es llamada la “matriz de diseño”.

La función FF puede también ser escrita como

(10)
F(Θ)=li[YiljXijΘjl]2=li[Yilxiθl]2                  =i[Yi1xiθ1]2+i[Yi2xiθ2]2++i[Yikxiθk]2 F(\Theta) = \sum_l \sum_i \left[ Y_{il} - \sum_j \mathbf{X}_{ij} \Theta_{jl} \right]^2 = \sum_l \sum_i \left[Y_{il} - \mathbf{x}_i^\top\theta_{l} \right]^2 \\ \;\;\;\;\;\;\;\;\; =\sum_i \left[Y_{i1} - \mathbf{x}_i^\top\theta_{1} \right]^2 + \sum_i \left[Y_{i2} - \mathbf{x}_i^\top\theta_{2} \right]^2 + \ldots + \sum_i \left[Y_{ik} - \mathbf{x}_i^\top\theta_{k} \right]^2
Es decir, el problema de estimación de mínimos cuadrados vector-valuado (la variable dependiente es un vector), se puede descomponer como múltiples problemas independientes de mínimos cuadrados univaluados (la variable dependiente es un escalar).

Solución Exacta al Problema de Mínimos Cuadrados Lineales

Como ya vimos, sin pérdida de generalidad, podemos concentrarnos solo en el caso univariado:

(11)
θ=argminθ  F(Θ)=12i[YixiTθ]2=12YX θ22 \theta^* = \underset{\theta}{\arg \min}\; F(\Theta) = \frac{1}{2}\sum_i [Y_i - \mathbf{x}_i^T\theta]^2 = \frac{1}{2}\|Y- \mathbf{X}\, \theta \|_2^2

Donde hemos incluido el factor 1/21/2 por conveniencia en el algebra que desarrollaremos y dado que no afecta el problema:
arg minθ  F(θ)=arg minΘ  cF(θ) \underset{\theta}{\operatorname{arg\,min}}\; F(\theta) = \underset{\Theta}{\operatorname{arg\,min}}\; c F(\theta)
para cualquier constante cRc \in \mathbb{R}.

Dado que (11) es convexa, el mínimo se encuetra resolviendo la condición de primer orden:

(12)
θF(θ)=0, \nabla_\theta F(\theta) = 0,
esto es:

(13)
XT(XθY)=0 \mathbf{X}^T\left(\mathbf{X} \theta - Y \right) =0
Luego, θ\theta se puede calcular resolviendo

(14)
XXθ=XY \mathbf{X}^\top\mathbf{X} \theta = \mathbf{X}^\top Y
o directamente:

(15)
θ=(XX)1XY. \theta = \left( \mathbf{X}^\top\mathbf{X} \right)^{-1}\mathbf{X}^\top Y.
Recordemos que en general X\mathbf{X} es singular dado que tenemos mas datos que parámetros a estimar m>n+1m > n+1. Luego definimos la matriz
M=(XX)1X M = \left( \mathbf{X}^\top\mathbf{X} \right)^{-1}\mathbf{X}^\top
que es llamada la pseudo-inversa de Moore-Penrose de X\mathbf{X} dado que satisface MX=IM \mathbf{X}=I.

Si el problema es multivaluado, entonces:

(16)
θl=MYl;    l=1,2,,k \theta_l = M Y_l; \;\; l=1,2, \ldots,k \\
Es decir, todo se reduce a calular MM.

Usando el modelo, podemos obtener la predicción de los valores de YlY_l:

Y^l=Xθl=PYl \hat Y_l = \mathbf{X} \theta_l = P Y_l
donde

P=X(XX)1X P = \mathbf{X} \left( \mathbf{X}^\top\mathbf{X} \right)^{-1}\mathbf{X}^\top
es la “Matriz de Proyección” porque lleva los datos YlY_l al espacio generado (spanned) por el regresor. Lo que implica en si mismo un residual de modelado.

Solución iterativa al problema de mínimos cuadrados

Otra forma de resolver el problema de mínimos cuadrados es usando algorirmos iterativos, algo comun en problemas de optimización.

Esta estrategia de solución es preferida para problemas de gran escala: mm's o nn's grandes

Para ello usamos la formula de recurrencia

(17)
θ(t+1)=θ(t)+α(t)p(t) \theta^{(t+1)} = \theta^{(t)} + \alpha^{(t)} p^{(t)}
donde

  1. θ(t)\theta^{(t)} es en valor de los parámetros en la iteración actual

  2. θ(t+1)\theta^{(t+1)} es en valor de los parámetros actualizados

  3. p(t)p^{(t)} es una dirección de descenso. Garantiza que F(θ(t)+ϵp(t))F(θ(t))F(\theta^{(t)} + \epsilon p^{(t)} ) \le F(\theta^{(t)}) para una ϵ\epsilon suficientemente pequeña.

  4. α(t)\alpha^{(t)} es el tamaño de paso

Nota: pp es una dirección de descenso ssi pF<0p^\top \nabla F < 0; la elección obvia es la denominada “dirección de máximo descenso”: p=Fp= -\nabla F, ¡Que no es necesariamente la mejor!

Obtengamos el gradiente parcial de F respecto a un parámetro, digamos el θj^\theta_ {\hat j}:

(18)
Fθj^=i[YixiTθ]θj^[Yijxijθj]=i[YixiTθ](xij^) \frac{\partial F}{\partial \theta_{\hat j}} = \sum_i \left[Y_i - \mathbf{x}_i^T\theta \right] \frac{\partial }{\partial \theta_{\hat j}} \left[Y_i - \sum_j \mathbf{x}_{ij} \theta_j \right] \\ = \sum_i \left[Y_i - \mathbf{x}_i^T\theta \right] (-\mathbf{x}_{i{\hat j}} )
Luego el gradiente esta dado por

(19)
θF(θ)=[Fθ0Fθ1Fθ2Fθn]=[i[YixiTθ]1i[YixiTθ]xi1i[YixiTθ]xi2i[YixiTθ]xin] \nabla_\theta F(\theta) = \begin{bmatrix} \frac{\partial F}{\partial \theta_0} \\ \frac{\partial F}{\partial \theta_1} \\ \frac{\partial F}{\partial \theta_2} \\ \vdots \\ \frac{\partial F}{\partial \theta_n} \end{bmatrix} = - \begin{bmatrix} \sum_i \left[Y_i - \mathbf{x}_i^T \theta \right] 1\\ \sum_i \left[Y_i - \mathbf{x}_i^T \theta \right] \mathbf{x}_{i1} \\ \sum_i \left[Y_i - \mathbf{x}_i^T \theta \right] \mathbf{x}_{i2} \\ \vdots \\ \sum_i \left[Y_i - \mathbf{x}_i^T \theta \right] \mathbf{x}_{in} \end{bmatrix}

Reducción del error en un sólo parámetro θj\theta_{j}

Podemos ver que en (19) se actualiza cada entrada de θ\theta independientemente. Luego una entrada del vector de parámetros se actualiza con la regla

(20)
θj(t+1)=θj(t)αi(xiTθYi)xij \theta^{(t+1)}_j = \theta^{(t)}_j - \alpha \sum_i \left(\mathbf{x}_i^T \theta -Y_i \right) \mathbf{x}_{ij}
donde hemos asumido que el tamaño de paso α\alpha, conocido como “razón de aprendizaje” en el contexto de aprendizaje de máquina, es pequeño e igual para todas las iteraciones.

El procedimiento (20) es conocido como algoritmo de descenso de gradiente.

Reducción del error respecto a una sola muestra xi\mathbf{x}_i

Solo por curiosidad, tomamos la muestra xi\mathbf{x}_i y ajustemos el θj\theta_j. Ahora la regla de aprendizaje queda

(21)
θj(t+1)=θj(t)α(xiθYi)xij \theta^{(t+1)}_j = \theta^{(t)}_j - \alpha \left( \mathbf{x}_i^\top \theta - Y_i \right) \mathbf{x}_{ij}
que es es la regla de aprendizaje de Widrow-Hoff.

Se pueded observar que la magnitud de la actualización es proporcional al error (Yixiθ)\left( Y_i - \mathbf{x}_i^\top \theta \right): si hay una muestra donde el error es pequeño, el ajuste será pequeño; si por otro lado para una muestra el error es grande, se hará un ajuste grande.

Ejemplo de Mínimos Cuadrados

Dado el modelo lineal
yi=θ0+xi1θ1+x2θi2+ni y_i = \theta_0 + x_{i1} \theta_1 + x_2 \theta_{i2} + n_i
Generaremos m=10m=10 muestras y ajustamos los parámetros θ\theta con:

  1. Usando el solver en scipy.linalg.lsts

  2. Pseudo-inversa de Moore-Penrose (numpy)

  3. Descenso de gradiente

import numpy as np
import scipy.linalg as spla

m=100
n=2
theta = np.random.rand(3)
print(theta)

# Matriz de diseño
X = np.concatenate((np.ones((m,1)),np.random.rand(m,n)), axis=1)
n = 0.01*np.random.randn(m)

# variable dependiente
# y = np.dot(X,theta)+n
y = X@theta + n
[ 0.62450876  0.04722106  0.98380124]

Solver en scipy.linalg.lstsq

theta_ls=spla.lstsq(X,y)
theta_ls[0]
array([ 0.62408591,  0.04626653,  0.98832767])

Pseudoinversa de Moore-Penrose

# M = np.dot(la.inv(np.dot(X.T,X)),X.T)
# theta_mp=np.dot(M,y)

# con el nuevo operador de multiplicacion de matrices @ en vez de np.dot
theta_mp = (spla.inv(X.T@X)@X.T)@y
theta_mp
array([ 0.62408591,  0.04626653,  0.98832767])

Solución mediante descenso de gradiente simple

Formula de actualización iterativa:
θt+1=θt+αtpt \theta_{t+1} = \theta_t + \alpha_t p_t
donde

def descensoLSTSQ(X, y, nIter=100, alpha=0.01):
    m,n = X.shape
    theta = np.random.rand(n)
    for t in range(nIter):
        theta = theta - alpha * (X@theta-y)@X  #np.dot((np.dot(X,theta)-y),X)       
    return theta

theta_dg=descensoLSTSQ(X,y, nIter=10000, alpha=0.001)
theta_dg
array([ 0.62408591,  0.04626653,  0.98832767])
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

plt.figure(figsize=(12,8))


fig = plt.figure(figsize=(12,8))
ax = fig.gca(projection='3d')

v = np.arange(0, 1, 0.1)
w = np.arange(0, 1, 0.1)
x1, x2 = np.meshgrid(v, w, sparse=True)

haty = theta_dg[0] + theta_dg[1]*x1+ theta_dg[2]*x2

ax.scatter(X[:, 1], X[:, 2], y, c='g')
ax.plot_surface(x1, x2, haty, rstride=8, cstride=8, alpha=0.4)
plt.show()
<Figure size 864x576 with 0 Axes>

png

Mínimos Cuadrados Lineales como un Problema de Estimación de Máxima Verosimilitud

Regresando al modelo mediante el cual asumimos se relacionan las variables dependientes yy y las independientes xx:

(22)
yi=xiθ+ηi. \mathbf{y}_i = \mathbf{x}_i^\top \theta + \eta_i.
Donde habiamos dicho que ηi\eta_i era ruido. Bueno, este ruido tienen una distribución y puede estar, o no, correlacionado.

Asumamos que no es correlacionado y su distribución se mantienen no cambia dependiendo de las muestras; esto es es ruido Independiente e Identicamente Distribuido (IID).

Además asumamos, ahora, que tienen distribución Gaussiana con media cero y varianza σ2\sigma^2: ηiN(0,σ2)\eta_i \sim \mathcal N (0, \sigma^2).

Luego, la densidad de ηi\eta_i esta dada por

(23)
p(ηi)=12πσexp[ηi22σ2] p(\eta_i) = \frac{1}{\sqrt{2\pi} \sigma} \exp \left[-\frac{\eta_i^2}{2\sigma^2} \right] \\

Recordemos que p(η)dη=1\int_{-\infty}^{\infty} p(\eta) d \eta =1 pero la probabilidad de que ηi=c\eta_i=c esta dada por ccp(η)&ThinSpace;dη=0\int_c^c p(\eta) \, d \eta =0.

Luego de (22) obtenemos que ηi=yixiθ\eta_i = \mathbf{y}_i - \mathbf{x}_i^\top \theta lo que implica, usando (23), que

(24)
p(yixi;θ)=12πσexp[12σ2(yixiθ)2] p(\mathbf{y}_i | \mathbf{x}_i ; \theta) = \frac{1}{\sqrt{2\pi} \sigma} \exp \left[-\frac{1}{2\sigma^2} \left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2 \right] \\

p(yixi;θ)p(\mathbf{y}_i | \mathbf{x}_i ; \theta) se lee como la probabilidad condicional de yi\mathbf{y}_i dado xi\mathbf{x}_i; usando los parámetros (no son variables aleatorias) θ\theta.

La notación p(yixi;θ)p(\mathbf{y}_i | \mathbf{x}_i ; \theta) indica que en nuestro modelo $ \mathbf{y}_i$ depende de xi\mathbf{x}_i (variable dependiente e independiente, respectivamente) a través de los parámetros θ\theta.

Nosotros estamos interasados en estimar la función que relaciona los datos observados y\mathbf{y} y X\mathbf{X}. Note que ya estamos hablando de todos dos datos, no solo del ii-ésimo.

Esta función que relaciona a y\mathbf{y} y a X\mathbf{X} depende de los parámetros desconocidos θ\theta.

Por lo que es conveniente introducir una función que se vea explicitamente como función de θ\theta.

Función de verosimilitud

Esta función se denomina verosimilitud (likelihood):
(25)
L(θ)=L(θ;y,X)=p(yX;θ) L(\theta) = L(\theta; \mathbf{y}, \mathbf{X}) = p( \mathbf{y} | \mathbf{X}; \theta)

Donde p(yX;θ)p( \mathbf{y} | \mathbf{X}; \theta) es la probabilidad de toda la muestra; (24) es la probabilidad del ii-ésimo dato.

Dado que asumimos que ηi\eta_i es IDD:
(26)
L(θ)=p(yX;θ)=ip(yixi;θ)&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;=i12πσexp[12σ2(yixiθ)2]&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;=12πσexp[12σ2i(yixiθ)2] L(\theta) = p( \mathbf{y} | \mathbf{X}; \theta ) = \prod_i p(\mathbf{y}_i | \mathbf{x}_i ; \theta) \;\;\;\;\;\;\;\;\;\;\;\;\\ \;\;\;\;\;\;\;= \prod_i \frac{1}{\sqrt{2\pi} \sigma} \exp \left[-\frac{1}{2\sigma^2} \left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2 \right] \\ \;\;\;\;\;\;\;= \frac{1}{\sqrt{2\pi} \sigma} \exp \left[-\frac{1}{2\sigma^2} \sum_i \left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2 \right]

Función de log-verosimilitud y los Mínimos Cuadrados

Dado que maxxf(x)=maxxg(f(x))\max_x f(x) = \max_x g(f(x)) si gg es estrictamente creciente. Por ejemplo g1(x)=log(x)g_1(x) = \log(x), g2(x)=x2g_2(x) = x^2 ambas cumplen para para x&gt;0x&gt;0.

Luego en vez de maximizar la verosimilitud, uno pueded maximizar la log-verosimilitud: l(θ)=logL(θ)\mathcal{l}(\theta) = \log L(\theta)

(27)
l(θ)=log1(2πσ)nexp[12σ2i(yixiθ)2]=log[1(2πσ)n]12σ2i(yixiθ)2 \mathcal{l}(\theta) = \log \frac{1}{(\sqrt{2\pi} \sigma)^n} \exp \left[-\frac{1}{2\sigma^2} \sum_i \left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2 \right] \\ = \log \left[ \frac{1}{(\sqrt{2\pi} \sigma)^n} \right]-\frac{1}{2\sigma^2} \sum_i \left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2

Entonces, maximizar l(θ)\mathcal{l}(\theta) equivale a resolver la minimización:

(28)
min12i(yixiθ)2 \min \frac{1}{2}\sum_i\left( \mathbf{y}_i - \mathbf{x}_i^\top \theta \right)^2
que resulta ser el problema de mínimos cuadrados original.

¿Como llegamos a ello?


  1. Asumimos un modelo generador que relacional las variables independientes a partir de las dependientes

  2. Asumimos un modelo de ruido: IID y Gaussiana.

  3. La suposición IID implicó suma de residuos (errores) independientes en cada muestra.

  4. La distribución del ruido fue determinante que la log-verosimilitud se reduzca a la norma L2L_2


Nótese: otra distribución del ruido implicará otra norma.

Mínimos Cuadrados No-Lineales

Recordemos, los datos son denotados por

xiRnyiRXRm×nYRm \mathbf{x_i} \in \mathbb{R}^n \\ \mathbf{y_i} \in \mathbb{R} \\ X \in \mathbb{R}^{m \times n} \\ Y \in \mathbb{R}^{m}

Como ya vimos, basta que analicemos la regresion monovaluada. Ahora, en el modelo (3) asumamos no-lineal función f:RnRf:\mathbb{R}^n \rightarrow \mathbb{R} y que dicha función es evaluada dados unos parámetros θRk\theta \in \mathbb{R}^k:

(29)
yi=f(xi;θ)+ηi. \mathbf{y}_i=f(\mathbf{x}_i; \theta) + \eta_i.\\
Nóte que al escribir el modelo (29) hemos puesto un ‘;’ entre la xx y θ\theta. La razón es que queremos enfatizar que la función “produce” valores conforme cambiamos xx, y que el hecho de que, por ahora, no conozcamos los valores de los parámetros θ\theta es circunstancial. Una vez que la caractericemos (estimemos θ\theta) computaremos valores f(x)f(x).

Para estimar θ\theta, definimos una función que depende explícitamente de su valor. Por ello, definimos el residual:

(30)
ri(θ)=yif(xi,θ) r_i(\theta) = \mathbf{y}_i - f(\mathbf{x}_i, \theta)

Luego, en un esquema de mínimos cuadrados (no lineales), los parámetros θ\theta los puedemos estimar mediante la solución del problema de optmización:

(31)
θ=arg&ThinSpace;minθ&ThickSpace;F(θ)=12iri(θ)2=12r(θ)22=12r(θ)r(θ) \theta^* = \underset{\theta}{\operatorname{arg\,min}}\; F(\theta) = \frac{1}{2}\sum_i r_i(\theta)^2 = \frac{1}{2} \| r(\theta) \|_2^2= \frac{1}{2} r(\theta)^\top r(\theta)\\

donde hemos definido la función vectorial r:RkRmr:\mathbb{R}^k \rightarrow \mathbb{R}^m:

(32)
r(θ)=[r1(θ)r2(θ)rm(θ)] r(\theta) = \begin{bmatrix} r_1(\theta) \\ r_2(\theta) \\ \vdots \\ r_m(\theta) \\ \end{bmatrix}

Solución iterativa al probema de mínimos cuadrados no-lineales

Si usamos la estrategia de descenso de gradiente, entonces el gradiente esta dado por

(33)
θF(θ)=iri(θ)θri(θ)&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;=θr(θ)&ThickSpace;r(θ)=J(θ)r(θ) \nabla_\theta F(\theta) = \sum_i r_i(\theta) \nabla_\theta r_i(\theta)\;\;\;\;\;\;\;\;\;\;\;\; \\ \;\;\;\;\;\;\;\;\; = \nabla_{\theta} r(\theta) \; r(\theta) = J(\theta)^\top r(\theta)\\

Donde definimos el “Jacobiano” JJ de una función vectorial como:

(34)
Jij=riθj J_{ij} = \frac{\partial r_i }{\partial \theta_j}
Entonces

(35)
J(θ)=θr(θ)=[θr1(θ),θr2(θ),,θrm(θ)] J(\theta)^\top = \nabla_\theta r(\theta) = \begin{bmatrix} \nabla_\theta r_1(\theta), \nabla_\theta r_2(\theta), \ldots, \nabla_\theta r_m(\theta) \end{bmatrix}
Entonces, J(θ)J(\theta)^\top es el gradiente de cada una de las funciones rir_i acomodado columna por columna.

El algortimo de descenso de gradiente estará dado por:

(36)
θt+1=θtαiri(θ)θri(θ)=θtα&ThickSpace;J(θ)r(θ)&ThickSpace;&ThickSpace;&ThickSpace; \theta^{t+1} = \theta^{t} - \alpha \sum_i r_i(\theta) \nabla_\theta r_i(\theta) \\ = \theta^{t} - \alpha \; J(\theta)^\top r(\theta) \;\;\;

Newton, Gauss-Newton y Levenberg-Marquardt

Sin dar ninguna derivación formal, aqui introducimos directamente métodos mas eficientes de optimizacion de mínimos cuadrados no-lineales; ver su derivación en un texto de Optimizacion Numérica [2]_.

Los métodos de Newton calculan la actualización usando:

(37)
θt+1=θtα&ThickSpace;pt \theta^{t+1} = \theta^{t} - \alpha \; p^{t}

donde α\alpha se escoge tal que F(θt+1)F(θ)F(\theta^{t+1}) \le F(\theta) y la dirección de descenso pp es solución de alguno de los tres siguientes:

  1. Newton

(38)
[J(θ)J(θ)+H(θ)&ThinSpace;r(θ)]p=J(θ)r(θ) \left[ J(\theta)^\top J(\theta) + H(\theta) \, r(\theta) \right] p = - J(\theta)^\top r(\theta)

donde
H(θ)r(θ)=iri(θ)θ2ri(θ) H(\theta) r(\theta) = \sum_i r_i(\theta) \nabla_\theta^2 r_i(\theta)
Tal que HH es el Hessiano de rr y θ2ri\nabla_\theta^2 r_i es el Hessiano de rir_i.
2. Gauss-Newton

(39)
J(θ)J(θ)p=J(θ)r(θ) J(\theta)^\top J(\theta) p = - J(\theta)^\top r(\theta)

  1. Levenberg-Marquardt (LM)

(40)
[J(θ)J(θ)+τI]p=J(θ)r(θ) \left[ J(\theta)^\top J(\theta) + \tau I \right] p = - J(\theta)^\top r(\theta)
con τ&gt;0\tau &gt; 0 garantizando que la matriz tenga un número de condición apropiado para ser establemente resuelto el sistema.

El método de Newton no es el preferido debido a:

[2] J. Nocedal and S. J. Wright, Numerical Optimization, Springer 2nd Ed., 2006.

Gradiente estocástico

Como podemos observar la función de costo de mímimos cuadrados (lineales o no-lineales) puede escribirse como la suma de residuos individuales: la suma corre sobre todos los residuales. En el caso de problemas de aprendizaje de máquina, estos residuales se asocian con los datos y la suma se hace sobre toda la población. Esto admite una interpretación extra: la funcion de costo y su gradiente se pueden ver como esperanzas:

(41)
F(θ)=12i=1mri(θ)2=m2E{ri(θ)2} F(\theta) = \frac{1}{2}\sum_{i=1}^m r_i(\theta)^2 = \frac{m}{2}\mathbb{E} \{ r_i(\theta)^2 \}

(42)
θF(θ)=i=1mri(θ)θri(θ)=m&ThinSpace;E{ri(θ)θri(θ)} \nabla_\theta F(\theta) = \sum_{i=1}^m r_i(\theta) \nabla_\theta r_i(\theta) = m \,\mathbb{E} \{ r_i(\theta) \nabla_\theta r_i(\theta) \}

Si en vez de considerar toda la población, consideramos a la media muestral como estimador de la función de costo y su gradiente:

(43)
F^(θ)=12iSri(θ)2 \hat F(\theta) = \frac{1}{2}\sum_{i \in \mathcal{S} } r_i(\theta)^2

(44)
θF^(θ)=iSri(θ)θri(θ) \nabla_\theta \hat F(\theta) = \sum_{i \in \mathcal{S}} r_i(\theta) \nabla_\theta r_i(\theta)
Donde S{1,2,3,,m}\mathcal{S} \subset \{1,2,3,\ldots,m \} determina la muestra. Si se usa el F^(θ)\hat F(\theta) en vez de F(θ)F(\theta) en el procedimiento iterativo de optimización el algoritmo se denominará:

Gradiente estocástico, Newton-estocástico, Gauss-Newton estocástico, LM estocástico, Quasi-Newton estocástico, etc.

Estas variantes estocásticas de algoritmos deterministas han sido extensivamente usadas en problemas de gran escala y sobre todo en problemas relacionados con técnicas llamadas de APRENDIZAJE PROFUNDO (DEEP LEARNING).

Su ventaja es que evitan ser atrapados por mínimos locales y son computacionalmente eficientes.

Regresión Logística

Consideremos el problema de clasificación binaria donde los datos se denotan por

xiRn&ThickSpace;&ThickSpace;&ThickSpace;yi{0,1}&ThickSpace;&ThickSpace;XRm×n&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;Y{0,1}m \mathbf{x_i} \in \mathbb{R}^n \;\;\; \\ \mathbf{y_i} \in \{0, 1 \} \\ \;\; X \in \mathbb{R}^{m \times n} \;\;\; \\ \;\; Y \in \{0, 1 \}^{m}

donde asumimos que a todos los datos les hemos agregado un 11 en su primer entrada xi1=1x_{i1} = 1 y a partir del 2do. elemento se tienen las características observadas. Esto simplifica la notación al escribir el sistema lineal.
Luego

X=[x1x2x3x3] X = \begin{bmatrix} \mathbf{x}_1^\top \\ \mathbf{x}_2^\top \\ \mathbf{x}_3^\top \\ \vdots \\ \mathbf{x}_3^\top \end{bmatrix}

El algoritmo de regresión logística es un algoritmo de clasificación binaria para clases linealmente separables, capítulo 4 en [3], pero donde existen datos que se confunden (no exactamente linelamente separables).

Es un poco extraño, es un clasificador, pero se le denomina “regresión” logística. Si somos un poco pacientes, entenderemos el porque del nombre.

Primero introducimos la función sigmoide (que tiene forma de sigma o ‘s’):

(45)
ϕ(z)=11+exp(z) \phi(z) = \frac{1}{1+exp(-z)}

La función (45) se grafica en seguida usando Python

[3] T._Hastie et al., The elements of Statistical Learning, 2nd Ed. Springer, 2009.

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(z):
    return (1/(1+np.exp(-z)))

T = 10
z = np.arange(-T,T, 0.1)

plt.figure(figsize=(10, 4))
plt.axvline(0.0,color='k')
plt.axhline(0.0,ls='dotted', color='k')
plt.axhline(1.0,ls='dotted', color='k')
plt.axhline(0.5,color='k')
plt.plot(z,sigmoid(z))
plt.ylim(-.1,1.1)
plt.xlabel('z')
plt.ylabel('$\phi(z)$')
plt.suptitle('Sigmoide')
plt.show()

png

Recordenos que el ii-ésimo dato esta dado por el vector columna xi\mathbf{x}_i. Ahora, asumiremos que las etiquetas binarias estarán sujetas al modelo

(46)
yi=ϕ(xiω)+ηi \mathbf{y}_i=\phi( \mathbf{x}_i^\top \omega ) + \eta_i

donde los parámetros ωRk\omega \in \mathbb{R}^k son tal que el hiperplano

xiω&gt;0&ThickSpace;&ThickSpace;si&ThickSpace;&ThickSpace;yi=1 \mathbf{x}_i^\top \omega &gt; 0 \;\; si \;\; \mathbf{y}_i=1

y

xiω&lt;0&ThickSpace;&ThickSpace;si&ThickSpace;&ThickSpace;yi=0; \mathbf{x}_i^\top \omega &lt;0 \;\; si \;\; \mathbf{y}_i=0;

luego, la sigmoide ϕ:R[0,1]\phi:\mathbb{R} \rightarrow [0,1] hará el resto del trabajo: ajustar los valores del hiperplano a las etiquetas. Los errores en classificación y residuales se representan por η\eta.

Usando una estrategia de mínimos cuadrados no lineales, ω\omega se puede estimar mediante:

(47)
argminωF(ω)=12i=1m[yiϕ(xiω)]2 \arg\min _\omega F(\omega) = \frac{1}{2}\sum_{i=1}^m \left[\mathbf{y}_i-\phi(\mathbf{x}_i^\top \omega) \right]^2

En este caso, el gradiente estará dado por las parciales

(48)
F(ω)ωj=i=1m[ϕ(xiω)yi]ϕ(xiω)&ThinSpace;[1ϕ(xiω)]&ThinSpace;xij \frac{ \partial F(\omega) }{\partial \omega_j} = \sum_{i=1}^m \left[\phi(\mathbf{x}_i^\top \omega) - \mathbf{y}_i \right] \phi(\mathbf{x}_i^\top \omega) \, [1-\phi(\mathbf{x}_i^\top \omega)] \, \mathbf{x}_{ij}

donde usamos que ϕ(z)z=ϕ(z)[1ϕ(z)]\frac{ \partial \phi(z) }{\partial z} = \phi(z)[1-\phi(z)].

Sin embargo, mejor tomemos un enfoque probabilista para derivar el algoritmo de ML para la Regresión Logística , y veamos si tenemos una ventaja.

Derivación Probabilística de la Regresión Logística

Asumamos pp la probabilidad de que ocurra un evento, luego 1p1-p será la probabilidad de que no ocurra.

Ahora, ¿que tanto es mas probable que ocurra el evento a que no ocurra? Para responder esta pregunta calculamos los momios (odd ratios), que es la razón:

(49)
p1p \frac{p}{1-p}

que se interpreta como sigue. Si es valor toma un valor de 2, significa que es 2 veces mas probable que ocurra pp respecto a que no ocurra. Una forma mas cómoda de ver esta razón es tomado su logaritmo (natural), y definimos la función logit:

(50)
logit(p)=logp1p \mathrm{logit}(p) = \log \frac{p}{1-p}

Los momios y la función Logit son graficados usando Python con el código siguiente

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt

def logit(p):
    return np.log(p/(1-p))

p = np.arange(0.01,1,0.01)
one = np.ones(p.shape)

plt.figure(figsize=(15, 8))
plt.suptitle('Momios')

plt.subplot(121)
plt.plot(p,p/(1-p))
plt.axvline(0.0, color='k')
plt.axvline(1.0,ls='dotted', color='k')
plt.axhline(0.0,color='k')
plt.xlabel('p')
plt.ylabel('razon')
#plt.grid(True)

plt.subplot(122)
plt.plot(p,logit(p))
plt.axvline(0.0, color='k')
plt.axvline(1.0,ls='dotted', color='k')
plt.axhline(0.0,color='k')
plt.xlabel('p')
plt.ylabel('logit')
#plt.grid(True)

plt.show()

png

Asi que si p=2/3p=2/3, tendiamos que 1p=1/31-p = 1/3 los momios son 22.

Si p=.9p=.9, tendiamos que 1p=.11-p = .1 los momios son 99.

Si p=.95p=.95, tendiamos que 1p=.051-p = .05 los momios son 1919.

Por ello, la gráfica anterior de la izquierda se dispara para valores de p cercanos a 11. Por otro lado logit(p)=logplog(1p)\mathrm{logit}(p) = \log p - \log(1-p) es más fácil de entender, es cero para cuando p=1p=.5p=1-p=.5, y antisimérica a partir de ese punto.

Verosimilitud de la Regresión Logística

Denotamos por p(yi=1xi;ω)p(y_i=1|\mathbf{x}_i;\omega) la probabilidad condicional de clasificar el dato ii a la clase 1 dado el vector de rasgos xi\mathbf{x}_i, asumidos los parámetros ω\omega.

Luego, para cualquier clase:

(51)
p(yixi;ω)={ϕ(xiω)yi=11ϕ(xiω)yi=0 p(y_i|\mathbf{x}_i;\omega) = \left\{ \begin{matrix} \phi(\mathbf{x}_i^\top \omega) &amp; y_i=1 \\ 1-\phi(\mathbf{x}_i^\top \omega) &amp; y_i=0 \\ \end{matrix}\right.

o podemos usar

(52)
p(yixi;ω)=yiϕ(xiω)+(1yi)[1ϕ(xiω)] p(y_i|\mathbf{x}_i;\omega) = y_i \phi(\mathbf{x}_i^\top \omega) + (1-y_i)[1-\phi(\mathbf{x}_i^\top \omega)]
o, también

(53)
p(yixi;ω)=ϕ(xiω)yi[1ϕ(xiω)](1yi) p(y_i|\mathbf{x}_i;\omega) = \phi(\mathbf{x}_i^\top \omega)^{y_i} [1-\phi(\mathbf{x}_i^\top \omega)]^{(1-y_i)}
Las tres son equivalentes. Sin embargo, usaremos la forma (53) que corresponde a la distribución Bernoulli. Una distribución dicotómica, con solo dos posibles resultados: la probabilidad de éxitos pp y fracasos (1p)(1-p).

Ahora asumamos la probabibilidad condicional de las clasificación de toda la muestra

(54)
P(YX;ω)=ip(yixi;ω)=iϕ(xiω)yi[1ϕ(xiω)](1yi) P(\mathbf{Y}|\mathbf{X};\omega) = \prod_i p(y_i|\mathbf{x}_i;\omega) = \prod_i \phi(\mathbf{x}_i^\top \omega)^{y_i} [1-\phi(\mathbf{x}_i^\top \omega)]^{(1-y_i)}

donde asumimos que los datos estan IID.

Ahora, notamos que la condicional P(YX;ω)P(\mathbf{Y}|\mathbf{X};\omega) es función de Y\mathbf{Y}, asume que ensayamos X\mathbf{X} para unos parámetros ω\omega. Pero si lo que queremos es aprender es ω\omega a partir de datos de entrenamiento [X,Y][\mathbf{X}, \mathbf{Y}], necesitamos definir una función que depende explícitamente de ω\omega y use como datos a [X,Y][\mathbf{X}, \mathbf{Y}]. Esta función es, como antes, la verosimilitud:

(55)
L(ω;X,Y)=defP(YX;ω) L(\omega; \mathbf{X}, \mathbf{Y} ) \overset{def}{=} P(\mathbf{Y}|\mathbf{X};\omega)

o simplemente L(ω)L(\omega).

La log-verosimulitud

Para estimar ω\omega debe podemos usar (55) como función de mérito. Es decir, encontrar la ω\omega que maximice la verosimilitud. Pero esta función tiene productos de probabilidades (valores entre cero y uno) y podemos tener el riesgo de sobreflujo en los cálculos. Asi que mejor calculamos la log-verosilitud :
l(ω)=logL(ω) l(\omega) = \log L(\omega)
y tenemos:

(56)
l(ω)=iyilogϕ(xiω)+(1yi)log[1ϕ(xiω)] l(\omega) = \sum_i y_i \log \phi(\mathbf{x}_i^\top \omega) + (1-y_i) \log [1-\phi(\mathbf{x}_i^\top \omega)]

Luego, para calcular el gradiente, calculamos cada parcial como

(57)
l(ω)ωj=izi{yilogϕ(zi)+(1yi)log[1ϕ(zi)]}ϕ(zi)ωj=i[yiϕ(xiω)]xij&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace; \frac{\partial l(\omega)}{\partial \omega_j} = \sum_i \frac{\partial}{\partial z_i} \left\{ y_i \log \phi(z_i) + (1-y_i) \log [1-\phi(z_i)] \right\} \frac{\partial \phi(z_i) }{\partial \omega_j} \\ = \sum_i \left[ y_i - \phi(\mathbf{x}_i^\top \omega) \right] \mathbf{x}_{ij} \;\;\;\;\;\; \;\;\;\;\;\; \;\;\;\;\;\; \;\;\;\;\;\;

Donde hemos usado

(58)
ϕ(z)z=z11+ez=ez(1+ez)2=(11+ez)(11+ez1+ez)=ϕ(z)[1ϕ(z)]&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace;&ThickSpace; \frac{\partial \phi(z)}{\partial z} = \frac{\partial}{\partial z} \frac{1}{1+ e^{-z}} = \frac{e^{-z}}{(1+ e^{-z})^2} \\ = \left(\frac{1}{1+ e^{-z}}\right)\left( \frac{1-1 + e^{-z}}{1+ e^{-z}}\right) \\ = \phi(z)[1- \phi(z)] \;\;\;\;\;\;

(59)
z{ylogϕ(z)+(1y)log[1ϕ(z)]}=(yϕ(z)1y1ϕ(z))ϕ(z)z=(yϕ(z)1y1ϕ(z))ϕ(z)(1ϕ(z)=y[1ϕ(z)](1y)ϕ(z)=yϕ(z) \frac{\partial}{\partial z} \left\{ y \log \phi(z) + (1-y) \log [1-\phi(z)] \right\} = \left(\frac{y}{\phi(z)} - \frac{1-y}{1-\phi(z)} \right) \frac{\partial \phi(z)}{\partial z} \\ = \left(\frac{y}{\phi(z)} - \frac{1-y}{1-\phi(z)} \right) \phi(z){(1- \phi(z)} \\ = y [1-\phi(z)] -(1-y) \phi(z) \\ = y - \phi(z)

El gradiente de la función de de costo logística (56) esta dada por (57), que es muy similar en forma al gradiente de la regresión lineal de mínimos cuadrados, ver (18). Por lo computacionalmente no es mucho mas costosa la regresión logística.

La regresión logistica puede explicarse a partir de la siguiente figura.

logistica

  1. Se tienen dos clase (casi) linealmente separables (puntos rojos y azules), con etiquetas binaria yi{1,1}y_i \in \{-1, 1\}.

  2. El plano ωx\omega^\top x es tal que al evaluarse en cualquier punto xix_i con etiqueta yi=1y_i =-1 resulta en ωxi&lt;0\omega^\top x_i &lt;0. Similarmente, para xjx_j con etiqueta yj=1y_j=-1 resulta en ωxj&gt;0\omega^\top x_j &gt;0. Es importante notar que existen algunos puntos que no cumplen con la regla que hemos establecido (en la figura hay un punto rojo), el propósito es calcular ω\omega tak que minimize los errores.

  3. Al aplicar la función sigmoide al plano, se tienen que los puntos el mapeo queda en el intervalo [1,1][-1, 1], y se aproximará a la saturación ({1,1}\{-1, 1\}) a medida que la pendiente sea máxima: en el límite, es el plano vertical.

Es decir, la optimización de la regresión logística no esta acotada si las clases son perfectamente separables. Ésto se resuelve combiando al azar la etiquerta de un dato (convirtiendolo en outlier).

¿Que pasa si en vez de construir nuestro regresor sobre la restricción yi(ωxi)&gt;0y_i(\omega^\top x_i) &gt;0, construimos sobre yi(ωxi)&gt;1y_i(\omega^\top x_i) &gt; 1?

Respuesta. Ver las Máquinas de Vectores de Soporte [4]

[4] C. Cortes and V. Vapnik. “Support-vector networks”. Machine Learning. 20 (3): 273–297 (1995).