IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Regression non linéaire


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut Regression non linéaire
    Bonjour à tous,

    J'ai un problème du type régression non linéaire avec une particularité supplémentaire : je ne dispose pas de la variable exogène (y) pour toutes les données mais pour des groupes de données. Je m'explique:

    Mon modèle est du type: y_i = somme sur j (f(X_ij, paramètres))

    Pour le moment je calcule la somme du carré des résidus

    S = somme sur i { y_i - somme sur j (f(X_ij, paramètres)) }²

    Pour le moment, je résous cela sans subtilité avec une fonction d'optimisation (recuit simulé, ou une recherche locale + multistart) mais je me demande s'il n'y a pas mieux...

    Qu'en pensez vous?

    Merci.

  2. #2
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    réseau neuronal?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Non, non... Calibrage d'un modèle économétrique

  4. #4
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    je proposai un réseau neuronal comme modèle de régression non linéaire.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    Citation Envoyé par sfiliste Voir le message
    J'ai un problème du type régression non linéaire avec une particularité supplémentaire : je ne dispose pas de la variable exogène (y) pour toutes les données mais pour des groupes de données.
    Si j'ai bien compris, tu te trouves typiquement dans un problème d'apprentissage semi-supervisé (en l'occurence une régression semi-supervisée).
    Tu devrais jeter un oeil de ce côté-là.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Pourrais-je en savoir un peu plus sur ces deux notions?

    Pour bien préciser mon problème:

    - J'ai des variables prédictives X1, ... Xp (p variables explicatives) qui sont des vecteurs de n observations chacune

    Si j'avais pour chacune de ces observations la valeur Y, je ferais un modèle "classique" de regression non linéaire avec Y = f(X1, ... , Xp ; paramètres) où le but est d'estimer ces paramètres.

    Ici je n'ai que les valeurs Y pour des groupes (disjoints) de ces observations.

    ----------------
    Exemple (fictif!).

    Supposons que je cherche à expliquer le salaire d'un individu à partir de son expérience (en mois) et de sa durée d'études (en mois)

    On aurait par exemple les données suivantes:

    N° observation//Expérience//Durée_etudes
    1 11 39
    2 286 15
    3 100 12
    4 109 48
    5 337 9
    6 334 43
    7 16 26
    8 76 5
    9 82 17
    10 188 42
    11 76 60
    12 330 4
    13 398 9
    14 351 49
    15 196 18

    Et supposons que j'ai les salaires suivants (uniquement pour des groupes):

    1+2+3 72421
    4+5 39134
    6 50056
    7+8 97253
    9+10+11+12 162467
    13+14+15 84504

    On cherche à calibrer un modèle non linéaire (volontairement complexe) du type salaire = K * expérience^alpha + durée_études^beta

    Merci.

  7. #7
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Je ne vois pas où est le problème. Tu as 6 observations pour lesquelles tu peux écrire une fonction des 3 inconnues alpha et beta et K. Comparer 39134 à
    K * (expérience[4]^alpha + durée_études[4]^beta + expérience[5]^alpha + durée_études[5]^beta) etc.
    C'est un pb de régression élémentaire.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  8. #8
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    j'avais mal compris ton problème.
    Il est beaucoup plus compliqué que prévu.
    Es-tu sûr de ne pas pouvoir avoir d'autres données?
    En bricolant, tu pourras faire un modèle mais peu précis.
    Et dans ce cas, tu devras faire des hypothèses simplificatrices (tu es dans un problème de valeurs manquantes).

    En première approche naïve, tu peux partir du principe que le salaire moyen dans chaque groupe est le salaire de l'individu "barycentre".

    1+2+3 72421 => salaire moyen = 72421 / 3
    individu moyen => vecteur des moyennes des variables explicatives des individus 1, 2 et 3.

    Ensuite, tu fais une régression avec les individus moyens de chaque groupe.
    Puis, tu prédis les salaires de tes individus de départ.

    Si après test, tes résultats te conviennent, on pourra améliorer un tout petit peu l'algorithme en ajoutant des pondérations.

    Ceci dit, je ne vois pas comment tu vas pouvoir valider ton modèle...

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    Je ne vois pas où est le problème. Tu as 6 observations pour lesquelles tu peux écrire une fonction des 3 inconnues alpha et beta et K.
    Non, justement, il n'a pas les 6 individus (il manque les variables explicatives).

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Mon problème est en effet assez complexe!

    Pour la validation du modèle, il n'y a pas de problème : je calcule les indicateurs classiques (R² ; plage des coefficients par bootstrap ; etc.)

    A vrai dire, pour l'estimation, je n'en avais pas jusqu'à maintenant car j'estimais les paramètres de mon modèle en minimisant la somme du carré des écarts, et via un optimiser type recuit simulé.

    Mais j'ai beaucoup plus de données maintenant (environ 5000 Y et 50000X, X étant de dimension environ 10) et la fonction d'optimisation met des jours à tourner...

  11. #11
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Non, justement, il n'a pas les 6 individus (il manque les variables explicatives).
    Par habitude, j'appelle observations les données que l'on veut comparer à un modèle : les 6 nombres du 2e paragraphe.
    Pour chacune de ces observations, il peut calculer une valeur théorique avec trois paramètres. Le pb est un problème de moindres carrés parfaitement banal.
    (Jouer un peu sur les pondérations ne devrait pas changer grand chose)

    Je ne sais pas ce qu'est une "variable explicative". Ici çà ne fait qu'obscurcir inutilement un problème tout simple.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  12. #12
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par sfiliste Voir le message
    Pour la validation du modèle, il n'y a pas de problème : je calcule les indicateurs classiques (R² ; plage des coefficients par bootstrap ; etc.)
    Il y a encore quelque chose qui a dû m'échapper.
    Comment pouvez-vous faire un rééchantillonage alors que vous ne connaissez pas la valeur à prédire de vos individus?

    Citation Envoyé par sfiliste Voir le message
    Mais j'ai beaucoup plus de données maintenant (environ 5000 Y et 50000X, X étant de dimension environ 10) et la fonction d'optimisation met des jours à tourner...
    C'est beaucoup trop long, votre base de données n'est pas particulièrement grande.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    Citation Envoyé par Nebulix Voir le message
    Par habitude, j'appelle observations les données que l'on veut comparer à un modèle : les 6 nombres du 2e paragraphe.
    Pour chacune de ces observations, il peut calculer une valeur théorique avec trois paramètres. Le pb est un problème de moindres carrés parfaitement banal.
    (Jouer un peu sur les pondérations ne devrait pas changer grand chose)
    Si j'ai bien compris, il a d'un côté une base de données de 50 000 individus décrits par 10 paramètres/variables.
    D'un autre côté, il y a un tableau de 5000 valeurs à prédire, une pour chaque groupe d'individu.
    Je ne vois pas comment formuler ce problème comme un problème aux moindres aux carrés sans faire un prétraitement puisque toutes les valeurs à prédire de ces individus sont manquantes et qu'il n'a aucun individu (donc pas de variables) correspondant aux valeurs à prédire qu'il détient.

    Citation Envoyé par Nebulix Voir le message
    Je ne sais pas ce qu'est une "variable explicative". Ici çà ne fait qu'obscurcir inutilement un problème tout simple.
    J'ai simplement repris le vocabulaire employé par sfiliste puisqu'il est l'auteur de la question.
    Le terme "variable explicative" ne devrait pas obscurcir le problème puisque que c'est un terme couramment employé, notamment dans les livres.
    Pour que ce soit clair, il s'agit des variables qui décrivent un individu, les paramètres si vous préférez.
    Pour un individu x, c'est-à-dire une ligne de la base de données, on a par exemple

    x = [25;68;4;11];

    Les nombres 25, 68, 4 et 11 sont les valeurs des variables explicatives pour x.
    Ces variables peuvent par exemple être une hauteur, une largeur, une longueur, un poids, un âge, etc...

  14. #14
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    toutes les valeurs à prédire de ces individus sont manquantes
    une boucle du type :
    for individu:=1 to n_individus do
    salaire_total_presume[data[individu].groupe]:=
    salaire_total_presume[data[individu].groupe]+
    k*(data[individu].expérience^alpha + data[individu].durée_études^beta)

    permet de calculer pour chaque groupe une valeur directement comparable à une donnée !
    Il n'y a qu'à minimiser la somme sur tous les groupes de
    (salaire_total_presume[groupe]-salaire_total_observé[groupe])^2
    par rapport à K,alpha,beta.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Merci à tous de vos réponses.

    Nebulix : je suis parfaitement d'accord avec toi, mais la question est : comment minimiser?! Nous sommes dans le cas d'une fonction non convexe à 10 variables (dans mon cas réel) qui a donc une multitude d'optima.

    Jusque là, j'avais mis en place :

    - optim locale (par exemple Nelder Mead) + Multistart
    - optim globale par métaheuristique (recuit, GA)

    Mais avec l'explosion de mes données, le problème du temps de calcul est plus que préoccupant.

    Comment vois tu la minimisation?

    Merci.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Puisque vous avez 10, vous aurez 10 fonctions de la forme
    Ri = Ai + Pi ^ Bi
    où Pi est le ième paramètre, Ai et Bi les valeurs Alpha et Béta à trouver
    et tel que Somme ((Ri-Vi)²) est minimum. V étant la valeur vraie, naturellement inconnue.
    Cette somme sera minimum si sa dérivée s'annule.
    Il en résulte un système linéaire de 20 équations à 20 inconnues Ai et Bi pour i de 1 à 10.
    Je sais résoudre ce système, par contre, sauf la méthode, je ne suis pas sûr de savoir le poser. Mais je peux chercher.
    Le calcul et la résolution ne devraient pas poser de problème de temps d'exécution.
    En me référant à une formule très utilisée et basée sur le même principe, la formule finale devrait être de la forme
    T = A . P1^B1 . P2^B2 . ... P10^B10
    Ce qui fait qu'en fait il y aurait 11 inconnues.
    Excusez-moi d'écrire au fur et à mesure de mon raisonnement, mais je n'ai pas encore LA solution, mais je connais le principe.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 25
    Points : 7
    Points
    7
    Par défaut
    Bonsoir Pierre,

    Mon problème est plus générique qu'un modèle du type
    Y = somme(k * x1^a * x2^b * ... * x10^j) (avec a à j les paramètres à trouver)

    Mon modèle peut etre très peu linéaire:

    Y = somme(k * x1^a + (x2 + 1*b) * x3^b *exp(x4*c) x10^j) (avec a à j les paramètres à trouver), etc...

    La résolution analytique est clairement non jouable (du moins je pense!)

    Merci

  18. #18
    Invité
    Invité(e)
    Par défaut
    Effectivement, la méthode sous entend que la fonction résultant est continue et dérivable.
    J'étais entrain d'écrire les équations. Mais je continue à pense que si elle est continue et dérivable, cette méthode est celle qui est la plus "probable".

    Il me vient une autre idée.
    Si il est possible de définir des nim et max pour chaque paramètre, et un pas pour chaque paramètre, il est possible de créer une grille qui sera complétée par chaque individu (les 10 paramètres).
    Pour faire un prévision, la case sont la valeur est la plus proche sera la plus probable. Mais c'est juste une idée.

    Autre idée
    En la matière, il y a un principe qui pourrait être utilisé, c'est l'indépendance des écarts. C'est à dire que l'on prendrait indépendamment les paramètres. Pour chaque paramètre, on fixerait la formule, c'est à dire sa forme (exponentielle, puissance ou je ne sais quoi) puis à l'aide d'un changement de variable, on serait ramené au problème précédent (11 ou 20 équations).

    Bonsoir.
    Dernière modification par Invité ; 16/09/2010 à 19h44.

  19. #19
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par sfiliste Voir le message
    Merci à tous de vos réponses.

    Nebulix : je suis parfaitement d'accord avec toi, mais la question est : comment minimiser?! Nous sommes dans le cas d'une fonction non convexe à 10 variables (dans mon cas réel) qui a donc une multitude d'optima.

    Jusque là, j'avais mis en place :

    - optim locale (par exemple Nelder Mead) + Multistart
    - optim globale par métaheuristique (recuit, GA)

    Mais avec l'explosion de mes données, le problème du temps de calcul est plus que préoccupant.

    Comment vois tu la minimisation?

    Merci.
    Je ne connais pas de solution pour trouver à coup sûr le minimum le plus profond quand il y en a plusieurs. Nelder Mead + Multistart est la meilleure stratégie que je connaisse, je n'ai jamais essayé le recuit (Si tu veux faire part de ton expérience à ce sujet, j'apprécierais beaucoup).
    - explosion des données : as-tu besoin de toutes ? Si elles sont représentatives du même ensemble, tu peux dégrossir le calcul avec un petit sous-ensemble tiré au hasard (le +dur) et raffiner ensuite.
    - 10 variables c'est beaucoup si elles sont couplées, mais alors on peut se demander si une solution a un sens. Et calculer les corrélations est une galère.
    - si tu peux écrire ta fonction sous la forme :a1*f1{x}+a2*f2{x}+... tu peux ajuster les a par une méthode linéaire ,diminuer le nombre de dimensions du simplexe et améliorer ton calcul
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  20. #20
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    As-tu besoin de résultats, ou de coefficients explicites dans ta formule? Car, je réitère, un réseau neuronal sur 50000*10 valeurs n'est pas "très" long à entrainer.

    Dans ton exemple (salaire), un RN donne ça:



    Et pour des valeurs fictives on obtient par exemple

    16 80 70 226847.8125
    17 300 6 72129.83594
    18 290 17 100825.8672
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

Discussions similaires

  1. regression non linéaire
    Par romainmill dans le forum Calcul scientifique
    Réponses: 24
    Dernier message: 11/03/2014, 09h54
  2. regression non linéaire
    Par thtghgh dans le forum Mathématiques
    Réponses: 8
    Dernier message: 16/09/2011, 14h49
  3. Regression non linéaire - Prédicteurs
    Par thtghgh dans le forum SAS STAT
    Réponses: 11
    Dernier message: 14/11/2010, 13h04
  4. Regression non linéaire
    Par DooX4EvEr dans le forum MATLAB
    Réponses: 0
    Dernier message: 11/08/2010, 13h01
  5. Loi de King - Regression non linéaire
    Par damienw dans le forum Mathématiques
    Réponses: 6
    Dernier message: 14/05/2008, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo