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

R Discussion :

[Arbre de decision] Problème avec les noeuds


Sujet :

R

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut [Arbre de decision] Problème avec les noeuds
    Bonjour tout le monde,

    J'ai une data.frame avec 110000 individus et 16 variables (qualitatives et quantitatives).

    L'une de mes variables est la proportion de personnes qui ont dépensé plus qu'un certain montant chez le marchand. (ici pour l'exemple j'ai prix le montant = la médiane et un autre exemple où le montant = 3ème quartile pour les dépenses)

    Je lance rpart (de la librairie du même nom) sur mon jeu de données et à chaque fois je n'ai que 2 à 4 nœuds, i.e. que 2 critères de séparations.
    J'ai enlevé la variable qui séparait le "mieux au départ" pour voir si c'était pas elle qui plantait mes résultats.

    Et là j'ai encore quelque chose de plus "drôle" (alors qu'il me reste 14 variables pour en expliquer une) je n'ai que 2 nœuds/feuilles et le résumé de mon modèle me donne cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    summary(avg.arbreQ2)
    Call:
    rpart(formula = Groupe_Q2 ~ ., data = clients)
      n= 111945 
     
              CP nsplit rel error   xerror        xstd
    1 0.02134996      0   1.00000 1.011327 0.002988641
    2 0.01000000      1   0.97865 0.978650 0.002988150
     
    Node number 1: 111945 observations,    complexity param=0.02134996
      predicted class=1  expected loss=0.4999955
        class counts: 55972 55973
       probabilities: 0.500 0.500 
      left son=2 (93881 obs) right son=3 (18064 obs)
      Primary splits:
          NombreJour      < 1.5     to the left,  improve=47.19850, (0 missing)
          Marge_Bonbon          < 0.1467  to the left,  improve=24.66014, (0 missing)
          NombreVisite < 0.1467  to the left,  improve=24.66014, (0 missing)
          NombreAchats            < 2.5     to the left,  improve=18.69148, (0 missing)
          NombreVisitePlusieurs      < 5.5     to the right, improve=17.74538, (0 missing)
      Surrogate splits:
          NombreAchats            < 1.5     to the left,  agree=0.918, adj=0.495, (0 split)
          NombreVisiteU         < 14.5    to the left,  agree=0.844, adj=0.036, (0 split)
          NombreVisitePlusieurs     < 11.5    to the left,  agree=0.844, adj=0.036, (0 split)
          Marge_Bonbon          < 3.07143 to the left,  agree=0.841, adj=0.013, (0 split)
           NombreVisite < 3.07143 to the left,  agree=0.841, adj=0.013, (0 split)
     
    Node number 2: 93881 observations
      predicted class=0  expected loss=0.4936356
        class counts: 47538 46343
       probabilities: 0.506 0.494 
     
    Node number 3: 18064 observations
      predicted class=1  expected loss=0.4668955
        class counts:  8434  9630
       probabilities: 0.467 0.533
    Et là très franchement je saisis pas.
    On reste vachement dans le 50/50 alors que je cherche la classe (ou plutôt la suite de valeurs pour les variables explicatives) qui font que les personnes ont dépensé plus de "Q2" (médiane du montant des achats chez le marchand). Le but étant de "catégoriser" les "bons" clients (ceux qui dépensent plus qu'un certain montant) et voir ce qui les définit (sinon on peut faire ça de façon déterministe).

    Est-ce que j'ai pris le problème à l'envers?
    Est-ce un problème de code?

    Là je me perds un peu.

    Cordialement,

    Hollow

    PS: je précise que j'ai pris le montant moyen dépensé par les clients et non le montant global ou le montant maximum dépensé sur un article, peut être que là également je me suis "loupé"?

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Salut,

    Alors déjà petite traduction de ce que j'ai compris parce que c'est pas clair du tout:

    L'une de mes variables est la proportion de personnes qui ont dépensé plus qu'un certain montant chez le marchand.
    C'est une statistique ca non? pas une variable sinon on comprend plus rien...

    DONC : tu as une la valeur d'une statistique qui dépend d'un paramètre : le quantile que tu choisis (la médiane dans ton exemple).


    Si j'ai bien compris tu as pour chaque individu la moyenne des montants depensés par ce client quand il va dans une boutique de bonbons.
    Et tu as créé une variable boolenne qui indique si ce montant moyen est supérieur à la valeur de ta statistique? (la médiane des montants moyens dépensés dans ton exemple).

    Ensuite, tu veux trouver les facteurs qui expliquent si le client va être dans la première moitiée la plus dépensières ou la deuxième c'est ca?


    On reste vachement dans le 50/50 alors que je cherche la classe (ou plutôt la suite de valeurs pour les variables explicatives) qui font que les personnes ont dépensé plus de "Q2"
    Quoi de plus normal? ^^
    Tu cherches les gens qui ont dépensés plus que la médiane.
    Ces individus correspondent à la moitiée de ton data frame.
    Donc normal que l'arbre te renvoit autant d'individus dans un groupe que dans l'autre.

    Prends le quantile 90%, et tu auras 10% de clients classés depensiers, et 90% en non dépensiers...


    Pour le nombre de variables, prendre seulement deux trois variables n'est pas choquant si les autres sont non significatives.


    Cela dit, c'est un peu bizarre comme approche.
    Il vaudrait mieux expliquer directement le montant moyen dépensé, et l'arbre te renverrait alors plusieurs classes que tu pourras interpreter toi même.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 127
    Points : 58
    Points
    58
    Par défaut
    Bonjour Sengar,

    Oui désolé je me suis super mal exprimé.

    Je n'étais pas étonné du 50/50 (pour une médiane c'est plutôt rassurant ) mais plus par rapport à l'analyse de l'arbre de décision sous R.

    En fait déjà de base je m'étais planté dans ce que je cherchais donc forcément ...
    Je cherchais à calculer une probabilité sachant différent événements mais pas à l'aide d'un arbre qui me donne "juste" les probas par "nœud".

    Je vous remercie en tout cas d'avoir pris le temps de répondre à ce sujet ... qui n'en était pas un au final.
    Et encore désolé pour le fait de m'être super mal exprimé.

    Cdlt,

    Hollow

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

Discussions similaires

  1. [XSLT 1.0] Problème avec les noeuds texte
    Par Desiderius dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/08/2012, 09h59
  2. problème avec les noeuds d'une JTree
    Par soujava dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 12/06/2008, 15h42
  3. Problème avec les arbres
    Par madjidri dans le forum C
    Réponses: 2
    Dernier message: 06/12/2007, 01h09
  4. Problème avec les arbres
    Par isoman dans le forum C
    Réponses: 6
    Dernier message: 23/02/2007, 18h51
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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