Comment choisir le nombre de scissions dans rpart ()?

9

Je l' ai utilisé rpart.controlpour minsplit=2, et a obtenu les résultats suivants de la rpart()fonction. Pour éviter de sur-ajuster les données, dois-je utiliser les divisions 3 ou 7? Ne devrais-je pas utiliser le fractionnement 7? S'il vous plaît, faites-moi savoir.

Variables réellement utilisées dans la construction des arbres:

[1] ct_a ct_b usr_a

Root node error: 23205/60 = 386.75

n= 60        

    CP nsplit rel error  xerror     xstd
1 0.615208      0  1.000000 1.05013 0.189409
2 0.181446      1  0.384792 0.54650 0.084423
3 0.044878      2  0.203346 0.31439 0.063681
4 0.027653      3  0.158468 0.27281 0.060605
5 0.025035      4  0.130815 0.30120 0.058992
6 0.022685      5  0.105780 0.29649 0.059138
7 0.013603      6  0.083095 0.21761 0.045295
8 0.010607      7  0.069492 0.21076 0.042196
9 0.010000      8  0.058885 0.21076 0.042196
samarasa
la source
1
J'ai répondu à cela dans le suivi que vous avez posté au précédent Q. Étant donné que cela n'était pas nécessaire. J'ai mentionné que vous ne devriez pas modifier les Q pour un suivi pour référence future !
Gavin Simpson
1
Pour éviter de rechercher la question connexe à l'avenir, voici le lien vers la précédente Q: stats.stackexchange.com/questions/13446/… .
chl

Réponses:

10

La convention consiste à utiliser le meilleur arbre (erreur relative de validation croisée la plus faible) ou le plus petit (le plus simple) arbre à l'intérieur d'une erreur standard du meilleur arbre. Le meilleur arbre se trouve dans la ligne 8 (7 divisions), mais l'arbre de la ligne 7 (6 divisions) fait effectivement le même travail ( xerrorpour l'arbre de la ligne 7 = 0,21761, qui est dans (plus petit que) le xerrormeilleur arbre plus une norme error xstd,, (0.21076 + 0.042196) = 0.252956) et est plus simple, donc la règle d'erreur standard 1 le sélectionnerait.

Gavin Simpson
la source