Algorithme récursif (en ligne) des moindres carrés régularisés


12

Quelqu'un peut-il m'orienter vers un algorithme en ligne (récursif) pour la régularisation de Tikhonov (moindres carrés régularisés)?

Dans un cadre hors ligne, je calculerais β^=(XTX+λI)1XTY utilisant mon ensemble de données d'origine où λ est trouvé en utilisant la validation croisée n fois. Une nouvelle valeur y peut être prédite pour un x donné en xutilisant y=xTβ^ .

Dans un environnement en ligne, je dessine continuellement de nouveaux points de données. Comment puis-je mettre à jour β^ lorsque je dessine de nouveaux échantillons de données supplémentaires sans faire un recalcul complet sur l'ensemble des données (original + nouveau)?


1
Vos moindres carrés régularisés par Tikhonov sont peut-être plus communément appelés Levenberg-Marquardt dans les cercles statistiques, même lorsqu'ils sont appliqués à des problèmes linéaires purs (comme ici). Il y a un article sur Levenberg Marquardt en ligne ici . Je ne sais pas si c'est une aide.
Glen_b -Reinstate Monica

Réponses:


11

β^n=(XXT+λI)1i=0n1xiyi

Soit Mn1=(XXT+λI)1 , puis

β^n+1=Mn+11(i=0n1xiyi+xnyn) , et

Mn+1Mn=xnxnT , nous pouvons obtenir

β^n+1=β^n+Mn+11xn(ynxnTβ^n)

Selon la formule de Woodbury , nous avons

Mn+11=Mn1Mn1xnxnTMn1(1+xnTMn1xn)

Par conséquent,

β^n+1=β^n+Mn11+xnTMn1xnxn(ynxnTβ^n)

La moyenne de Polyak indique que vous pouvez utiliser pour approximer avec plages de au . Vous pouvez essayer dans votre cas de sélectionner le meilleur pour votre récursivité.M - 1 nηn=nαα0,51αMn11+xnTMn1xnα0.51α


Je pense que cela fonctionne aussi si vous appliquez un algorithme de gradient par lots:

β^n+1=β^n+ηnni=0n1xi(yixiTβ^n)


Que se passe-t-il si je mets à jour mon régresseur à chaque fois avec des échantillons de lot de nouvelles données, où chaque lot successif est tiré d'une distribution légèrement différente? c'est-à-dire non IID. Dans ce cas, je voudrais que le régresseur prenne en compte les nouvelles données, mais n'affecte pas ses prédictions dans la localité des anciennes données (lots précédents)? Pouvez-vous m'indiquer toute littérature que vous pourriez juger utile?
rnoodle

Bonne question, mais désolé pour le moment, je ne peux pas dire dans quelle mesure cela affecterait votre modèle si vous utilisez toujours la formule de gradient par lots dans la réponse, ou approximez en appliquant directement la forme matricielle: eta ^ (- alpha) * X (Y-X 'beta_n) où X, Y sont vos nouveaux échantillons de lots
lennon310

salut, il semble que le coefficient de régularisation ne soit pas impliqué dans la formule de mise à jour récursive? ou est-ce seulement important dans l'initialisation de l'inverse de la matrice M?
Peng Zhao

4

Un point que personne n'a abordé jusqu'à présent est qu'il n'est généralement pas logique de maintenir le paramètre de régularisation constant lorsque des points de données sont ajoutés. La raison en est que augmentera généralement linéairement avec le nombre de points de données, tandis que le terme de régularisation ne le fera pas. X β - y 2λ βλXβy2λβ2


Voilà un point intéressant. Mais exactement pourquoi cela "n'a pas de sens"? Garder constant est sûrement mathématiquement valide, donc "pas de sens" doit être compris dans une sorte de contexte statistique. Mais quel contexte? Qu'est-ce qui ne va pas? Y aurait-il une sorte de solution facile, comme remplacer les sommes des carrés par des carrés moyens? λ
whuber

Remplacer la somme des carrés par une version mise à l'échelle (par exemple, l'erreur quadratique moyenne) aurait du sens, mais le simple fait d'utiliser les moindres carrés récursifs n'y parviendra pas.
Brian Borchers

Quant à ce qui ne va pas, selon votre choix de , vous obtiendrez une solution très sous-régulée avec un grand nombre de points de données ou une solution très sur-régularisée avec un petit nombre de points de données. λ
Brian Borchers

On pourrait suspecter cela, mais si est réglé initialement après avoir reçu points de données et ensuite plus de points de données sont ajoutés, le fait que les solutions résultantes avec plus de points de données et les mêmes soient sur ou sous-régularisés dépendra de ces nouveaux points de données. Cela peut être analysé en prenant les points de données agissent comme un échantillon iid d'une distribution à plusieurs variables, dans ce cas , il semble doit être réglé à à l' étape . Cela changerait les formules de mise à jour, mais d'une manière si régulière et simple qu'un calcul efficace pourrait encore être possible. (+1)n λ λλnλλNN/nN
whuber

3

Peut-être que quelque chose comme la descente du gradient stochastique pourrait fonctionner ici. Calculez utilisant votre équation ci-dessus sur le jeu de données initial, qui sera votre estimation de départ. Pour chaque nouveau point de données, vous pouvez effectuer une étape de descente de gradient pour mettre à jour votre estimation de paramètre.β^


J'ai depuis réalisé que SGD (peut-être un mini-lot) est la voie à suivre pour des problèmes en ligne comme celui-ci, c'est-à-dire la mise à jour des approximations des fonctions.
rnoodle

1

En régression linéaire, une possibilité consiste à mettre à jour directement la décomposition QR de , comme expliqué ici . Je suppose que, sauf si vous souhaitez réestimer après chaque nouveau point de données a été ajouté, quelque chose de très similaire peut être fait avec la régression de crête.λXλ


0

Voici une approche alternative (et moins complexe) par rapport à l'utilisation de la formule de Woodbury. Notez que et peuvent être écrits comme des sommes . Puisque nous calculons des choses en ligne et que nous ne voulons pas que la somme explose, nous pouvons également utiliser des moyens ( et ).XTXXTyXTX/nXTy/n

Si vous écrivez et comme:Xy

X=(x1TxnT),y=(y1yn),

nous pouvons écrire les mises à jour en ligne à et (à la valeur calculée en de -ième rangée) comme:XTX/nXTy/nt

At=(11t)At1+1txtxtT,

bt=(11t)bt1+1txtyt.

Votre estimation en ligne de devient alorsβ

β^t=(At+λI)1bt.

Notez que cela aide également à l'interprétation de restant constant lorsque vous ajoutez des observations!λ

Cette procédure est la façon dont https://github.com/joshday/OnlineStats.jl calcule les estimations en ligne de la régression linéaire / crête.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.