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 :
avec
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
au lieu de
.
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 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
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 qui tiendrait compte de l'appartenance à tel ou tel intervalle en utilisant l'expression
car ainsi tu aaura un parametre qui tiendrait compte de cette amplification des valeurs des variables.
Merci beaucoup pour ta (tes) réponses.
Pour le , ça ne change pas grand chose, il me suffira de prendre un
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 , je vois bien ce que tu veux dire mais je pense que ton raisonnement revient à ce que je faisais mais avec désormais
et
ce qui ne résoud pas le problème d'échelle car les coefficients
sont mélangés et seront évalués en même temps, me trompé-je?
Effectivement, mais le terme avec \lambda comprends, si mes souvenirs sont bons, norme de et
ainsi que
.
Je vais essayer de m y pencher pour me rafraichir la mémoire.
Merci beaucoup, mais je ne voudrais pas te faire perdre du temps avec ça.
Effectivement, considérer la norme 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 :