Programmation quadratique et Lasso

11

J'essaie d'effectuer une régression au lasso, qui a la forme suivante:

Minimiser w dans (YXw)(YXw)+λ|w|1

Étant donné unλ , on m'a conseillé de trouver le optimal wà l'aide de la programmation quadratique, qui prend la forme suivante:

Minimiser x en , sous réserve deAxb.12xQx+cxAxb.

Maintenant, je me rends compte que le terme doit être transformé en terme de contrainte A x b , ce qui est assez simple. Cependant, je ne vois pas comment je pourrais transférer le premier terme de la première équation dans le premier terme du second. Je ne pouvais pas trouver grand-chose sur le net, alors j'ai décidé de demander ici.λAxb

spurra
la source

Réponses:

10

En gardant à l'esprit que nous travaillons avec comme variable ' x ' dans le formulaire standard, développons ( Y - X w ) ( Y - X w ) et collectons les termes dans w wx(YXw)(YXw) et dans w et w , et constantes.w[something]www

Expliquez pourquoi vous pouvez ignorer les constantes.

Expliquez pourquoi vous pouvez combiner les termes et w .ww


Comme BananaCode a maintenant compris avec un peu de leader le long du chemin, vous pouvez soit écrire et c = - 2 X Q=2XX ouplus simplement, vous pouvez simplement écrire Q = X X et c = - X Y (puisque f ( x ) et k f ( x ) ont le même argument pour tout k > 0 ).c=2XY Q=XXc=XYf(x)kf(x)k>0

Glen_b -Reinstate Monica
la source
Les constantes peuvent être ignorées, car si x_ est le minimum de f (x), alors x_ + c est le minimum de f (x) + c, donc nous pouvons ignorer la constante c. Je vais modifier ma question pour montrer où je suis resté coincé.
spurra
BananaCode votre explication a plusieurs défauts. Si par "est le minimum à " vous voulez dire "est l'argument selon lequel f ( x ) est minimisé", vous dites quelque chose comme "f(x)f(x) est l' argmin de f ". Mais votre conclusion est fausse. Si vous ajoutez c à f , vous n'ajoutez pas c à l'argmin. xargminfcfc
Glen_b -Reinstate Monica
Voyez où j'ai écrit dans ma réponse? Quel estquelque chose quevous avez maintenant entre le w et le w au bas de votre question ?? w[something]www
Glen_b -Reinstate Monica
Oui, je voulais dire que est l' a r g m i n de f . Pourriez-vous donner un exemple où ma conclusion est fausse? Le [ s o m e t h i n g ] est le Qxargminf[something]Q matrice que j'essaie de former. Si j'étends j'obtiens w X X w - w X w(XXwXY) . La première partie représenterait la forme de la Q matrice, mais je ne peux pas se débarrasser du second terme - w ' X ' Y . wXXwwXYQwXY
spurra
1
@ AD.Net Les contraintes sont principalement couvertes dans l'autre réponse.
Glen_b -Reinstate Monica
11

Je voulais ajouter comment résoudre la transformation des contraintes dans une forme utilisable pour la programmation quadratique, car ce n'est pas aussi simple que je le pensais. Il n'est pas possible de trouver une matrice A réelletelle que A w s | w i | s .|wi|sAAws|wi|s

L'approche que j'ai utilisée était de diviser les éléments du vecteur w en w + i et w - i , de sorte que w i = w + i - w - i . Si w i0 , vous avez w + i = w i et w - i + i = 0wiwwi+wiwi=wi+wiwi0wi+=wi , sinon vous avez w - i = | w i | et wwi=0wi=|wi|wi+=0 . Ou en termes plus mathématiques, wi+=|wi|+wi2 et Les deuxw - i etw + i sontnombres non négatifs. L'idée derrière la répartition des nombres est que vous avez maintenant| wi| =w + i +w - i , éliminant efficacement les valeurs absolues.wi=|wi|wi2.wiwi+|wi|=wi++wi

La fonction d'optimisation se transforme en: , sous réserve de w + i + w - is ,12(w+w)TQ(w+w)+cT(w+w)wi++wis,wi+,wi0

et c sont donnés comme indiqué ci-dessus par Glen_bQc

Cela doit être transformé en une forme utilisable, c'est-à-dire que nous avons besoin d'un vecteur. Cela se fait de la manière suivante:

12[w+w]T[QQQQ][w+w]+[cTcT][w+w]

sujet à

[IDIDI2D][w+w][sD02D]

est le D matrice unité de dimension, s D a D de dimension vecteur constitué uniquement de la valeur s et 0 D a 2 * D de dimension de vecteur nul. Le premier semestre assure | w i | = w + i + w - is , le second w w + et w -IDDsDDs0D2D|wi|=wi++wisMaintenant, il est sous une forme utilisable d'utiliser la programmation quadratique pour rechercherwi+,wi0w+w , étant donné l' . Une fois cela fait, votre paramètre optimal par rapport à s est w = w + - w - .ssw=w+w

Source et lectures complémentaires: Résolution d'un problème de programmation quadratique avec des contraintes linéaires contenant des valeurs absolues

spurra
la source
2D(w+,w)w+ww0
La matrice et le vecteur dans l'expression finale peuvent être plus simples et en fait plus corrects. Au lieu de [Id Id] [w + w−] '≤ Sd, vous pouvez simplement mettre [1 1 .... 1] [w + w-]' ≤ s. C'est littéralement équivalent à ∑ | wi | = ∑ (wi + + wi−) ≤ s.
Marko