Quel est l'algorithme de régression étape par étape?

14

Peut-être que c'est juste que je suis fatigué, mais j'ai du mal à essayer de comprendre l'algorithme de régression par étapes. À partir de "Éléments de l'apprentissage statistique" page 60:

La régression pas à pas (FS) est encore plus contrainte que la régression pas à pas. Il commence comme une régression pas à pas, avec une ordonnée à l'origine égale à [la moyenne de] y, et des prédicteurs centrés avec des coe ffi cients initialement tous à 0.

À chaque étape, l'algorithme identifie la variable la plus corrélée avec le résiduel actuel. Il calcule ensuite le coe ffi cient de régression linéaire simple du résidu sur cette variable choisie, puis l'ajoute au coe e cient actuel pour cette variable. Cela se poursuit jusqu'à ce qu'aucune des variables n'ait une corrélation avec les résidus, c'est-à-dire que les moindres carrés correspondent lorsque N> p.

Alors, est-ce l'algorithme?:

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)

Où b est un vecteur colonne des coefficients, X est une matrice d'entrées et y est un vecteur colonne des sorties. Soit y = X * b + erreur.

Demander parce que cet algorithme ne me donne que quelques coefficients non nuls sur l'ensemble de données sur lequel je le teste (avec seuil = .0001), et la précision de la prédiction n'est pas très bonne du tout.

ektrules
la source

Réponses:

5

Leurs auteurs expliquent mal l'algorithme dans leur livre. Si vous regardez les équations 1.6 et 1.7 dans leur article , cela devient plus clair. Le papier a une formulation légèrement différente (il construit le vecteur résiduel plutôt que le coefficient), mais le point clé est qu'il atteint un minimum de carrés ajustés très en très petites étapes (c'est pourquoi le livre mentionne que l'algorithme peut prendre "beaucoup plus" que p étapes "pour terminer). Vous pouvez soit remplacer "régression (...)" par un petit nombre, soit le multiplier par quelque chose comme 0,05. Jouez avec et voyez ce qui fonctionne.

De plus, votre seuil semble petit. r '* X va donner des nombres proportionnels mais beaucoup plus grands que les corrélations réelles (par exemple pour les données sur le diabète dans le papier, les corrélations sont ~ 70-900).

Kevin
la source