He leído que la regresión de crestas podría lograrse simplemente agregando filas de datos a la matriz de datos original, donde cada fila se construye usando 0 para las variables dependientes y la raíz cuadrada de o cero para las variables independientes. Luego se agrega una fila adicional para cada variable independiente.
Me preguntaba si es posible obtener una prueba para todos los casos, incluida la regresión logística u otros GLM.
logistic
generalized-linear-model
ridge-regression
Copo de nieve
fuente
fuente
Respuestas:
La regresión de cresta minimiza .∑ni=1(yi−xTiβ)2+λ∑pj=1β2j
(A menudo se requiere una constante, pero no se reduce. En ese caso, se incluye en elβ p
Luego
Esto funciona para la regresión lineal. No funciona para la regresión logística, porque la regresión logística ordinaria no minimiza una suma de residuos al cuadrado.
[La regresión de cresta no es lo único que se puede hacer a través de estos trucos de pseudoobservación: surgen en varios otros contextos]
fuente
De hecho, generalizar esta receta a GLM no es difícil, ya que los GLM generalmente se ajustan utilizando mínimos cuadrados repesados de forma iterativa . Por lo tanto, dentro de cada iteración, se puede sustituir el paso regular de mínimos cuadrados ponderados con un paso de mínimos cuadrados ponderado de cresta para obtener un GLM penalizado de cresta. De hecho, en combinación con penalizaciones de cresta adaptativa, esta receta se utiliza para ajustar GLM penalizados L0 (también conocido como el mejor subconjunto, es decir, GLM donde se penaliza el número total de coeficientes distintos de cero). Esto se ha implementado, por ejemplo, en el paquete l0ara , consulte este documento y este para obtener más detalles.
También vale la pena señalar que la forma más rápida de resolver una regresión de cresta regular es usar
para el caso donde
n>=p
, o usandocuando
p>n
y para un modelo sin intercepción.Esto es más rápido que usar la receta de aumento de filas , es decir, hacer
Si resulta que necesita restricciones de no negatividad en sus coeficientes ajustados, entonces simplemente puede hacer
que luego da un resultado un poco más preciso por cierto que
(y estrictamente hablando, solo la solución
nnls(A=crossprod(X)+diag(lambdas), b=crossprod(X,Y))$x
es la correcta).Todavía no he descubierto cómo el caso restringido de no negatividad podría optimizarse aún más para el
p > n
caso; avíseme si alguien sabe cómo hacer esto ... [lmridge_nnls_largep = function (X, Y, lambda) t(X) %*% nnls(A=tcrossprod(X)+lambda*diag(nrow(X)), b=Y)$x
no funciona]fuente