Inscription / Connexion Nouveau Sujet
Niveau école ingénieur
Partager :

Régression multiple pénalisation L1

Posté par
loic74
23-07-14 à 12:05

Bonjour,

Je suis actuellement amené à utilisé des méthodes de régression linéaire dans mon stage. J'ai choisi de modéliser mon problème à l'aide de la régression multiple. C'est-à-dire que ma variable est expliquée par un jeu d'autres variables :
Y=X\beta + \epsilon avec \beta un vecteur de paramètre à déterminer sur plusieurs échantillon.

J'ai d'abord utilisé la méthode des moindres carrés pour estimer ce paramètre mais cela me donnait un modèle sur-paramétré. J'ai donc ajouté une pénalisation L1 que j'ai calculée avec l'algorithme LASSO. Je minimise
\sum(y_i-x_i*\beta)^2+\lambda||\beta||_1 au lieu de \sum(y_i-x_i*\beta)^2.

Dans les dernières versions de Matlab, une fonction (lasso) permet de sélectionner le "meilleur" lambda par une méthode de validation croisée et de minimiser cette valeur (ce n'est pas trivial puisque le problème n'est plus linéaire).
L'idée est de valoriser les solutions pour lesquelles beaucoup de composantes de \beta sont nulles afin de renforcer la robustesse du modèle et de garder les variables pertinentes.

Tout marche bien lorsque mes variables explicatives sont toutes du même type (par exemple une vitesse) mais je voudrais introduire d'autres variables de type différents. Les échelles vont donc être modifiées et je pense qu'il risque d'y avoir un déséquilibre entre des variables qui sont toutes comprises entre 5 et 10 par exemple et d'autres entre 40 et 50.
L'algorithme risque de comprendre que certaines variables sont plus influentes alors qu'il s'agit juste d'un changement d'échelle.

je vous demande donc votre avis sur ces problèmes que j'essaie d'anticiper parce que l'extraction de ces nouvelles variables explicative sera assez longue. Ai-je raison de m'inquiéter ? Existe-t-il des techniques pour y remédier?
j'ai, par exemple, pensé à centrer et réduire les variables mais je ne sais pas en quelle mesure cela affectera mon modèle.

Merci d'avance,

Loïc

Posté par
Razes
re : Régression multiple pénalisation L1 23-07-14 à 16:06

Normalement, la solution de la minimisation en \beta du critère Lasso:

\left \| Y-X\beta \right \|^{2}+2\lambda||\beta||_1=\sum(y_i-x_i*\beta)^2+2\lambda||\beta||_1

Il manque un 2 dans ta formule.

Posté par
Razes
re : Régression multiple pénalisation L1 23-07-14 à 16:09

Ne tiens pas compte de ma réponse car ceci n'est valable que si X'X=I_p.

Posté par
Razes
re : Régression multiple pénalisation L1 23-07-14 à 16:23

Pourquoi n'utiliserais tu pas la méthode Elastic Net qui permet d'introduire deux types de pénalités simultanément.

En introduisant un autre \beta_2 qui tiendrait compte de l'appartenance à tel ou tel intervalle en utilisant l'expression \left \| Y-X\beta_1 -X^2\beta_2\right \|^{2} car ainsi tu aaura un parametre qui tiendrait compte de cette amplification des valeurs des variables.

Posté par
loic74
re : Régression multiple pénalisation L1 23-07-14 à 21:30

Merci beaucoup pour ta (tes) réponses.

Pour le 2\lambda, ça ne change pas grand chose, il me suffira de prendre un \lambda deux fois plus petit.

En fait, j'ai testé la pénalisation L2 et elle ne marche pas très bien dans mon cas, j'ai donc testé la L1 qui me satisfait beaucoup plus. Effectivement, j'ai vu qu'il existait une méthode qui combinait les deux mais je la mets de côté, je voudrais d'abord explorer totalement la seule pénalisation L1 qui marche plutôt pas mal déjà.
Je testerai ensuite Elastic Net pour éventuellement affiner.

Pour le \beta_2, je vois bien ce que tu veux dire mais je pense que ton raisonnement revient à ce que je faisais mais avec désormais X=\left(\begin{array}{l}X_1\\X_2\end{array}\right) et \beta=\left(\begin{array}{l}\beta_1\\\beta_2\end{array}\right) ce qui ne résoud pas le problème d'échelle car les coefficients \beta sont mélangés et seront évalués en même temps, me trompé-je?

Posté par
Razes
re : Régression multiple pénalisation L1 24-07-14 à 03:35

Effectivement, mais le terme avec \lambda comprends, si mes souvenirs sont bons, norme de \beta_1 et \beta_2 ainsi que \beta_1.\beta_2.

Je vais essayer de m y pencher pour me rafraichir la mémoire.

Posté par
loic74
re : Régression multiple pénalisation L1 24-07-14 à 09:33

Merci beaucoup, mais je ne voudrais pas te faire perdre du temps avec ça.

Effectivement, considérer la norme \beta_1\beta_2 pourrait prendre en compte ce problème.
Le problème c'est que je ne pense pas que MATLAB implémente cela, je devrais alors recoder LASSO à la main, ce qui sera long et incertain...
Je vais déjà essayer de lancer l'algorithme de base et peut-être que je n'aurai pas ce problème.

Ma question était surtout de savoir si ce genre de problème était quelque chose de récurrent pour lequel il existait une solution classique. Ce n'est pas le coeur de mon sujet et je n'aurai pas le temps de le parcourir théoriquement entièrement.

Je lance l'algorithme sans modification ce matin et te tiens au courant du résultat.

Merci beaucoup en tout cas !

Loïc



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1768 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !