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

Algorithmes et structures de données Discussion :

Régression linéaire par morceaux


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Régression linéaire par morceaux
    Connaitriez vous un algorithme ou un programme (pascal ou VB) de régression linéaire par morceaux?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh..


    Peux-tu expliquer un peu ?

    Parce que en général ça s'appelle juste "interpolation linéaire" : entre chaque couple de points on interpole linéairement..

    Donc le programmer est extrêmement simple.... dans n'importe quel langage...

    On a une base de points initiaux (un tableau) Pts (x,y)

    Pour un nouveau point, on cherche entre quels indices il se situe. (i, i+1)

    Puis on fait une règle de trois.. On "interpole linéairement"

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Donc, on peut faire une régression plus complexe que linéaire (quadratique, polynomiale en général), puis en faire une approximation linéaire par morceaux.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Je pense que sa question c'est "comment déterminer les morceaux" pour avoir une approximation optimale.

    Si c'est bien cela, il y a plusieurs méthodes dans la littérature (optimal piecewise linear approximation).

    Le plus simple (mais pas forcément optimal) c'est de faire une suite d'approximations locales:
    1. Approximer la courbe par un segment qui rejoint les 2 extrémités de la courbe: [A,B].
    2. Chercher le point P de la courbe qui est le plus éloigné de l'approximation (= le plus loin du segment).
    3. Remplacer le segment [A,B] par les deux segments [A, P] et [P, B]
    4. Recommencer à l'étape 2 jusqu'à atteindre un erreur acceptable.

    Sinon il y a la méthode inverse dans laquelle on fait un découpage uniforme de la courbe en petits segments,
    puis on on fusionne itérativement les segments jusqu'à atteindre un erreur acceptable (Douglas-Peucker algorithm)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Citation Envoyé par souviron34 Voir le message
    Parce que en général ça s'appelle juste "interpolation linéaire"
    Pour moi une régression linéaire c'est chercher une droite qui traversent au mieux l'ensemble des points alors qu'une interpolation linéaire c'est chercher une courbe qui passe par tous les points.

    Non ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Si, je suis d'accord....

    MAIS


    le problème est le "par morceaux"


    J'ai bien peur que le PO n'aie pas très très bien compris.. -ou expliqué...


  7. #7
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Régression linéaire par morceaux
    Salut,

    pseudocode a apporté la réponse la plus claire.

    La seule information supplémentaire que l'on pourrait souhaiter, c'est l'aspect général du nuage de points: la "courbe moyenne" présente-t-elle une courbure continue, ou des parties quasi-rectilignes ? Les domaines de régression linéaire sont-ils éventuellement prédéfinis en limite ou en nombre ? Cela pourrait orienter la recherche du meilleur algorithme.

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Détail sur le problème précis (jeu de données)
    j'ai une fonction Y=f(X) définie sur un très grand nombre de points (27000) lorsque je représente cette fonction en
    Excel j'obtiens une ligne brisée de quelques segments (entre 5 et 10). Mais ça c'est ce que je constate
    sur mon graphe mais je ne connais pas d'algorithme/fonction qui me permettrait de récupérer, à partir de tous ces points, la suite
    des segments décrits par leurs extrémités (Xdébut, Ydébut) --> (Xfin, Yfin).

    Je suis à la recherche code ou simplement un algorithme qui me permettrait de faire cela ?
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la pente par régression linéaire sur N points
    Par idoune dans le forum MATLAB
    Réponses: 5
    Dernier message: 28/04/2014, 09h08
  2. [Toutes versions] Régression linéaire forcée passant par un point (non origine
    Par Spartac69 dans le forum Excel
    Réponses: 1
    Dernier message: 15/07/2013, 17h23
  3. Réponses: 1
    Dernier message: 28/12/2012, 16h09
  4. Régression linéaire en 3D par un plan
    Par fluffyfox dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/05/2011, 14h04
  5. Module qui permet de faire des régression linéaire ?
    Par Anti-T dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 04/09/2009, 13h28

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