Quel est le but de l'utilisation d'un arbre de décision?

8

Je ne comprends pas quel est le but de l'arbre de décision? Pour moi, c'est une série de si-sinon. Pourquoi est-ce que je n'utilise pas simplement if-else au lieu d'utiliser un arbre de décision? Est-ce parce que cela diminue la complexité de mon code?

Je suis toujours épargné par le calcul de l'entropie et du gain d'informations, car il existe des algorithmes prédéfinis pour eux où je viens de brancher les règles, n'est-ce pas? (Comme ID3)

Pourquoi l'utilisons-nous maintenant avec l'apprentissage automatique? Parce que nous n'avons même pas à élaborer les règles avant d'en avoir besoin? La machine apprend à partir des données d'entraînement et sur la base des attributs qu'elle peut prédire un résultat?

L'implémentation de ML dans mon code diminue-t-elle davantage les frais généraux et rend-elle mon code moins complexe, plus efficace et plus rapide?

57913
la source
6
Ce n'est pas une question de code, c'est une question de modèle.
Sycorax dit Réintégrer Monica
6
"Est-ce que l'implémentation du ML dans mon code diminue davantage les frais généraux et rend mon code moins complexe, plus efficace et plus rapide?" Plus efficace, selon ce que fait votre code, mais sinon non. ML n'existe pas pour rendre votre code moins complexe ou plus performant (il a tendance à avoir l'effet inverse). ML existe pour automatiser la création d'algorithmes basés sur des exemples de données. Habituellement, cela n'est pas nécessaire car les programmeurs peuvent simplement écrire des algorithmes efficaces, mais parfois c'est beaucoup trop difficile à faire, c'est là que ML entre en jeu.
DarthFennec
Veuillez ne pas effectuer de cross-post. C'est contraire à la politique de SE pour cette seule raison; cela fait perdre beaucoup de temps aux gens.
gung - Réintègre Monica
@DarthFennec Quotable!
Jim

Réponses:

21

Pour moi, c'est une série de si-sinon. Pourquoi est-ce que je n'utilise pas simplement if-else au lieu d'utiliser un arbre de décision?

Tu as tout à fait raison. Un arbre de décision n'est rien d'autre qu'une série d'instructions if-else. Cependant, c'est la façon dont nous interprétons ces déclarations comme un arbre qui nous permet de construire ces règles automatiquement ...(X1,y1),...,(XN,yN)... quel est le meilleur ensemble de règles qui décrit quelle valeur y a donné une nouvelle entrée X? ID3 et similaires nous permettent de créer automatiquement ces règles. Il ne s'agit pas vraiment de l'arbre une fois construit, mais de la façon dont nous l'avons créé.

En dehors de cela, on n'utilise presque jamais un arbre de décision seul, la raison étant précisément ce que vous dites: c'est un modèle assez simpliste qui manque d'expressivité. Cependant, il a un gros avantage sur les autres modèles: on peut calculer un seul arbre de décision assez rapidement. Cela signifie que nous pouvons trouver des algorithmes qui entraînent de nombreux arbres de décision (boosting, alias AdaBoost et GradientBoosting) sur de grands ensembles de données. Ces collections (généralement plus de 500) de ces modèles simplistes (appelés forêt) peuvent alors exprimer des formes beaucoup plus compliquées.

Vous pouvez également l'imaginer comme ceci: étant donné une fonction «agréable» (c'est-à-dire continue) mais compliquée F:[une,b]Rnous pourrions essayer d'approximer cette fonction en utilisant des lignes. Si la fonction est compliquée (commesjen(X)ou alors) alors nous produisons une grosse erreur. Cependant, nous pourrions combiner les lignes de la façon dont nous divisons l'intervalle[une,b] en plus petites pièces une=une0<une1<...<uneM=b et sur chaque uneje,uneje+1 nous essayons d'approximer F|(uneje,uneje+1) (C'est, Flimité à cet intervalle) par une ligne. En mathématiques de base (analyse), nous pouvons alors approximer la fonction arbitrairement proche (c'est-à-dire faire une erreur arbitrairement petite) si nous prenons suffisamment de lignes. Par conséquent, nous avons construit un modèle compliqué mais précis à partir de modèles très simples. C'est exactement la même idée que (par exemple) GradientBoosting utilise: Il construit une forêt à partir d'arbres à décision unique très «stupides».

Fabian Werner
la source
2
L'autre gros avantage est d'être accessible à l'inspection humaine ("aaah, c'est pourquoi!").
dedObed
1
oui, les arbres de décision sont parfaits pour expliquer aux gens sans antécédents en statistiques car ils sont très intuitifs.
qwr
1

Juste pour ajouter à la réponse de @Fabian Werner - vous souvenez-vous d'avoir fait la règle de Riemann Sums dans une introduction à l'intégration? Eh bien, c'était aussi un ensemble d'instructions if également partitionnées que vous utilisez pour calculer la zone sous la fonction.

Si vous dessinez une fonction 1D et dessinez les partitions uniformément, vous constaterez que dans les zones où la fonction a peu de gradient, les partitions voisines peuvent être fusionnées sans une grande perte de précision. De même, dans les partitions à gradient élevé, l'ajout de partitions améliorera considérablement l'approximation.

Tout ensemble de partitions rapproche la fonction, mais certaines sont clairement meilleures que d'autres.

Passons maintenant aux modèles CART - nous voyons des données sous forme de points bruyants de cette fonction et on nous demande d'approximer la fonction. En ajoutant trop de partitions, nous pouvons surcharger et essentiellement effectuer un modèle de type voisin le plus proche. Pour éviter cela, nous limitons le nombre de partitions que notre modèle peut utiliser (généralement sous la forme de profondeur maximale et d'échantillons minimum par division). Alors maintenant, où devrions-nous placer ces divisions? Telle est la question abordée par les critères de fractionnement. Les zones avec une «complexité» plus élevée devraient recevoir plus de divisions en règle générale et c'est ce que gini, l'entropie, etc. s'efforcent de faire.

Faire des prédictions ne sont que des déclarations if-else, mais dans le contexte de l'apprentissage automatique, ce n'est pas de là que vient la puissance du modèle. La puissance provient de la capacité du modèle à faire des compromis sur et sous-ajustement de manière évolutive et peut être dérivée dans un cadre probabiliste cohérent avec des garanties théoriques dans la limite des données. Enfin, si nous adoptons une vue abstraite similaire des modèles ML, nous pouvons dire que les réseaux de neurones, les méthodes du noyau, les approches de Monte Carlo et bien d'autres sont simplement l'addition et la multiplication. Malheureusement, ce n'est pas une vue très utile de la littérature.

j__
la source
0

Un arbre de décision est une partition du domaine problématique en sous-ensembles, au moyen de conditions. Il est généralement implémenté en tant que if-then-elses en cascade. Vous pouvez le voir comme un terme qui décrit une logique de décision complexe.

Les arbres de décision ne sont ni plus efficaces ni plus «favorables» à l'apprentissage automatique que les tests logiques. Ce sont des tests logiques.

Gardez également à l'esprit que tout algorithme n'est rien d'autre qu'une combinaison de calculs et de tests arithmétiques, c'est-à-dire un arbre de décision (généralement énorme).


Pour être complet, mentionnons que dans certains contextes, comme le machine learning, des arbres de décision complexes sont construits automatiquement, par des algorithmes. Mais cela ne change pas leur nature.

Yves Daoust
la source