Les arbres de décisions

Ce cours explique les bases des arbres de décisions (ID3 et C4.5) avec une implémentation en Python3

a marqué ce sujet comme résolu.

Bonjour, !

La beta du tutoriel a été mise à jour.

Bon voilà encore des modifications de formulation et d'orthographe/grammaire et j'ai commencé le code Python de l'algo C4.5 (qui forcément est un peu plus compliqué à mettre en œuvre de manière claire). Je pense proposer la validation une fois ce code terminé.

+0 -0

Dis, suggestion: en introduction, ce serait bien de donner des liens aussi vers les ressources "prérequis" pour aborder le tuto. Citer + donner un ou deux liens, ça fera toujours plaisir aux néophytes. :)

+0 -0

Tu veux dire au tout début quand je dis ce qu'il faut maîtriser ?

Il n'y a pas de cours concernant ces choses là sur ZdS, je dois donc trouver des liens externes. (J'ai le droit à wikipédia ? :-° )

+0 -0

Bonsoir,

Merci pour ce tutoriel intéressant. Quelques remarques pour la plupart mineures :

  • …pour ceux ne connaissant pas cette notion) > manque un point
  • compliqués à résoudre avec des algorithmes trivial > triviaux
  • c'est une suite finie d'instructions non-ambigües > non ambigües
  • Une suite finie d'instructions ça veut dire que c'est une liste d'instructions (…) > pour que ce soit moins lourd : « est une liste d'instructions » suffit
  • On parle de complexité polynomiale pour les intéressés > il manque un point
  • En anglais décision trees > decision
  • les arbres de décisions sont utilisés entre autre > entre autres
  • sacré chance, non ? > sacrée
  • Jusque là, tout le monde est d'accord avec moi, non ? > Jusque-là
  • Et pour ceux qui rouspèteraient > rouspéteraient
  • Et l'ordinateur nous harcèles de question > harcèle / questions
  • C'est assez simple : On a continué sur la branche > on
  • Cet algorithme à été développe > développé
  • C4.5 est en quelque sortes le petit frère d'ID3 > quelque sorte
  • prédire les étiquettes de nouveaux exemples non-étiquetés > non étiquetés
  • coder la classe d'un membre pris au hasard dans le set d'exemple $S$ > exemples
  • Dans l'exemple d'au dessus > au-dessus
  • bah le "désordre" reste le même > le « bah » n'est pas nécessaire
  • le gain est défini par un set d'exemples > manque la majuscule
  • l'attribut Prévisions a trois valeurs possibles > idem
  • l'attribut Vent a quant à lui deux valeurs possibles > idem
  • je vous laisse faire les calculs vous même pour vous entrainer. > vous-même
  • d'ailleurs on peut voir que le gain est égal à l'entropie > manque la majuscule
  • il nous faut donc tester Vent > idem
  • qui n'a pas été testé de ce côté là de la branche > côté-là
  • Ceci dit, tant que tous les exemples possibles n'ont as été donnés > pas
  • n'est autre que la longueur du sous-set de cette classe divisé par > divisée
  • elle nous permet de faire beaucoup moins de calcul > calculs
  • C'est très pratique tant pour pour programmer
  • qui est, rappelons le > rappelons-le
  • C'est simple : on veut faire une fonction qui a remplir > va
  • etiquette peut être non précisée en quel cas on aurait un exemple non-étiqueté > non étiqueté
  • si les deux listes n'ont pas le même nombre d'élément > éléments
  • que je vous ai donné deux chapitres au dessus > au-dessus
  • tester si la liste d'exemples est vide, et si elle retourner une erreur.
  • soit on prend la forme simple à implémenter mais non-optimisée que voici: > non optimisée / voici :
  • si il a la bonne valeur > s'il
  • la suite et fin de notre fonction est donc la suivante : > manque la majuscule
  • Ceci-dit, libre à vous de faire l'autre, voire de faire les deux! > deux !
  • on parcoure ses enfants > parcourt
  • on affiche la valeur del'attribut
  • avec les différents terminauxet invites de commande
    1. adaptation de la fonction de gain > manque la majuscule
  • soit on envoie un boolean. Je préfère personnellement l'option du boolean (…) ID3 est un boolean valant True (…) J'ai mis le boolean à défaut à True > booléen
  • Voici donc ce qu'est devenu ma fonction : > devenue
  • Il y aura autant de valeurs différentes pour l'attribut Température qu'il n'y a de changement de classe. > qu'il y a de changements
  • J'ai remplacé la la Prévision du 7
  • mais par contre ça diminue notre set d'exemples et que dans notre cas il n'est déjà pas très grand > alors que dans notre cas
  • Comment faire pour savoir quel est la bonne valeur ? > quelle
  • mais il est possible qu'un attribut ait 50 valeurs possible > possibles
  • On peut donc voir que les valeurs les plus assignés > assignées
  • Si on regarde pour l'attribut Température$ de 10e exemple > $ de trop / du 10e
  • C'est en réalité Nuageux$ > $ de trop
  • cherchons la valeur de l'attribut Température du 10e exemple : L'étiquette étant la même > l'étiquette
  • je vous conseille personnellement d'utiliser la seconde méthode > manque la majuscule
  • c'est le cas que nous avons eu ici au dessus > au-dessus
  • Voici le pseudo-code pour la complétion d'exemples corrompue > corrompus
  • Alors bon, comme ça, ça ne veut pas dire grand chose. > grand-chose
  • elles faillissent à une prédiction des classes des nouveaux exemples non-étiquetés > non étiquetés
  • la différence entre ces deux types d'élagage > manque la majuscule
  • je vous conseille donc d'utiliser la méthode du post-élagage > idem
  • non-utilisés pour l'élaboration de l'arbre ! > non utilisés
  • Attention : ici, on continue d'utiliser des nombres que l'on pourrait qualifier de discret > discrets
  • à quoi sert l'apprentissage automatique en particulier les arbres de décision > dans le reste, tu écris « arbres de décisions »
  • mettre en italique toutes les occurrences de machine learning, overfitting, underfitting etc.

