Main Content

predict

バギングされた決定木のアンサンブルの使用による応答の予測

構文

Yfit = predict(B,X)
Yfit = predict(B,X,Name,Value)
[Yfit,stdevs] = predict(___)
[Yfit,scores] = predict(___)
[Yfit,scores,stdevs] = predict(___)

説明

Yfit = predict(B,X) は、バギングされた決定木のアンサンブル B に基づいて、テーブルまたは行列 X 内の予測子データに対する予測応答のベクトルを返します。Yfit は、分類の場合は文字ベクトルの cell 配列、回帰の場合は数値配列です。既定の設定では、predict はアンサンブル内のすべてのツリーから民主的な (重み付けされていない) 平均の票決を受け入れます。

B は学習済みの TreeBagger モデル オブジェクト、つまり関数 TreeBagger によって返されるモデルです。

X は、応答の生成に使用する予測子データのテーブルまたは行列です。行は観測値を、列は変数を表します。

  • X が数値行列の場合

    • X の列を構成する変数の順序は、B に学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえば Tbl) を使用して B に学習をさせた場合、Tbl に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。学習時に Tbl 内の数値予測子をカテゴリカルとして扱うには、関数 TreeBagger の名前と値のペアの引数 CategoricalPredictors を使用してカテゴリカル予測子を同定します。Tbl に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X が数値行列である場合、predict でエラーがスローされます。

  • X がテーブルの場合

    • predict は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。

    • テーブル (たとえば Tbl) を使用して B に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が、(B.PredictorNames に格納されている) B に学習させた変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。TblX に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

    • 数値行列を使用して B に学習をさせた場合、B.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、TreeBagger の名前と値のペアの引数 PredictorNames を参照してください。X 内の予測子変数はすべて数値ベクトルでなければなりません。X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

Yfit = predict(B,X,Name,Value) は、以下の名前と値のペアの引数を 1 つ以上使用して追加オプションを指定します。

  • 'Trees' — 応答の計算に使用する木のインデックスの配列。既定の設定は 'all' です。

  • 'TreeWeights' — 指定された木からの票に重みを付けるための NTrees 個の重みの配列。NTrees は、アンサンブル内の木の本数です。

  • 'UseInstanceForTree' — 各観測値に対する予測を行うために使用する木を示す NobsNTrees 列の logical 行列。Nobs は観測値の個数です。既定の設定では、すべての観測値に対してすべてのツリーが使用されます。

回帰の場合、[Yfit,stdevs] = predict(___) は前の構文における任意の入力引数を組み合わせて使用し、成長した木のアンサンブルにおいて計算された応答の標準偏差も返します。

分類の場合、[Yfit,scores] = predict(___) はすべてのクラスのスコアも返します。scores は、観測値ごとに 1 つずつの行、クラスごとに 1 つずつの列がある行列です。各木によって生成されるスコアは、各観測値および各クラスについて、木の葉におけるそのクラスの観測値の割合として計算された、そのクラスから観測値が派生する確率です。predict は、アンサンブル内のすべての木についてこれらのスコアの平均を計算します。

[Yfit,scores,stdevs] = predict(___) は、分類の場合に、計算れたスコアの標準偏差も返します。stdevs は、観測値ごとに 1 つずつの行、クラスごとに 1 つずつの列がある行列です。標準偏差は、成長した木のアンサンブルに対して計算されます。

アルゴリズム

  • 回帰問題の場合、観測値の予測応答は、選択された木のみを使用した予測の加重平均になります。つまり、

    y^bag=1t=1TαtI(tS)t=1Tαty^tI(tS).

    • y^t は、アンサンブル内の木 t による予測です。

    • S は、予測を構成する、選択された木のインデックスの集合です ('Trees''UseInstanceForTree' を参照)。I(tS) は、t が集合 S に含まれている場合は 1、それ以外の場合は 0 になります。

    • αt は、木 t の重みです ('TreeWeights' を参照)。

  • 分類問題の場合、選択された木のみを使用して計算したクラスの事後確率 (分類スコア) の加重平均が最大になるクラスが、観測値について予測したクラスになります。つまり、

    1. c ∊ C である各クラスおよび各木 t = 1、...、T について、predictP^t(c|x) を計算します。これは、与えられた観測値 x に対し木 t を使用して推定されたクラス c の事後確率です。C は、学習データに含まれているすべての異なるクラスの集合です。分類木の事後確率についての詳細は、fitctreepredict を参照してください。

    2. predict は、選択された木についてクラスの事後確率の加重平均を計算します。

      P^bag(c|x)=1t=1TαtI(tS)t=1TαtP^t(c|x)I(tS).

    3. 加重平均が最大になるクラスが、予測したクラスになります。

    y^bag=argmaxcC{P^bag(c|x)}.