ディシジョン ツリー

デシジョン フォレスト モデルはディシジョン ツリーで構成されています。デシジョン フォレスト学習アルゴリズム(ランダム フォレストなど)は、少なくとも部分的に、ディシジョン ツリーの学習に依存しています。

このコースのセクションでは、小さなサンプル データセットを調べて、単一のディシジョン ツリーをトレーニングする方法について学習します。次のセクションでは、ディシジョン ツリーを組み合わせてディシジョン フォレストをトレーニングする方法について説明します。

YDF コード

YDF で CART 学習機能を使用して、個々のディシジョン ツリー モデルをトレーニングします。

# https://ydf.readthedocs.io/en/latest/py_api/CartLearner
import ydf
model = ydf.CartLearner(label="my_label").train(dataset)

モデル

ディシジョン ツリーは、ツリー状に階層的に編成された一連の「質問」で構成されるモデルです。質問は通常、条件分割テストと呼ばれます。このクラスでは「条件」という用語を使用します。リーフ以外のノードには条件が含まれ、リーフノードには予測が含まれます。

植物の木は通常、根が下部にありますが、分類木は通常、(最初のノード)が上部に表示されます。

2 つの条件と 3 つのリーフを含むディシジョン ツリー。最初の条件(ルート)は num_legs >= 3、2 番目の条件は num_eyes >= 3 です。3 つの葉は、ペンギン、クモ、犬です。

図 1. 簡単な分類ディシジョン ツリー。緑色の凡例はディシジョン ツリーの一部ではありません。

 

ディシジョン ツリー モデルの推論は、条件に応じてサンプルをルート(上部)からリーフノード(下部)のいずれかに転送することで計算されます。到達したリーフの値が、ディシジョン ツリーの予測です。訪問されたノードのセットは推論パスと呼ばれます。たとえば、次の特徴値について考えてみましょう。

num_legs num_eyes
4 2

予測結果は「dog」になります。推論パスは次のようになります。

  1. num_legs ≥ 3 → はい
  2. num_eyes ≥ 3 → いいえ

図 1 と同じ図ですが、この図は 2 つの条件にわたる推論パスを示しており、犬のリーフで終了しています。

図 2. 例 *{num_legs : 4, num_eyes : 2}* でリーフ *dog* に至る推論パス。

 

上の例では、分類予測が分類ツリーのリーフに含まれています。つまり、各リーフには、考えられる種のセットから動物種が含まれています。

同様に、ディシジョン ツリーは、回帰予測(数値)でリーフにラベルを付けることで、数値を予測できます。たとえば、次の分類ツリーは、動物のかわいらしさを 0 ~ 10 の数値で予測します。

各リーフに異なる浮動小数点数を含む分類ツリー。

図 3. 数値予測を行うディシジョン ツリー。