Tengo dos implementaciones diferentes de la ridge
en MATLAB. Uno de ellos es simplemente
-
$\mathbf x = (\mathbf{A}'\mathbf{A}+\mathbf{I}\lambda)^{-1}\mathbf{A}'\mathbf b$
(como se ve en la Wikipedia de la regresión ridge página), con $\mathbf{I}$ la matriz identidad de tamaño de las columnas($\mathbf{A}$) $\times$ columnas($\mathbf{A}$), y
-
Simplemente estoy llamando de Matlab "ridge" con
x = ridge(A, b, lambda)
Mi problema es que ambos devolver resultados diferentes. (1) devuelve los resultados que yo quiero (sé que esto mediante la comparación de los resultados con otras personas) pero, ¿por qué no (2) no se devuelven los mismos resultados?
Mi matriz $\mathbf A$ es escasa, se llena con 1% 1 y el 99% 0. Algunas de las columnas contienen casi ningún 1. La mayor diferencia parece ser que el coeficiente de las columnas con muy pocos 1 son muy cercanas a 0 en (1), pero puede ser muy lejos de 0 en (2)
¿Alguien tiene alguna idea de por qué es diferente y cómo puedo modificar la llamada en (2) para dar los mismos resultados (1)?