Diagramme d'arbre de décision

À propos des arbres de décision

Un arbre de décision est un diagramme ramifié qui représente une séquence de choix et leurs conséquences sous forme d'arbre enraciné : chaque nœud interne est une question ou une décision, chaque arête est une réponse ou une action, et chaque feuille est un résultat. Le format apparaît dans trois pratiques assez différentes — les organigrammes de dépannage et les règles de décision cliniques (arbres taxonomiques), l'analyse de risque et d'investissement utilisant la valeur attendue (analyse de décision), et l'inspection de modèles d'apprentissage automatique (arbres de classification). Malgré les différences de surface, les trois partagent la même structure d'arbre, ce qui explique pourquoi Schematex les encode sous un seul mot-clé avec un sélecteur de mode.

Les arbres de décision Schematex couvrent : (1) le mode taxonomique — les flux de questions oui/non utilisés dans le triage médical (lignée Turing 1937 ; maintenant standard dans l'aide à la décision clinique), (2) le mode analyse de décision — la méthode de repli de la valeur attendue développée en sciences de gestion (Raiffa & Schlaifer, 1961), et (3) le mode ML — le format de fractionnement/feuille CART utilisé pour visualiser les classificateurs entraînés scikit-learn et similaires (Breiman et al., 1984).

decisiontree·§
↘ preview
100%
Customer Support Triage Decision tree (taxonomy mode) with 9 nodes and 8 edges Customer Support Triage yes no yes no yes no yes no Is the service completely down? Outage confirmed on status page? Follow incident protocol — page Check monitoring — open severity-1 ticket Is the issue affecting billing? Escalate to billing team — SLA breach risk Can user reproduce consistently? Collect HAR trace — file bug report Ask for screenshot — watch for recurrence
UTF-8 · LF · 13 lines · 550 chars✓ parsed·0.9 ms·7.2 KB SVG

1. Votre premier arbre de décision

L'arbre de décision utile minimal : une question racine avec deux branches.

decisiontree·§
↘ preview
100%
Laptop troubleshoot Decision tree (taxonomy mode) with 5 nodes and 4 edges Laptop troubleshoot yes no yes no Does it power on? Check display — connect external Is the charger light on? Hold power button 10 s — try again Check outlet and charging cable
UTF-8 · LF · 8 lines · 266 chars✓ parsed·0.6 ms·4.8 KB SVG

Quatre règles couvrent 80 % de l'usage :

  1. Commencez par decisiontree, optionnellement avec :mode et un titre entre guillemets.
  2. Chaque nœud question utilise question "texte" (ou raccourci q "texte").
  3. Chaque réponse/feuille utilise answer "texte" (ou a "texte" ou leaf "texte").
  4. Les étiquettes de branche — yes:, no:, ou un label "X": personnalisé — précèdent le nœud enfant sur la même ligne.

L'indentation contrôle l'imbrication : chaque niveau ajoute 2 espaces. L'analyseur calcule les relations parent-enfant à partir de la profondeur d'indentation.

Les commentaires doivent commencer par # ou // sur leur propre ligne.


2. Modes

Le mode est défini dans la ligne d'en-tête :

En-têteModeUtilisé pour
decisiontreetaxonomiqueFlux de questions oui/non, guides de dépannage, aide à la décision clinique
decisiontree:decision (ou decisiontree:da)analyse de décisionDécisions d'investissement, analyse de risque, calcul de valeur attendue
decisiontree:influence (ou mode: influence)diagramme d'influenceVue DAG compacte d'un problème de décision — structure avant dépliage en arbre
decisiontree:mlapprentissage automatiqueVisualisation des classificateurs CART entraînés (scikit-learn, XGBoost, etc.)

La direction par défaut est top-down pour les modes taxonomique et ML, left-right pour l'analyse de décision.


3. Mode taxonomique

Idéal pour : guides de dépannage, FAQ, protocoles cliniques, flux de recommandation de produits.

Mots-clés de nœuds

Mot-cléAliasSignification
question "…"q "…"Nœud interne — une question avec des enfants
answer "…"a "…", leaf "…"Nœud feuille — un résultat terminal

Étiquettes de branches

SyntaxeSignification
yes: question "…"Branche étiquetée « yes »
no: answer "…"Branche étiquetée « no »
label "Texte personnalisé": answer "…"Branche avec toute étiquette personnalisée

Les étiquettes personnalisées vous permettent d'aller au-delà du oui/non pour les décisions à plusieurs voies à partir d'une même question.

decisiontree·§
↘ preview
100%
Triage — chest pain onset Decision tree (taxonomy mode) with 9 nodes and 8 edges Triage — chest pain onset yes no yes no yes no yes no Onset sudden? ECG changes present? ACS protocol — cardiology consult D-dimer elevated? PE workup — CT pulmonary angiography Aortic dissection — CT angiography Pain reproducible on palpation? Musculoskeletal — NSAIDs, follow-up PCP GI / anxiety — further history
UTF-8 · LF · 12 lines · 408 chars✓ parsed·4.2 ms·6.9 KB SVG
decisiontree·§
↘ preview
100%
Pain level triage Decision tree (taxonomy mode) with 5 nodes and 4 edges Pain level triage Severe (8-10) Moderate (4-7) Mild (1-3) None Reported pain level? Emergency — send to ER immediately Urgent care — within 2 hours Schedule next available — OTC care Monitor — patient may be post-medication
UTF-8 · LF · 8 lines · 331 chars✓ parsed·0.5 ms·4.8 KB SVG

4. Mode analyse de décision

Idéal pour : décisions d'investissement, analyse construire-ou-acheter, évaluation de stratégie pondérée par le risque.

Mots-clés de nœuds

Mot-cléAliasSignification
decision "…"Nœud de décision — l'acteur choisit une branche
chance "…"Nœud aléatoire — un résultat incertain
end "…"outcome "…"Nœud terminal — gain final

Mots-clés de branches

Mot-cléSignification
choice "étiquette"Nomme la branche entrante depuis un nœud de décision
prob NDéfinit la probabilité (0–1) sur la branche entrante depuis un nœud aléatoire

Attribut de gain

payoff=N sur n'importe quel nœud définit la valeur de gain. Sur les nœuds end / outcome, il définit la valeur terminale. L'analyseur exécute automatiquement le repli de la valeur attendue : la VE de chaque nœud chance est la somme pondérée par les probabilités des VE de ses enfants ; la VE de chaque nœud decision est la VE maximale des enfants, et la branche optimale est signalée.

Contrainte : les probabilités sur tous les enfants directs d'un nœud chance doivent sommer à 1,0 (±0,01). L'analyseur lève une DTreeParseError si ce n'est pas le cas.

decisiontree:decision·§
↘ preview
100%
Cloud vendor selection Decision tree (decision mode) with 8 nodes and 7 edges Cloud vendor selection Build in-house Managed SaaS vendor Hybrid approach p=60% p=40% p=50% p=50% Which vendor? EV=600,000 Project outcome EV=600,000 On-time delivery $900,000 Over budget / delayed $150,000 Predictable cost $500,000 Integration complexity EV=500,000 Smooth integration $700,000 Integration rework $300,000
UTF-8 · LF · 14 lines · 480 chars✓ parsed·1.3 ms·7.1 KB SVG

5. Mode diagramme d'influence

Idéal pour : cadrer un problème de décision de façon compacte avant de le déplier. Là où le mode analyse de décision dessine chaque branche de chaque résultat sous forme d'arbre explicite, un diagramme d'influence (Howard & Matheson, 1981) dessine le même problème sous forme de graphe acyclique dirigé (DAG) de variables et des dépendances entre elles — un nœud par décision, incertitude et objectif, quel que soit le nombre d'états que chacun peut prendre. C'est le diagramme que les analystes de décision utilisent en premier, car il montre la structure (ce qui informe quoi, ce qui affecte le gain) sans l'explosion combinatoire d'un arbre.

Ce mode est structurel, pas computationnel. Contrairement au mode analyse de décision, il ne résout pas la valeur attendue — le graphe compact omet délibérément les tables de probabilités et de gains dont un repli de VE aurait besoin. Utilisez-le pour communiquer et valider la forme du problème ; utilisez le mode analyse de décision (section 4) lorsque vous voulez les chiffres repliés.

Formes d'en-tête

Deux façons équivalentes de sélectionner le mode :

decisiontree:influence "Oil Wildcatter"

ou, sous forme de directive sur sa propre ligne après l'en-tête :

decisiontree "Market Entry"
  mode: influence

Mots-clés de nœuds

Chaque nœud est déclaré comme type Id "étiquette" — un identifiant (utilisé pour câbler les arcs) suivi d'une étiquette d'affichage entre guillemets.

Mot-cléFormeSignification
decision Id "…"rectangleUn choix que le décideur contrôle
chance Id "…"ovaleUne variable incertaine (un état du monde)
value Id "…"octogoneL'objectif / le gain à optimiser

Les formes suivent la convention standard des diagrammes d'influence : les décisions sont des rectangles, les incertitudes des ovales, et le nœud de valeur un octogone. Ajoutez utility=N à un nœud de valeur pour annoter le gain qu'il représente (value Profit "Bénéfice net" utility=42).

Arcs et leur sémantique

Les arcs sont écrits Source -> Cible sur leurs propres lignes, par identifiant de nœud. La signification d'un arc se lit à partir de sa destination, exactement comme dans la norme publiée :

Arc vers un…SignificationDessiné en
decisionInformationnel — ceci est connu avant que la décision soit priseligne pointillée
chancePertinence / conditionnement — la source conditionne cette incertitudeligne continue
valueFonctionnel — la source est un argument de la fonction de gainligne continue

L'arc informationnel pointillé est à surveiller : Seismic -> Drill signifie « le résultat du test sismique est observé avant de choisir s'il faut forer », ce qui est précisément ce qui rend la décision intéressante à modéliser.

Règles de validation

  • Le graphe doit être acyclique — un cycle (ex. A -> B et B -> A) est rejeté.
  • Au moins un nœud value est requis ; un diagramme d'influence sans objectif n'est pas un problème de décision.
  • Les arcs référencent des identifiants de nœuds qui doivent être déclarés.

Exemples

L'Oil Wildcatter — le problème pédagogique canonique. Le résultat du test sismique est observé avant la décision de forage (arc informationnel pointillé Seismic -> Drill), le test est pertinent pour savoir si du pétrole est réellement présent (Seismic -> Oil), et l'état du pétrole et le choix de forage alimentent tous deux le profit (Oil -> Profit, Drill -> Profit).

decisiontree:influence·§
↘ preview
100%
Oil Wildcatter Influence diagram with 4 nodes and 4 arcs Oil Wildcatter Seismic test Drill? Oil present Net profit U=42
UTF-8 · LF · 10 lines · 234 chars✓ parsed·0.9 ms·3.1 KB SVG

Une décision d'entrée sur le marché utilisant la forme de directive mode: influence. La demande est observée avant l'entrée (Demand -> Enter, informationnel/pointillé) et alimente également directement le profit, tandis que la réponse du concurrent n'alimente que le gain.

decisiontree·§
↘ preview
100%
Market Entry Influence diagram with 4 nodes and 4 arcs Market Entry Market demand Competitor response Enter market? Profit U=120
UTF-8 · LF · 11 lines · 249 chars✓ parsed·0.5 ms·3.1 KB SVG

6. Mode apprentissage automatique

Idéal pour : expliquer les classificateurs CART entraînés, rapports de transparence des modèles, analyse de l'importance des variables.

Mots-clés de nœuds

Mot-cléSignification
split "…"Nœud de fractionnement interne — contient un test de variable
leaf "…"Nœud feuille — classe ou valeur de régression

Préfixes de branches

true et false précèdent les nœuds enfants pour indiquer quelle branche chaque enfant représente.

Propriétés (clé=valeur, sans deux-points, sans guillemets autour des valeurs)

PropriétéS'applique àSignification
feature=nomsplitNom de la variable utilisée au fractionnement
op="<="splitOpérateur de comparaison (entre guillemets si contient des caractères spéciaux)
threshold=5.9splitValeur seuil du fractionnement
samples=150split, leafNombre d'échantillons à ce nœud
gini=0.5split, leafImpureté de Gini
entropy=0.5split, leafImpureté d'entropie
mse=0.3split, leafErreur quadratique moyenne (régression)
gain=0.2split, leafGain d'information
class=nomleafNom de la classe prédite
value=50leafNombre d'échantillons ; utilisez value=[50,30,20] pour la distribution de classes
decisiontree:ml·§
↘ preview
100%
Iris classification (CART) Decision tree (ml mode) with 5 nodes and 4 edges Iris classification (CART) True False True False petal_length 2.45 gini = 0.67 samples = 150 Setosa gini = 0 value = 50 class = Iris-setosa petal_width 1.75 gini = 0.50 samples = 100 Versicolor gini = 0 value = 50 class = Iris-versicolor Virginica gini = 0 value = 50 class = Iris-virginica
UTF-8 · LF · 10 lines · 465 chars✓ parsed·0.9 ms·6.0 KB SVG

7. Options de configuration

Les lignes de configuration apparaissent entre l'en-tête et le premier nœud. Chacune est clé: valeur (deux-points, sans mot-clé config).

Configuration partagée (tous les modes)

CléValeursPar défautEffet
direction:top-down, left-righttop-down (taxonomique/ML), left-right (décision)Direction de disposition
edgeStyle: (ou edge-style:)diagonal, orthogonal, bracketselon le modeStyle de dessin des arêtes

Configuration taxonomique

CléValeursPar défautEffet
branchLabels: (ou branch-labels:)boolean, relationbooleanStyle des étiquettes de branches

Configuration analyse de décision

CléValeursPar défautEffet
branchLength: (ou branch-length:)probabilitydésactivéMettre à l'échelle la longueur des branches proportionnellement à la probabilité

Configuration ML

CléValeursPar défautEffet
impurity:gini, entropy, mse, gainginiMétrique d'impureté affichée sur les nœuds
classes:liste séparée par des virgulesNoms des étiquettes de classes pour l'affichage
decisiontree:ml "Loan classifier"
direction: top-down
impurity: gini
classes: Approved, Denied, Review

8. Étiquettes et commentaires

  • Titre du diagramme : decisiontree "Titre" — la chaîne entre guillemets après le mot-clé d'en-tête.
  • Étiquette de nœud : la chaîne entre guillemets immédiatement après le mot-clé de nœud — question "Le frais est-il exonéré ?".
  • Étiquette de branche : yes:, no:, ou label "Personnalisé": avant le nœud enfant — sur la même ligne que l'enfant.
  • Gain : payoff=250000 à la fin d'une ligne de nœud décision/fin.
  • Propriétés ML : jetons clé=valeur après la chaîne d'étiquette du nœud (sans crochets […], sans deux-points).
  • Commentaires : # ou // au début d'une ligne (après les espaces initiaux optionnels). Seuls les commentaires sur une ligne complète sont pris en charge — les commentaires en ligne à la fin ne le sont pas.

9. Mots réservés et échappement

Mots-clés de nœuds réservés : decision, chance, end, outcome, choice, prob, split, leaf, question, q, answer, a.

Préfixes de branches réservés : yes:, no:, true, false, label.

Formes d'en-tête réservées : decisiontree, decisiontree:decision, decisiontree:da, decisiontree:ml.

Les chaînes avec des espaces doivent être entre double guillemets : question "Chiffre d'affaires annuel > 1 M€ ?". Les étiquettes de nœuds, les étiquettes de branches avec la syntaxe label "…":, et le titre du diagramme nécessitent tous des guillemets doubles.

Jeton réservéContexteRemarques
yes: / no:Début de ligne en mode taxonomiqueNe peut pas être utilisé comme étiquette — utilisez label "yes": si vous avez besoin du texte littéral « yes »
true / falseDébut de ligne en mode MLNe peut pas être une étiquette de nœud
choiceDébut de ligne en mode décisionAgit comme enveloppe de branche, pas comme nœud
probDébut de ligne en mode décisionDoit être suivi d'un nombre

10. Erreurs courantes

Ce que vous avez écritCe que dit l'analyseurCorrection
yes: "Approuver" (sans mot-clé de nœud)DTreeParseError: Missing taxonomy node kindyes: answer "Approuver"
Probabilités sur les enfants chance dont la somme est 0,8DTreeParseError: probabilities do not sum to 1.0Ajustez pour que toutes les valeurs prob somment exactement à 1,0 (±0,01)
question "texte" avec un enfant au même niveau d'indentationL'enfant n'est pas analysé comme enfant — devient un frèreIndentez les enfants de 2 espaces de plus que le parent
config direction = top-down (avec le mot-clé config)config est un mot-clé fishbone — non reconnu iciUtilisez direction: top-down (sans préfixe config)
feature = petal_length (espaces autour de =)Analysé comme des jetons séparés ; propriété non reconnueSans espaces : feature=petal_length
[payoff: 500000] syntaxe entre crochetsNon reconnu — l'analyseur ignore les crochets pour le gainUtilisez payoff=500000 (sans crochets, sans espaces autour de =)
decisiontree:taxonomyDTreeParseError: Invalid headerUtilisez decisiontree (sans suffixe de mode pour le mode taxonomique)

11. Grammaire (EBNF)

document       = header ( config-line )* node

header         = "decisiontree" ( ":" mode )? ( WS quoted-string )? NEWLINE
mode           = "decision" | "da" | "ml"
                 // omis → taxonomique

config-line    = config-key ":" WS config-value NEWLINE
config-key     = "direction" | "edgeStyle" | "edge-style"
               | "branchLabels" | "branch-labels"
               | "branchLength" | "branch-length"
               | "impurity" | "classes"

// ── Mode taxonomique ───────────────────────────────
node           = ( branch-prefix WS )? tax-node ( WS "[" tax-attrs "]" )? NEWLINE
                   INDENT child-node*
tax-node       = ( "question" | "q" ) WS quoted-string
               | ( "answer" | "a" | "leaf" ) WS quoted-string
branch-prefix  = "yes:" | "no:" | "label" WS quoted-string ":"

// ── Mode analyse de décision ───────────────────────
da-node        = "decision" WS quoted-string NEWLINE INDENT da-child+
               | "chance" WS quoted-string NEWLINE INDENT da-prob-child+
               | ( "end" | "outcome" ) WS quoted-string ( WS "payoff=" number )? NEWLINE
da-child       = "choice" WS quoted-string NEWLINE INDENT da-node
da-prob-child  = "prob" WS number WS da-node    // prob, valeur et enfant sur une ligne

// ── Mode ML ──────────────────────────────────────
ml-node        = ( "true" | "false" )? ml-kind WS quoted-string ml-prop* NEWLINE
                   INDENT ml-child*
                 // "true"/"false" et ml-kind doivent être sur la même ligne
ml-kind        = "split" | "leaf"
ml-prop        = WS key "=" value     // sans espaces autour de "="

comment        = ( "#" | "//" ) any NEWLINE
quoted-string  = '"' any-char-but-quote* '"'

Source faisant autorité : src/diagrams/decisiontree/parser.ts. En cas de divergence avec l'analyseur, l'analyseur l'emporte — veuillez ouvrir un ticket.


12. Conformité aux normes

Les arbres de décision Schematex couvrent quatre conventions établies :

Le mode taxonomique suit les conventions d'organigramme question/réponse courantes dans les systèmes d'aide à la décision clinique (lignée de syntaxe Arden) et les procédures de dépannage ISO 9001.

Le mode analyse de décision suit la méthode de repli de la valeur attendue issue des sciences de gestion : nœuds de décision (carré, l'acteur choisit), nœuds de hasard (cercle, probabiliste), nœuds terminaux avec gains. La VE est calculée automatiquement via l'induction à rebours (Raiffa & Schlaifer, 1961).

Le mode diagramme d'influence suit la convention Howard & Matheson (1981) : nœuds de décision (rectangle), de hasard (ovale) et de valeur (octogone) câblés en graphe acyclique, avec la signification de l'arc lue à partir de la destination (informationnel vers les décisions, dessiné en pointillé ; pertinence vers le hasard ; fonctionnel vers la valeur). C'est un diagramme structurel — il ne résout pas la VE.

Le mode ML suit la notation de fractionnement/feuille CART (Classification and Regression Trees) (Breiman et al., 1984) compatible avec export_text et plot_tree de scikit-learn.

Ce qui est implémenté aujourd'hui :

  • ✅ Les quatre modes : taxonomique, analyse de décision, diagramme d'influence, ML
  • ✅ Taxonomique : question/q, answer/a/leaf, yes:, no:, étiquettes de branche label "X":
  • ✅ Décision : decision, chance, end/outcome, choice, prob, payoff=N, repli EV automatique
  • ✅ Influence : nœuds decision/chance/value, utility=N, arcs Source -> Cible, sémantique d'arc dérivée de la destination, arcs informationnels pointillés, validation acyclicité + nœud-valeur
  • ✅ ML : split, leaf, préfixes de branche true/false, feature=, threshold=, gini=, entropy=, mse=, class=, value=
  • ✅ Config : direction:, edgeStyle:, impurity:, classes:, branchLabels:, branchLength:, mode:
  • ⏳ Rendu visuel de longueur de branche pondérée par la probabilité (branchLength: probability analysé mais pas encore appliqué visuellement)
  • ⏳ Superpositions d'analyse de sensibilité (annotations de type diagramme en tornade sur les arbres de décision)
  • ⏳ Vue forêt / ensemble — plusieurs arbres côte à côte

Références :

  • Raiffa, H. & Schlaifer, R. (1961). Applied Statistical Decision Theory. Harvard Business School.
  • Howard, R. A. & Matheson, J. E. (1981/2005). Influence Diagrams. Decision Analysis 2(3).
  • Breiman, L. et al. (1984). Classification and Regression Trees. Wadsworth.
  • Wikipedia — Decision tree · Influence diagram · Decision tree learning

13. Feuille de route

Prévu — pas encore analysable. Ne l'utilisez pas dans le DSL généré aujourd'hui ; l'analyseur le rejettera ou l'ignorera.

  • Rendu visuel branchLength: probability — la clé de configuration est analysée mais le moteur de disposition ne met pas encore à l'échelle les longueurs de branches par probabilité.
  • Analyse de sensibilité / tornade — bloc sensitivity: annotant quelles valeurs prob affectent le plus la VE finale.
  • Annotations d'export — sortie en tableau structuré (matrice de décision) aux côtés du SVG du diagramme.
  • Vue forêt — mot-clé forest enveloppant plusieurs blocs decisiontree dans une disposition de comparaison côte à côte.
  • Marqueurs interactifs de réduction/expansioncollapsed: true sur un nœud pour rendre un espace réservé triangulaire pour les sous-arbres profonds.

Suivez dans les tickets GitHub si vous avez besoin de l'une de ces fonctionnalités plus tôt.


Exemples associés

Scénarios prêts à l'emploi issus de la galerie d'exemples :

decisiontree·§ Clinical/support decision flow
Customer Support Triage Decision tree (taxonomy mode) with 9 nodes and 8 edges Customer Support Triage yes no yes no yes no yes no Is the service completely down? Outage confirmed on status page? Follow incident protocol — page Check monitoring — open severity-1 ticket Is the issue affecting billing? Escalate to billing team — SLA breach risk Can user reproduce consistently? Collect HAR trace — file bug report Ask for screenshot — watch for recurrence
Support ticket triage
Taxonomy-mode decision tree for front-line support — routes an incoming ticket through outage, billing, and reproducibility gates to the right team.
saas
decisiontree·§ Raiffa & Schlaifer (1961)
Platform Vendor Choice Decision tree (decision mode) with 8 nodes and 7 edges Platform Vendor Choice Build in-house Managed SaaS vendor Hybrid approach p=60% p=40% p=50% p=50% Which vendor? EV=600,000 Project outcome EV=600,000 On-time delivery $900,000 Over budget / delayed $150,000 Predictable cost $500,000 Integration complexity EV=500,000 Smooth integration $700,000 Integration rework $300,000
Investment decision analysis
Decision-analysis tree evaluating build-vs-buy vs hybrid for a platform choice — chance nodes with probabilities, automatic expected-value rollback.
strategy

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.