¿Alguien puede señalarme en la dirección de un algoritmo en línea (recursivo) para la regularización de Tikhonov (mínimos cuadrados regularizados)?
En una configuración fuera de línea, calcularía usando mi conjunto de datos original donde se encuentra usando la validación cruzada n-fold. Se puede predecir un nuevo valor de y para una x dada usando y = x ^ T \ hat \ beta .x y = x T β
En un entorno en línea, dibujo continuamente nuevos puntos de datos. ¿Cómo puedo actualizar cuando extraigo nuevas muestras de datos adicionales sin hacer un recálculo completo de todo el conjunto de datos (original + nuevo)?
Respuestas:
Deje , luegoM−1n=(XXT+λI)−1
De acuerdo con la fórmula de Woodbury , tenemos
Como resultado,
El promedio de Polyak indica que puede usar para aproximar con rangos de a . En su caso, puede intentar seleccionar el mejor para su recursión.M - 1 nηn=n−α α0.51αM−1n1+xTnM−1nxn α 0.5 1 α
Creo que también funciona si aplica un algoritmo de gradiente por lotes:
fuente
Un punto que nadie ha abordado hasta ahora es que generalmente no tiene sentido mantener constante el parámetro de regularización medida que se agregan puntos de datos. La razón de esto es que normalmente crecerá linealmente con el número de puntos de datos, mientras que el término de regularización no lo hará.λ ‖ λ β ‖ 2∥Xβ−y∥2 ∥λβ∥2
fuente
Quizás algo como el descenso de gradiente estocástico podría funcionar aquí. Calcule usando su ecuación anterior en el conjunto de datos inicial, esa será su estimación inicial. Para cada nuevo punto de datos, puede realizar un paso de descenso de gradiente para actualizar su estimación de parámetros.β^
fuente
En la regresión lineal, una posibilidad es actualizar la descomposición QR de directamente, como se explica aquí . Supongo que, a menos que desee volver a estimar después de agregar cada nuevo punto de datos, se puede hacer algo muy similar con la regresión de cresta.λX λ
fuente
Aquí hay un enfoque alternativo (y menos complejo) en comparación con el uso de la fórmula de Woodbury. Tenga en cuenta que y se pueden escribir como sumas . Dado que estamos calculando cosas en línea y no queremos la suma para hacer estallar, podemos utilizar alternativamente medios ( y ).XTX XTy X T X / n X T y / nXTX/n XTy/n
Si escribe e como:X y
podemos escribir las actualizaciones en línea a y (calculada hasta el fila -ésimo) como:XTX/n XTy/n t
Su estimación en línea de se convierte enβ
Tenga en cuenta que esto también ayuda a que la interpretación de permanezca constante a medida que agrega observaciones.λ
Este procedimiento es cómo https://github.com/joshday/OnlineStats.jl calcula estimaciones en línea de regresión lineal / cresta.
fuente