5 votos

Actualizar una regresión sobre la marcha?

Supongamos que tengo 100 personas cada uno, con una altura, peso y edad. Puedo hacer una regresión que predice la edad basada en la estatura y el peso. Ahora, me gustaría actualizar ese modelo cuando conozco a alguien nuevo. No quiero volver a proceso de 101 personas, aunque--quiero tomar el modelo que ya tengo y a incorporar la nueva persona en ella.

Por ejemplo, decir que me pareció de los primeros 100 que:

edad = .08*altura + .06*peso + 7.

Ahora, me encuentro con alguien con la edad de 120 altura de 56 y peso 34.

Yo no sé el número de casos con el que originalmente se hizo la regresión. Por lo tanto, mi idea inicial era que sólo podía asumir que todos ellos encajan en el modelo de la edad = .08*altura + .06*peso + 7 y de alguna manera el peso del nuevo caso para que tarda el viejo en cuenta (por ejemplo, supongamos que tengo 100 personas que encajan en el modelo, por tanto, crear una ecuación de regresión basado en el 100 idénticos puntos de datos y, a continuación, añadir la de 101? Eso es casi como el de correr la regresión de nuevo en los 101 puntos de datos, excepto que nada necesita ser almacenado a continuación, ya que podría derivar 100 a partir de la ecuación.

Me gustaría hacer algo como esto en gran escala, y no quiero ser la creación de una enorme base de datos de los casos, sólo quiero actualizar el modelo con cada nuevo caso.

1voto

Michael Hardy Puntos 128804

Aquí estoy pensando en que debería recordar algo acerca de esto, o tal vez yo no debería. Tenemos una matriz de "ecuación": $$ \begin{bmatrix} 1 & h_1 & w_1 \\ \vdots & \vdots & \vdots \\ 1 & h_n & w_n \end{bmatrix} \begin{bmatrix} 7 \\ 0.08 \\ 0.06 \end{bmatrix} \desbordado{\text{?}} = \begin{bmatrix} a_1 \\ \vdots \\ a_n \end{bmatrix} \tag 1 $$ La igualdad no es en realidad la igualdad: a la derecha, si ponemos el amueblada edades más que el observado las edades, tendríamos la igualdad. Escribir $(1)$ en forma matricial como $$ X\beta = A. $$ La matriz $X$ no tiene inversa: no es $3\times n$ matriz podríamos poner a su derecho y obtener el $n\times n$ matriz identidad. Pero hay una izquierda a la inversa: hay un $3\times3$ matriz podemos poner a su izquierda para obtener el $3\times3$ matriz identidad. Que la matriz es $$ \underbrace{(X^T X)^{-1}}_{3\times3} \underbrace{{}\quad X^T\quad{}}_{3\times n}. \tag 2 $$ Por lo tanto $$ \begin{bmatrix} 7 \\ 0.08 \\ 0.06 \end{bmatrix} = (X^T X)^{-1} X^T \etiqueta 3 $$ Ejercicio: la Igualdad tiene en $(3)$, independientemente de si $A$ es la columna de los armarios de las edades o la columna de observarse las edades.

Ahora añadimos un $(n+1)$ésima fila de a $X$, consiguiendo $\begin{bmatrix} X \\ W \end{bmatrix}$ donde $W\in\mathbb R^{1\times3}$. Ahora, en lugar de $(2)$ tendremos $$ \left(\begin{bmatrix} X^T & W^T \end{bmatrix} \begin{bmatrix} X \\ W \end{bmatrix}\right)^{-1} \begin{bmatrix} X^T & W^T \end{bmatrix} \begin{bmatrix} 7 \\ 0.08 \\ 0.06 \end{bmatrix} \desbordado{\text{?}} = \begin{bmatrix} a_1 \\ \vdots \\ a_n \\ a_{n+1} \end{bmatrix}. $$

La matriz necesitamos invertir se convierte en el $3\times3$ matriz $$ \begin{bmatrix} X^T X + W^T W \end{bmatrix}. $$ Cómo hacerlo sin tener que hacer todo desde cero es lo que no sé en este momento.

Expertos en Software debe tener este problema, pero no sé lo que ha hecho.

1voto

Claude Leibovici Puntos 54392

Supongamos que usted se ajustan a un modelo $Z = a +b X+cY$ $N$ puntos de datos $(X_i,Y_i,Z_i)$. El llamado normal ecuaciones son $$\sum _{i=1}^N Z_i= N a + b\sum _{i=1}^N X_i+ c\sum _{i=1}^N Y_i$$ $$\sum _{i=1}^N X_iZ_i= a\sum _{i=1}^N X_i + b\sum _{i=1}^N X_i^2+ c\sum _{i=1}^N X_iY_i$$ $$\sum _{i=1}^N Y_iZ_i= a\sum _{i=1}^N Y_i + b\sum _{i=1}^N X_iY_i+ c\sum _{i=1}^N Y_i^2$$ and you solve them for $a,b,c$.

Si nos re-escribir estas ecuaciones en una más manera simbólica, como $$Sz=N a+b Sx + c Sy$$ $$Sxz=a Sx+b Sxx+c Sxy$$ $$Syz=a Sy+b Sxy+c Syy$$ the solutions are given by $$c=\frac{-N \text{Sxx} \text{Syz}+N \text{Sxy} \text{Sxz}+\text{Sx}^2 \text{Syz}-\text{Sx} \text{Sxy} \text{Sz}-\text{Sx} \text{Sxz} \text{Sy}+\text{Sxx} \text{Sy} \text{Sz}}{-N \text{Sxx} \text{Syy}+N \text{Sxy}^2+\text{Sx}^2 \text{Syy}-2 \text{Sx} \text{Sxy} \text{Sy}+\text{Sxx} \text{Sy}^2}$$ $$b=\frac{c N \text{Sxy}-c \text{Sx} \text{Sy}-N \text{Sxz}+\text{Sx} \text{Sz}}{\text{Sx}^2-N \text{Sxx}}$$ $$a=\frac{-b \text{Sx}-c \text{Sy}+\text{Sz}}{N}$$

Ahora, agrega otro punto de datos ($N+1$), por lo que las ecuaciones son ahora $$\sum _{i=1}^{N+1} Z_i= (N+1) a + b\sum _{i=1}^{N+1} X_i+ c\sum _{i=1}^{N+1} Y_i$$ $$\sum _{i=1}^{N+1} X_iZ_i= a\sum _{i=1}^{N+1} X_i + b\sum _{i=1}^{N+1} X_i^2+ c\sum _{i=1}^{N+1} X_iY_i$$ $$\sum _{i=1}^{N+1} Y_iZ_i= a\sum _{i=1}^{N+1} Y_i + b\sum _{i=1}^{N+1} X_iY_i+ c\sum _{i=1}^{N+1} Y_i^2$$ But the new sums can be expressed as the old sums plus an extra term corresponding to the new data point $$\sum _{i=1}^{N+1} Z_i=\sum _{i=1}^{N} Z_i+Z_{N+1}$$ $$\sum _{i=1}^{N+1} X_iZ_i=\sum _{i=1}^{N} X_iZ_i+X_{N+1}Z_{N+1}$$ y así sucesivamente para todas las sumatorias.

Así, sólo es necesario mantener los valores de las sumas y actualizarlos cada vez que se añada un nuevo punto de datos. La única cosa que queda es resolver el nuevo normal de tres ecuaciones para el que me dio las fórmulas.

Así, la actualización de la regresión mediante la adición de un punto adicional es realmente simple.

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