¿Cuál es el algoritmo de regresión por etapas hacia adelante?

14

Tal vez es solo que estoy cansado, pero tengo problemas para tratar de entender el algoritmo de Regresión progresiva por etapas. De "Elementos del aprendizaje estadístico" página 60:

La regresión progresiva hacia adelante (FS) está aún más restringida que la regresión progresiva hacia adelante. Comienza como una regresión progresiva, con una intersección igual a [la media de] y, y predictores centrados con coeficientes inicialmente todos 0.

En cada paso, el algoritmo identifica la variable más correlacionada con el residual actual. Luego calcula el coeficiente de regresión lineal simple del residual en esta variable elegida, y luego lo agrega al coeficiente actual para esa variable. Esto continúa hasta que ninguna de las variables tenga correlación con los residuos, es decir, los mínimos cuadrados se ajustan cuando N> p.

Entonces, ¿es este el algoritmo ?:

b[1]=mean(y)
b[2..n]=0
r=(y-X*b)
index, maxCorr = max(transpose(r)*X)
while(abs(maxCorr) > someThreshold)
  b[index]=b[index]+regress(r,X[1..n][index])
  r=(y-X*b)
  index, maxCorr = max(transpose(r)*X)

Donde b es un vector columna de los coeficientes, X es una matriz de entradas e y es un vector columna de salidas. Es decir y = X * b + error.

Preguntando porque este algoritmo me da solo unos pocos coeficientes distintos de cero en el conjunto de datos en el que lo estoy probando (con umbral = .0001), y la precisión de la predicción no es muy buena.

ektrules
fuente

Respuestas:

5

Los autores hacen un mal trabajo al explicar el algoritmo en su libro. Si observa las ecuaciones 1.6 y 1.7 en su documento , se vuelve más claro. El documento tiene una formulación ligeramente diferente (construye el vector residual en lugar del coeficiente), pero el punto clave es que alcanza un ajuste de mínimos cuadrados en pasos muy pequeños (es por eso que el libro menciona que el algoritmo puede tomar "muchos más" que p pasos "para terminar). Puede reemplazar "regresión (...)" con un pequeño número, o puede multiplicarlo por algo así como 0.05. Juegue con él y vea qué funciona.

Además, su umbral parece pequeño. r '* X dará números proporcionales pero mucho mayores que las correlaciones reales (por ejemplo, para los datos de diabetes en el documento, las correlaciones son ~ 70-900).

Kevin
fuente