Sea A una matriz de variables independientes y B sea la matriz de los valores dependientes. En la regresión Ridge, definimos un parámetro de modo que: . Ahora deje que [usv] = svd (A) y entrada diagonal de 's'. definimos grados de libertad (df) = . La regresión de cresta reduce los coeficientes de los componentes de baja varianza y, por lo tanto, el parámetro controla los grados de libertad. Entonces, para, que es el caso de la regresión normal, df = n, y por lo tanto, se considerarán todas las variables independientes. El problema al que me enfrento es encontrar el valor de dado 'df' y la matriz 's'. Intenté reorganizar la ecuación anterior pero no obtuve una solución de forma cerrada. Proporcione sugerencias útiles.
ridge-regression
Amit
fuente
fuente
Respuestas:
Un algoritmo de Newton-Raphson / puntuación de Fisher / serie Taylor sería adecuado para esto.
Tienes la ecuación para resolver con derivada Entonces obtienes:λ
reorganizando se obtiene: Esto configura la búsqueda iterativa. Para los valores iniciales iniciales, suponga en la sumatoria, luego obtendrá .λ
Esto "va" en la dirección correcta (aumenta cuando la suma es demasiado grande, disminuye cuando es demasiado pequeña), y típicamente solo toma unas pocas iteraciones para resolver. Además, la función es monotónica (un aumento / disminución en siempre disminuirá / aumentará la suma), de modo que convergerá de manera única (sin máximos locales).λ λ
fuente
Aquí está el pequeño código de Matlab basado en la fórmula probada por probabilistico:
fuente
while ( abs(diff)>threshold )
.while( abs(diff) > threshold )
porque la tolerancia a la diferencia debe ser accesible tanto desde la izquierda como desde la derecha. Por ejemplo, digamos diff = y umbral = entonces la condición del bucle es falsa, pero claramente la solución no ha convergido.