1

J'écris mon propre code pour un arbre de décision. Je dois décider quand mettre fin au processus de construction d'arbres. Je pourrais penser à limiter la hauteur de l'arbre, mais cela semble trivial. Quelqu'un pourrait-il me donner une meilleure idée sur la façon d'implémenter ma fonction de terminaison.Les critères de terminaison lors de la construction de l'arbre de décision

Ici, dans mon algorithme de construction d'arbres.

+0

Avez-vous essayé RMSE (pour la régression) ou erreur de classification (pour la classification)? –

+0

n'a pas encore, pourriez-vous élaborer un peu sur la régression s'il vous plaît – Kevin

+0

J'ai une nouvelle idée, qu'en est-il de garder une trace du gain d'information, si le gain d'information est assez faible, alors nous pourrions arrêter de construire l'arbre? – Kevin

Répondre

1

Il y a peu de contexte dans votre question, mais je suppose que vous construisez un arbre à partir d'un grand ensemble de données? Dans ce cas, une solution s'ajoute à un «LearnSet» pour prendre un «StopSet» d'exemples et vérifier régulièrement votre processus de prise de décision sur ce StopSet. Si la qualité diminue, cela indique que vous surimaginez sur le LearnSet.

J'utilise délibérément "StopSet" et non "TestSet" car après cela, vous devez appliquer votre arbre de décision sur le TestSet pour évaluer la qualité réelle.

+0

'Si la qualité diminue, c'est une indication que vous êtes en train de faire des bêtises sur le LearnSet: alors que cela est vrai cela peut très bien signifier que l'arbre de décision n'a pas été suffisamment entraîné. Ce qui nous ramène à la question OP ... –

+0

@Eugen Constantin Dinca: ce que je veux dire, c'est que pendant l'entraînement, vous verrez le score sur l'augmentation StopSet (score tel que mesuré en nombre de données correctement classées). À un certain moment, vous verrez ce score décroître: c'est à ce moment que vous commencerez à surentraîner sur le LearnSet et que vous devrez arrêter l'entraînement. – Emile

1

Comme un arbre de décision produit des divisions déséquilibrées, une partie de l'arbre peut être plus lourde que l'autre partie. Il n'est donc pas intelligent d'utiliser la hauteur de l'arbre car cela s'arrête partout au même niveau. Il vaut mieux utiliser le nombre minimal d'observations requises pour une recherche fractionnée. Ceci est plus élaboré à http://zyxo.wordpress.com/2011/07/04/how-to-use-the-settings-to-control-the-size-of-decision-trees/

0

Ceci est une question un peu ancienne, mais je pense que je peux améliorer les réponses. La théorie est que vous arrêtez quand une division est pure (c.-à-d. Impureté = 0) ou tous les membres dans le nœud gauche ou droit sont la même valeur de sortie. Par exemple, si vous essayez de prédire une crise cardiaque ou non, et si un groupe subit toutes les crises cardiaques ou aucune crise cardiaque, vous pouvez en toute sécurité arrêter de diviser ce groupe parce que tout est pareil et vous pouvez prédire que valeur commune. Cette théorie est supportée par le processus d'élagage parce que vous pouvez construire un très grand arbre et si un nœud ne contribue pas à la précision, il est élagué.

Maintenant, il est rare que vous obteniez des divisions entièrement pures. Et souvent, afin de diviser les données en ensembles entièrement purs, vous diviserez beaucoup en faisant des ensembles de plus en plus petits jusqu'à ce que vous arriviez à une seule observation dans chaque nœud. Les grands arbres ne survivront généralement pas au processus d'élagage et vous surchargez probablement les données d'entraînement de toute façon. Il est donc courant de vous épargner du temps supplémentaire dans l'algorithme d'élagage pour simplement limiter le nombre d'observations sur lesquelles vous êtes prêt à diviser et définir un minimum sur le nombre d'une division résultante. Vous n'allez pas garder une division qui se traduit par 1 et 999 observations. C'est une mauvaise division, essayez à nouveau. Donc, vous ajoutez un paramètre de configuration pour le nombre minimum d'observations dans un nœud (c'est-à-dire après un fractionnement) et le nombre minimum de nœuds requis pour un fractionnement (avant le fractionnement) qui peut être modifié par l'utilisateur. Le critère final est également si vous n'êtes pas en train de se séparer de la dernière mesure de pureté. Si un nœud ne peut pas être divisé pour produire un ensemble plus pur, alors ce qu'il avait auparavant. Vous pouvez arrêter parce que vous allez dans la mauvaise direction. Ce qui signifie essentiellement que je (s) est la mesure de pureté du nœud que vous partagez. Et I (s [l]) est la pureté de l'ensemble scindé à gauche, I (s [r]) est la pureté de l'ensemble scindé à droite, et p (s) est la partie de cet ensemble à l'ensemble parent alors:

Gain = I(s) - p(s[r]) * I(s[r]) - p(s[l]) * I(s[l]) 

Et vous arrêtez si ce gain < 0 parce que vous ne recevez pas plus la pureté en le divisant.