決定木ダイアグラム(Decision Tree Diagram)

決定木について

「決定木」(decision tree)は、選択とその結果を根付き木として表現する分岐ダイアグラムです。各内部ノードは質問または決定、各エッジは回答またはアクション、各葉は結果です。このフォーマットは、かなり異なる 3 つの実践領域に登場します。トラブルシューティングのフローチャートと臨床判断ルール(分類木)、期待値を使ったリスクおよび投資分析(決定分析)、そして機械学習モデルの検査(分類器木)です。表面的な違いはありますが、3 つすべてが同じ木構造を共有しているため、Schematex はモードセレクタを持つ 1 つのキーワードの下にエンコードしています。

Schematex の決定木がカバーする範囲:(1) 分類モード — 医療トリアージで使われる yes/no 質問フロー(Turing 1937 の系統。現在は臨床意思決定支援の標準)、(2) 決定分析モード — 経営科学で開発された期待値ロールバック法(Raiffa & Schlaifer, 1961)、(3) ML モード — scikit-learn などの訓練済み分類器の可視化に使われる CART 分割/葉フォーマット(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·12.8 ms·7.2 KB SVG

1. 最初の決定木

最小限の実用的な決定木:2 つの分岐を持つルート質問。

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.9 ms·4.8 KB SVG

使用法の 80% をカバーする 4 つのルール:

  1. decisiontree で始めます。オプションで :mode とクォートされたタイトル。
  2. 各質問ノードは question "text"(または短縮形 q "text")を使用します。
  3. 各回答/葉は answer "text"(または a "text" または leaf "text")を使用します。
  4. 分岐ラベル — yes:no:、またはカスタム label "X": — が同じ行の子ノードの前に付きます。

インデントがネストを制御します。各レベルはスペース 2 つを追加します。パーサーはインデントの深さから親子関係を計算します。

コメントは単独行で # または // で始める必要があります。


2. モード

モードはヘッダ行で設定します:

ヘッダモード用途
decisiontree分類Yes/no 質問フロー、トラブルシューティングガイド、臨床意思決定支援
decisiontree:decision(または decisiontree:da決定分析投資決定、リスク分析、期待値計算
decisiontree:influence(または mode: influence影響図決定問題のコンパクトな DAG ビュー — 木に展開する前の構造
decisiontree:ml機械学習訓練済み CART 分類器の可視化(scikit-learn、XGBoost など)

デフォルトの方向は分類と ML では top-down、決定分析では left-right です。


3. 分類モード

最適な用途:トラブルシューティングガイド、FAQ、臨床プロトコル、製品推奨フロー。

ノードキーワード

キーワードエイリアス意味
question "…"q "…"内部ノード — 子を持つ質問
answer "…"a "…", leaf "…"葉ノード — 最終的な結果

分岐ラベル

構文意味
yes: question "…""yes" とラベルされた分岐
no: answer "…""no" とラベルされた分岐
label "Custom text": answer "…"任意のカスタムラベルを持つ分岐

カスタムラベルを使えば、1 つの質問から複数方向の決定に対して yes/no を超えたラベルを付けられます。

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·13.7 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.7 ms·4.8 KB SVG

4. 決定分析モード

最適な用途:投資決定、自社開発 vs 外部調達分析、リスク加重戦略評価。

ノードキーワード

キーワードエイリアス意味
decision "…"決定ノード — アクターが分岐を選択
chance "…"確率ノード — 不確かな結果
end "…"outcome "…"終端ノード — 最終的なペイオフ

分岐キーワード

キーワード意味
choice "label"決定ノードからの入力分岐に名前を付ける
prob N確率ノードからの入力分岐に確率(0〜1)を設定する

ペイオフ属性

任意のノードの payoff=N でペイオフ値を設定します。end / outcome ノードでは最終値を定義します。パーサーは期待値ロールバックを自動実行します。各 chance ノードの EV は子の EV の確率加重合計、各 decision ノードの EV は最大の子の EV となり、最適な分岐にフラグが付きます。

制約: chance ノードの直接の子の確率はすべて 1.0(±0.01)に合計される必要があります。そうでない場合、パーサーは DTreeParseError をスローします。

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·2.5 ms·7.1 KB SVG

5. 影響図モード

最適な用途:決定問題を展開する前にコンパクトに枠組みすること。決定分析モードが各結果のすべての分岐を明示的な木として描くのに対し、影響図Howard & Matheson, 1981)は同じ問題を変数とそれらの依存関係の有向非巡回グラフ(DAG)として描きます。各状態が何通りとれるかに関わらず、決定、不確実性、目的ごとに 1 つのノードを持ちます。何が何を通知し、何がペイオフに影響するかという構造を組み合わせ爆発なしに示せるため、意思決定分析者が最初に使うダイアグラムです。

このモードは構造的であり、計算的ではありません。 決定分析モードとは異なり、期待値を解くことはしません — コンパクトなグラフは EV ロールバックに必要な確率とペイオフのテーブルを意図的に省略しています。問題の形を伝えて検証するために使用し、数値を折りたたみたい場合は決定分析モード(セクション 4)を使用してください。

ヘッダ形式

モードを選択する 2 つの等価な方法:

decisiontree:influence "Oil Wildcatter"

または、ヘッダの後の独立した行のディレクティブとして:

decisiontree "Market Entry"
  mode: influence

ノードキーワード

各ノードは kind Id "label" として宣言されます — アーク配線に使われる id の後にクォートされた表示ラベルが続きます。

キーワード形状意味
decision Id "…"矩形意思決定者が制御する選択
chance Id "…"楕円不確かな変数(世界の状態)
value Id "…"八角形最適化される目標 / ペイオフ

形状は標準的な影響図の規則に従います:決定は矩形、不確実性は楕円、価値ノードは八角形。価値ノードに utility=N を追加すると、そのノードが表すペイオフにアノテーションを付けられます(value Profit "Net profit" utility=42)。

アークとその意味

アークはノード id で Source -> Target として独立した行に記述します。アークの意味は目的地から読み取られます、正確に発表された標準と同様に:

アーク先意味描画方法
decision情報的 — これは決定が下される前にわかっている破線
chance関連性 / 条件 — ソースがこの不確実性を条件付ける実線
value機能的 — ソースはペイオフ関数の引数実線

破線の情報的アークに注意してください:Seismic -> Drill は「地震テストの結果が掘削するかどうかを選択する前に観察される」ことを意味します。これがまさにモデル化する価値のある決定です。

検証ルール

  • グラフは非巡回でなければなりません — サイクル(例:A -> BB -> A)は拒否されます。
  • 少なくとも 1 つの value ノードが必要です。目的のない影響図は決定問題ではありません。
  • アークは宣言されたノード id を参照する必要があります。

オイルワイルドキャッター — 標準的な教育問題。地震テストの結果は掘削決定の前に観察されます(破線の情報的アーク Seismic -> Drill)。テストは実際に石油が存在するかどうかに関連します(Seismic -> Oil)。石油の状態と掘削の選択の両方が利益に影響します(Oil -> ProfitDrill -> 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·2.8 ms·3.1 KB SVG

mode: influence ディレクティブ形式を使用した市場参入決定。需要は参入前に観察されます(Demand -> Enter、情報的/破線)。また利益を直接駆動し、競合他社の反応はペイオフのみに影響します。

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.7 ms·3.1 KB SVG

6. 機械学習モード

最適な用途:訓練済み CART 分類器の説明、モデル透明性レポート、特徴量重要度分析。

ノードキーワード

キーワード意味
split "…"内部分割ノード — 特徴量テストを含む
leaf "…"葉ノード — クラスまたは回帰値

分岐プレフィックス

truefalse が子ノードの前に付き、各子が表す分岐をマークします。

プロパティ(key=value、コロンなし、値のクォートなし)

プロパティ適用対象意味
feature=namesplit分割で使われる特徴量名
op="<="split比較演算子(特殊文字を含む場合はクォート)
threshold=5.9split分割閾値
samples=150split, leafこのノードのサンプル数
gini=0.5split, leafジニ不純度
entropy=0.5split, leafエントロピー不純度
mse=0.3split, leaf平均二乗誤差(回帰)
gain=0.2split, leaf情報利得
class=nameleaf予測されたクラス名
value=50leafサンプル数。クラス分布には value=[50,30,20] を使用
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·1.9 ms·6.0 KB SVG

7. 設定オプション

設定行はヘッダと最初のノードの間に置きます。各行は key: value(コロン、config キーワードなし)です。

共通設定(全モード)

キーデフォルト効果
direction:top-downleft-righttop-down(分類/ML)、left-right(決定)レイアウト方向
edgeStyle:(または edge-style:diagonalorthogonalbracketモード依存エッジ描画スタイル

分類設定

キーデフォルト効果
branchLabels:(または branch-labels:booleanrelationboolean分岐ラベルスタイル

決定分析設定

キーデフォルト効果
branchLength:(または branch-length:probabilityオフ確率に比例して分岐長をスケール

ML 設定

キーデフォルト効果
impurity:ginientropymsegainginiノードに表示される不純度メトリクス
classes:カンマ区切りリスト表示用クラスラベル名
decisiontree:ml "Loan classifier"
direction: top-down
impurity: gini
classes: Approved, Denied, Review

8. ラベルとコメント

  • ダイアグラムタイトル: decisiontree "Title" — ヘッダキーワードの後のクォートされた文字列。
  • ノードラベル: ノードキーワードの直後のクォートされた文字列 — question "Is the fee waived?"
  • 分岐ラベル: yes:no:、または label "Custom": が子ノードの前 — 子と同じ行に。
  • ペイオフ: 決定/end ノード行の末尾の payoff=250000
  • ML プロパティ: ノードのラベル文字列の後の key=value トークン([…] ブラケットなし、= の周りにスペースなし)。
  • コメント: 行の先頭(オプションの先頭空白の後)の # または //。フルライン コメントのみサポート — インラインの末尾コメントは非対応。

9. 予約語とエスケープ

予約ノードキーワード: decisionchanceendoutcomechoiceprobsplitleafquestionqanswera

予約分岐プレフィックス: yes:no:truefalselabel

予約ヘッダ形式: decisiontreedecisiontree:decisiondecisiontree:dadecisiontree:ml

スペースを含む文字列はダブルクォートが必要です:question "Annual revenue > $1M?"。ノードラベル、label "…": 構文からの分岐ラベル、ダイアグラムタイトルはすべてダブルクォートが必要です。

予約トークンコンテキスト備考
yes: / no:分類モードでの行頭ラベルとして使用不可 — リテラルテキスト "yes" が必要な場合は label "yes": を使用
true / falseML モードでの行頭ノードラベルにはできない
choice決定モードでの行頭ノードではなく分岐ラッパーとして機能
prob決定モードでの行頭数値が続く必要がある

10. よくあるミス

記述した内容パーサーの反応修正方法
yes: "Approve"(ノードキーワードなし)DTreeParseError: Missing taxonomy node kindyes: answer "Approve"
chance の子の確率が 0.8 に合計されるDTreeParseError: probabilities do not sum to 1.0prob 値が正確に 1.0 になるよう調整(±0.01)
question "text" の子が同じインデントレベル子として解析されず兄弟になる子を親より 2 スペース多くインデント
config direction = top-downconfig キーワードを使用)config はフィッシュボーンのキーワード — ここでは認識されないdirection: top-down を使用(config プレフィックスなし)
feature = petal_length= の周りにスペース)個別のトークンとして解析。プロパティは認識されないスペースなし:feature=petal_length
[payoff: 500000] ブラケット構文認識されない — パーサーはペイオフのブラケットを無視payoff=500000 を使用(ブラケットなし、= の周りにスペースなし)
decisiontree:taxonomyDTreeParseError: Invalid headerdecisiontree を使用(分類にはモードサフィックスなし)

11. 文法(EBNF)

document       = header ( config-line )* node

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

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

// ── Taxonomy mode ──────────────────────────────
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 ":"

// ── Decision-analysis mode ─────────────────────
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, value, and child all on one line

// ── ML mode ───────────────────────────────────
ml-node        = ( "true" | "false" )? ml-kind WS quoted-string ml-prop* NEWLINE
                   INDENT ml-child*
                 // "true"/"false" and ml-kind must be on the same line
ml-kind        = "split" | "leaf"
ml-prop        = WS key "=" value     // no spaces around "="

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

権威ある情報源:src/diagrams/decisiontree/parser.ts。これがパーサーと異なる場合、パーサーが優先されます — イシューを開いてください。


12. 標準準拠

Schematex の決定木は 4 つの確立された規則をカバーします:

分類モードは臨床意思決定支援システム(Arden Syntax 系統)と ISO 9001 トラブルシューティング手順に共通する質問/回答フローチャート規則に従います。

決定分析モードは経営科学からの期待値ロールバック法に従います:決定ノード(四角、アクターが選択)、確率ノード(丸、確率的)、ペイオフ付き終端ノード。EV は後ろ向き帰納法(Raiffa & Schlaifer, 1961)によって自動計算されます。

影響図モードは Howard & Matheson (1981) の規則に従います:非巡回グラフとして配線された決定(矩形)、確率(楕円)、価値(八角形)ノード。アークの意味は目的地から読み取られます(決定への情報的アークは破線、確率への関連性アーク、価値への機能的アーク)。構造的なダイアグラムであり、EV を解くことはしません。

ML モードは CART(分類回帰木)の分割/葉表記(Breiman et al., 1984)に従い、scikit-learn の export_textplot_tree の出力と互換性があります。

現在実装済みの内容:

  • ✅ 4 つのモードすべて:分類、決定分析、影響図、ML
  • ✅ 分類:question/qanswer/a/leafyes:no:label "X": 分岐ラベル
  • ✅ 決定:decisionchanceend/outcomechoiceprobpayoff=N、自動 EV ロールバック
  • ✅ 影響図:decision/chance/value ノード、utility=NSource -> Target アーク、目的地から導出されるアーク意味論、破線の情報的アーク、非巡回性 + 価値ノード検証
  • ✅ ML:splitleaftrue/false 分岐プレフィックス、feature=threshold=gini=entropy=mse=class=value=
  • ✅ 設定:direction:edgeStyle:impurity:classes:branchLabels:branchLength:mode:
  • ⏳ 確率加重分岐長レンダリング(branchLength: probability は解析されるが視覚的にはまだ適用されない)
  • ⏳ 感度分析オーバーレイ(決定木上のトルネードチャートスタイルのアノテーション)
  • ⏳ フォレスト/アンサンブルビュー — 複数の木を並べて表示

参考文献:

  • 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. ロードマップ

計画中 — まだ解析できません。 今日の生成 DSL では使用しないでください。パーサーが拒否または無視します。

  • branchLength: probability の視覚的レンダリング — 設定キーは解析されますが、レイアウトエンジンはまだ確率で分岐長をスケーリングしません。
  • 感度 / トルネード分析 — どの prob 値が最終的な EV に最も影響するかをアノテーションする sensitivity: ブロック。
  • エクスポートアノテーション — ダイアグラム SVG とともに構造化テーブル出力(意思決定マトリックス)。
  • フォレストビュー — 複数の decisiontree ブロックを並べて比較レイアウトでラップする forest キーワード。
  • 折りたたみ/展開インタラクティブマーカー — 深いサブツリーの三角形プレースホルダーをレンダリングするためのノードの collapsed: true

早急にこれらが必要な場合は GitHub イシューで追跡してください。


関連例

サンプルギャラリーからすぐに使えるシナリオ:

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.