Tengo dos implementaciones diferentes de ridge
en MATLAB. Uno es simplemente
(como se ve en la página de regresión de cresta de Wikipedia ), con siendo la matriz de identidad de las columnas de tamaño ( \ mathbf {A} ) \ times columnas ( \ mathbf {A} ), y
Simplemente estoy llamando "cresta" de Matlab con
x = ridge(A, b, lambda)
Mi problema es que ambos devuelven resultados diferentes. (1) devuelve los resultados que quiero (lo sé al comparar los resultados con otras personas) pero ¿por qué (2) no devuelve los mismos resultados?
Mi matriz es escasa, está llena con 1% de 1 y 99% de 0. Algunas columnas contienen casi no 1's. La mayor diferencia parece ser que el coeficiente para aquellas columnas con muy pocos 1 están muy cerca de 0 en (1), pero puede estar bastante lejos de 0 en (2)
¿Alguien tiene alguna idea de por qué es diferente y cómo puedo modificar la llamada en (2) para obtener los mismos resultados que (1)?
ridge
ridge
(según la documentación de MATLAB) indica que (como es estándar): por defecto, b se calcula después de centrar y escalar los predictores para que tengan una media 0 y desviación estándar 1. El modelo no incluye un término constante, y X no debe contener una columna de 1s. .