Menu
CoddyTech

決定木

Coddyの「機械学習入門」コースのレッスン 17/19。

決定木(Decision Tree)は、分類と回帰の両方のタスクに使用される非線形モデルです。他のアルゴリズムよりも人間の意思決定をより忠実に反映するため、直感的であると同時に、複雑なデータセットを扱う際にも強力です。その核心において、決定木は一連のシンプルなルールを使用してデータをサブセットに分割します。これは、データポイントの特徴について一連の「はい/いいえ」の質問をすることに似ています。
 

出典: wikipedia

決定木を、以下のようなツリー状のグラフとして視覚化してください:

  • 各内部ノードは、属性に対する「テスト」を表します(例:コイン投げで表が出るか裏が出るか)。 
  • 各ブランチ(枝)は、テストの結果を表します。
  • 各リーフノード(葉ノード)は、クラスラベル(すべての属性を計算した後に下される決定)を表します。

決定木の種類:

  • 分類木(Classification Trees):予測される結果が、データが属するクラスである場合に使用されます。
  • 回帰木(Regression Trees):予測される結果が実数として扱われる場合(例:家の価格)に使用されます。


 

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

challenge icon

チャレンジ

中級

次のような形式のルールのリストを受け取る、decide_outcome という名前の関数を作成してください:

rules = {
	rule1: {"type": "bigger", "value": 5},
	rule2: {"type": "smaller", "value": 7},

}

また、結果が条件を満たしたかどうかに応じて、次に進むべきルールを受け取ります:

outcome = {
	"rule1": {True: "rule2", False: "rule3"},
	"rule2": {True: "rule3", False: "rule4"},
	"rule3": {True: None, False: None}
	"rule4": {True: None, False: None}

}
data_point = {
	"rule1": 8,
	"rule2": 10,
}

出力は rule4 になるはずです。

  • 8 is bigger than 5 (True) → "rule1": {True: "rule2", False: "rule3"}, に基づき rule2 へ進む
  • 10 is smaller than 7 (False) → "rule2": {True: "rule3", False: "rule4"}, に基づき rule4 へ進む
  • これ以上進む方法がないため、出力は rule4 となります。

常に <strong>rule1</strong> から開始してください。

自分で試してみよう

def decide_outcome(rules, outcome, point):
    current_rule = "rule1"
    # ここにコードを記述してください

機械学習入門のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