Bonne continuation. :)

Bonjour, !

La beta du tutoriel a été mise à jour.

Merci pour vos relectures

EDIT :

Bonjour à tous !

Après un long mois d'absence, je me suis remis à l'écriture de ce tutoriel, il est pour moi terminé au niveau du contenu et de ce que je voulais mettre dedans. Cependant, je le fais repasser en bêta étant donné que beaucoup de modifications y ont été apportées (des corrections orthographiques/grammaticales/… mais aussi des changements dans le code, des explications remaniées, de nouveaux exemples, etc.)

Je vous fais donc confiance pour me dire ce qui est à retravailler/repenser/voire carrément refaire. Lorsque j'avais tenté une première validation (a long long time ago :-° ), l'argument principal du refus a été le manque de clarté et le manque d'explications détaillées pour un débutant. J'espère donc avoir remédié à ce problème. Si ce n'est pas le cas, prévenez-moi.

Je vous remercie d'avance pour prendre le temps de lire (ne fut-ce qu'en partie) mon cours.

Question subsidiaire : mon cours est assez long, mais c'est majoritairement à cause du code et des explications d'implémentation. Ça ne m'a pas semblé cohérent de le transformer en un big-cours étant donné que la quantité de matière reste globalement similaire à ce que c'était avant (et donc tout à fait dans le cadre d'un mini-cours), mais cependant, je vous pose la question : "vous semble-t-il cohérent de modifier l'approche de lecture, par exemple en le changeant en un big-cours ?"

Encore une fois merci pour me permettre de produire ceci et merci d'avance à quiconque s'intéresserait à ce que j'ai fait ^^ ,

poupou.

+0 -0

Salut !

Je n'ai absolument pas tout lu, mais il manque à mon avis dans l'introduction une brève explication de ce qu'est un arbre de décision. Pour l'instant, on est directement projeté dans le machine learning, sans comprendre le rapport avec le titre du tutoriel. Je te conseille donc de donner une définition intuitive et peu rigoureuse des arbres de décision ainsi que des exemples d'utilisation puis de préciser tout ça en introduisant des notions plus avancées. Actuellement, il faut passer par le long paragraphe sur l'apprentissage automatique avant de croiser les arbres de décision. En fait, tu prends le problème à l'envers, je pense. Tu pars d'une définition théorique des arbres de décision, puis tu l'expliques avec des exemples. Mais du coup, on est perdu au début. Alors que si tu pars d'un problème concret, puis que tu introduis l'outil nécessaire à leur résolution (les arbres de décision), on suit progressivement un fil directeur.

Plus concrètement, tu pourrais faire un truc du genre :

  • Accroche : on veut faire quelque chose pour laquelle les arbres de décision nous seront utiles (inscrire René au MIT par exemple).
  • Présentation : on donne donc une idée intuitive de comment résoudre le problème, ce qui permet d'introduire les arbres de décision et de les placer dans un contexte.
  • Précisions : on aimerait bien savoir ce qu'est exactement un arbre de décision maintenant.

En somme, avant de savoir ce que c'est, on veut savoir à quoi ça sert et avoir un exemple concret pas trop complexe.

Par exemple, dans ce cours, avant d'aborder les graphes, on a des exemples. On s'amuse avec les sept ponts de Königsberg, puis on se rend compte que les graphes nous permettent de résoudre le problème : on a donc envie d'en apprendre plus. Bon ici, malheureusement, la suite devient très théorique : il aurait fallu, à mon avis, rappeler l'intérêt des graphes tout au long du chapitre en fournissant des exemples, des problèmes, des énigmes…

Bon courage !

+0 -0

Merci de ton retour (et de m'avoir lu même si ce n'est que partiellement !)

Ta réaction me semble très pertinente, je n'y avais pas pensé mais ça me semble effectivement important à faire. Je le ferai !

+0 -0

Bonjour, !

La beta du tutoriel a été mise à jour.

Merci pour vos relectures

EDIT : la bêta a bien été mise à jour suite à la remarque plus que pertinente de Vayel. Seul la partie d'introduction a été mis à jour : un nouveau chapitre (mise en situation) et une meilleure conclusion.

+0 -0

Je vous annonce que ce tuto a été envoyé en validation. Si quelqu'un est motivé, je suis toujours preneur du moindre commentaire bien entendu.

Merci à tous ceux m'ayant donné un retour !

poupou.

+0 -0

Bonjour les agrumes !

La bêta tutoriel « Les arbres de décisions » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.


Voilà, après près d'un an en validation, j'ai apporté quelques modifications mineures et quelques corrections. Le tuto est, pour moi, prêt !

+0 -0

Bonjour,

La bêta du contenu « Les arbres de décisions » a été désactivée.

Je me suis permis de le faire puisque non seulement le contenu est en ligne mais surtout la version qui était en béta avait encore la forme d'un mini tuto alors que depuis on est passé au tuto moyen.

+0 -0
Ce sujet est verrouillé.