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 :

Problème de convergence, moindres carrés non-linéaire


Sujet :

Mathématiques

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Problème de convergence, moindres carrés non-linéaire
    Bonjour,

    J'ai un problème de convergence en utilisant la méthode des moindres carrés sur une fonction non-linéaire à 13 paramètres. La fonction en question est une somme de tanh(x), de sech(x) et d'un terme linéaire a*x. L'estimation initiale des paramètre est assez bonne; la courbe tracée est proche de mes observations (13 mesures). À la première itération, Matlab m'avertit que la matrice est singulière ou mal conditionnée et après quelques itérations, le résidu au carré devient infini (NaN). Je pense que c'est parce que j'ai trop de degrés de liberté, ou peut-être parce que je n'ai pas défini de limites à mes paramètres? Peut-être faudrait-il que j'établisse une région de confiance? Comment?

    merci,
    Mathieu

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    Salut,
    Je n'avais pas vu ton sujet.
    As tu résolu ton problème ?
    Quel méthode utilise tu :Newton , gradient , quasi Newton , Levenberg Marquart, .... ?
    La matrice de poids dont tu tires ta matrice hessienne est composé d'une ou plusieurs matrice de covariance. Test tes matrices de covariances par une décomposition de Choleski pour savoir si tes matrices sont strictement positive. MatLab à la commande "Chol" pour cela. S'il te renvoi une erreur, c'est que ta matrice n'est pas définit strictement positive. Du coup tu ne pourra pas faire un ajustement non-linéaire et tu va devoir refaire ta matrice de covariance. Afficher la matrice de correlation ( cor XY = cov XY / ( covX cov Y)^(1/2) si ma mémoire est bonne ) est une bonne solution aussi pour voir de suite si ta matrice de covariance est mal conditionné.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour, je n'ai pas encore résolu mon problème.

    J'utilise la méthode présentée sur le site de Wolfram:
    http://mathworld.wolfram.com/Nonline...esFitting.html

    Je l'ai implémentée dans Matlab et pour solutionner dLambda, j'utilise a\b dans Matlab. C'est là qu'il m'averti que la matrice est soit singulière (ou proche de l'être) ou mal conditionnée. Je crois que c'est à cause de mon nombre élevé de paramètres, tel qu'il est indiqué sur le site de Wolfram:

    "although the convergence properties generally worsen as the number of free parameters is increased"

    Car après 2-3 itérations, l'optimisation diverge et le RCOND est NaN.

    Il faut sûrement que j'établisse des limites pour chaque paramètre, comme dans le curve fitting toolbox de Matlab? Ou peut-être est-ce ma fonction et la méthode de résolution?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    Salut,
    la méthode je la trouve un peu bizarre proposé sur ce site, me semble que logiquement on utilise des somme quadratique, ce qui ne fais pas.
    Sinon il semblerait que cela soit typiquement une méthode de Gauss Newton et je n'ai jamais eu de probleme de convergence pourtant sur cette méthode meme à 154 groupes. Le seul probleme de convergence que tu peux avoir c'est si tes matrice de covariance ( ou toute celle que tu va inverser ) ne sont pas définit strictement positive.
    Fait leur passer un test de décomposition de Cholesky.
    Je viens de voir que wikipédia proposé une expliquation de l'algorithme de gauss-Newton : http://fr.wikipedia.org/wiki/Gauss-Newton , cela te permettra de comparer avec la méthode que tu utilise.
    Sinon tout simplement en format matriciel tu peux la résumer à :
    $$ X_i = X_{i-1} - H^-1_{i-1} ( A_{voulu}-A_{expérimental}) J $$ ( si tu as latex compile la formule cela sera plus claire )
    avec:
    -H la matrice hessienne et J ta matrice n m dite Jacobienne.

    Mais typiquement ce probleme de NAN est un probleme de mauvaise définition de tes matrices d'incertitudes. Parfois éffectuer une décomposition SVD résout le soucis si tes indices de conditionnement de matrice sont trop élevé.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé le test de Cholesky sur la matrice que j'inverse (a) et il ne me donne pas d'erreur, il génère la matrice triangulaire. Cependant mon RCOND dès la première itération est de 1.54e-20, donc très mauvais. Je vais essayer d'implémenter une autre méthode.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    Salut,
    as tu essayé la décomposition SVD pour inversé ta matrice ?
    De plus fixe un critère d'arret, par exemple un texte de chi 2, dès que celui-ci augmente tu arrettes l'ajustement.
    Toutefois dans le cas de la méthode de newton, si ton système est linéaire seul une itération est possible

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut,

    J'ai finalement implémenté ma méthode avec LMA. Ça fonctionne, mais j'ai l'impression que le fitting pourrait être meilleur. J'ai tenté de modifier par tâtonnement les bornes et mes conditions initiales, mais je n'arrive pas à une réponse sous R2=0.95. Est-ce qu'il y a une autre méthode de régression qui serait meilleure en générale, même si elle est plus beaucoup plus lente? Car mon fitter doit fonctionner pour une large gamme de signaux et donc de grandeurs de paramètre différentes.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 24
    Points
    24
    Par défaut
    LMA pour Levenberg Marquart ? logiquement c'est la même chose qu'une méthode de Newton mais avec une coeficient de marquart que tu additionnes à chaque itération.
    Dans le cas d'un coefficent grand tu te rapproche d'une descente du gradient et dans l'autre cas de la méthode de Newton.
    As tu essayé de modifier l'implémentation de ce coefficent qui est ajouté dans ton algorithme par addition au hessien. Dans le cas de grand IDC je préfère y mettre un coeficient multiplicateur avec limite au coefficient de marquart 1. Cela permet d'aller en général plus loin dans l'ajustement mais c'est un poil plus long car plus précis

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/02/2014, 13h07
  2. Réponses: 1
    Dernier message: 25/01/2012, 20h41
  3. Erreur d'indice et moindre carrés non linéaires
    Par kilma dans le forum Scilab
    Réponses: 0
    Dernier message: 15/03/2010, 17h19
  4. Réponses: 2
    Dernier message: 24/05/2008, 21h27
  5. Moindres carrés non linéaires
    Par steph42 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 26/12/2007, 14h44

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