ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

回帰学習器アプリを使用して回帰木に学習をさせる

この例では、回帰学習器アプリを使用してさまざまな回帰木を作成および比較する方法と、学習済みのモデルをワークスペースにエクスポートして新しいデータの予測を行う方法を示します。

回帰木に学習をさせて、与えられた入力データに対する応答を予測させます。回帰木の応答を予測するには、ルート (開始) ノードから葉ノードの方向に木をたどります。各ノードでは、そのノードに関連付けられているルールを使用して、どの分岐に進むかを決定します。葉ノードに達するまで続けます。予測された応答は、その葉ノードに関連付けられている値です。

Statistics and Machine Learning Toolbox™ のツリーは二分木です。予測の各ステップでは、1 つの予測子変数の値がチェックされます。たとえば、次の図は単純な回帰木を示しています。

この木は、2 つの予測子 x1 および x2 に基づいて応答を予測します。予測は最上位のノードから始まります。各ノードでは、予測子の値をチェックして、どの分岐に進むかを決定します。分岐が葉ノードに達した場合、そのノードに対応する値が応答として設定されます。

この例では carbig データセットを使用します。このデータセットには、1970 ~ 1982 年に製造されたさまざまな自動車モデルの次の特性が含まれています。

  • 加速度

  • 気筒数

  • エンジン排気量

  • エンジン出力 (馬力)

  • モデル年

  • 生産国

  • ガロンあたりの走行マイル数 (MPG)

他の変数が入力として与えられた場合の燃費 (ガロンあたりの走行マイル数) を予測するように、回帰木に学習をさせます。

  1. MATLAB® で、carbig データセットを読み込み、さまざまな変数が含まれているテーブルを作成します。

    load carbig
    cartable = table(Acceleration, Cylinders, Displacement,...
    Horsepower, Model_Year, Weight, Origin, MPG);
  2. [アプリ] タブの [機械学習] グループで [回帰学習器] をクリックします。

  3. [回帰学習器] タブで [新規セッション] をクリックして [ワークスペースから] を選択します。

  4. [新規セッション] ダイアログ ボックスの [ワークスペース変数] で、ワークスペース内のテーブルと行列のリストから cartable を選択します。

    応答および予測子変数が事前選択されていることを確認します。MPG が応答として、他のすべての変数が予測子として選択されています。この例では、選択を変更しないでください。

  5. 既定の検定方式をそのまま使用して続行するため、[セッションの開始] をクリックします。既定の検定オプションは、過適合を防止する交差検証です。

    回帰学習器は、x 軸にレコード番号がある応答のプロットを作成します。

  6. 応答プロットを使用して、どの変数が応答の予測に有用であるかを調べます。異なる予測子と応答の間の関係を可視化するには、[X 軸][X] リストで異なる変数を選択します。

    どの変数が最も明確に応答と相関しているかを調べます。DisplacementHorsepowerWeight はすべて、応答に対して目に見える明らかな影響があり、応答に対して負の関係があります。

  7. [X 軸] で変数 Origin を選択します。箱ひげ図が自動的に表示されます。箱ひげ図には、応答の代表的な値と外れ値の可能性がある値が表示されます。マーカーをプロットすると多くの点が重なる場合、箱ひげ図は役に立ちます。x 軸の変数に一意な値が少ない場合に箱ひげ図を表示するには、[スタイル][箱ひげ図] を選択します。

  8. 回帰木を選択して作成します。[回帰学習器] タブの [モデル タイプ] セクションで [すべての木] をクリックします。

    次に、[学習] をクリックします。

    ヒント

    Parallel Computing Toolbox™ がインストールされている場合、はじめて [学習] をクリックすると、ワーカーの並列プールが開くときにダイアログ ボックスが表示されます。プールが開いた後で、同時に複数の回帰モデルに学習をさせ、作業を続行することができます。

    回帰学習器は、[複雑な木][中程度の決定木] および [粗い木] という 3 つの回帰木を作成し学習をさせます。

    3 つのモデルが [履歴] の一覧に表示されます。モデルの検定 [RMSE] (平方根平均二乗誤差) をチェックします。最高のスコアはボックスで強調表示されます。

    [複雑な木][中程度の決定木] は同じような RMSE ですが、[粗い木] は精度が低くなっています。

    回帰学習器は、現在選択されているモデルの真の学習応答と予測された応答の両方をプロットします。

    メモ

    検定を使用する場合、結果には無作為性があるので、実際のモデル検定スコアはここに示されている結果と異なる場合があります。

  9. [履歴] の一覧でモデルを選択すると、そのモデルの結果が表示されます。[X 軸]Horsepower を選択し、応答プロットを確認します。真の応答と予測された応答の両方がプロットされます。[誤差] チェック ボックスを選択すると、予測された応答と真の応答の間の垂直線として予測誤差が表示されます。

  10. [現在のモデル] ウィンドウで現在選択されているモデルをさらに詳しく調べます。決定係数、MAE (平均絶対誤差)、予測速度など、他のモデル特性をチェックおよび比較します。詳細については、[現在のモデル] ウィンドウにおけるモデルの統計量の表示を参照してください。[現在のモデル] ウィンドウでは、モデルの学習に使用したオプションなど、現在選択されているモデル タイプの詳細を調べることもできます。

  11. 予測された応答と真の応答をプロットします。[回帰学習器] タブの [プロット] セクションで [予測と実際のプロット] をクリックします。このプロットを使用して、異なる応答値について回帰モデルがどの程度適切に予測を行うかを調べます。

    完璧な回帰モデルでは、予測された応答が真の応答と等しくなるので、すべての点が対角線上に配置されます。この線から点までの垂直距離は、その点についての予測誤差です。優れたモデルは誤差が小さいので、予測は対角線の近くに配置されます。通常、優れたモデルでは点が対角線の近くでほぼ対称的に配置されます。プロットに明確なパターンがある場合、モデルを改善できる可能性があります。

  12. 他のモデルを [履歴] の一覧で選択し、予測と実際のプロットを比較します。

  13. [モデル タイプ] ギャラリーで再度 [すべての木] を選択します。モデルを改善するため、別の機能をモデルに含めてみます。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。[回帰学習器] タブの [特徴量] セクションで [特徴選択] をクリックします。

    予測子から除外するため、[特徴選択] ウィンドウで [Acceleration][Cylinders] のチェック ボックスをクリアします。

    新しい予測子の設定を使用して新しい回帰木に学習をさせるため、[学習] をクリックします。

  14. [履歴] の一覧で新しいモデルを確認します。これらのモデルは前と同じ回帰モデルですが、7 つの予測子のうち 5 つのみを学習に使用しています。[履歴] の一覧には、使用した予測子の数が表示されます。どの予測子が使用されたかをチェックするには、[履歴] の一覧でモデルをクリックし、[特徴選択] ウィンドウのチェック ボックスを確認します。

    2 つの特徴量を削除したモデルの性能は、すべての予測子を使用するモデルと同程度です。すべての予測子を使用した場合でも予測子のサブセットのみを使用した場合でも、モデルによる予測に変わりはありません。データの収集が高価または困難な場合、一部の予測子がなくても十分に機能するモデルが好ましい可能性があります。

  15. Horsepower のみを予測子として使用して、3 つの事前設定されている回帰木に学習をさせます。[特徴選択] ウィンドウの選択を変更して [学習] をクリックします。

    エンジン出力のみを予測子として使用すると、モデルの精度が低下します。しかし、予測子を 1 つしか使用していないことを考えれば、モデルは十分に機能しています。この単純な 1 次元予測子空間では、粗い木が中程度および複雑な木と同じ程度に良好に機能するようになります。

  16. 最適なモデルを [履歴] の一覧で選択し、残差プロットを表示します。[回帰学習器] タブの [プロット] セクションで [残差のプロット] をクリックします。残差プロットには、予測された応答と真の応答の差が表示されます。残差を線グラフとして表示するため、[スタイル] セクションの [ライン] を選択します。

    x 軸にプロットする変数を [X 軸] で選択します。真の応答、予測された応答、レコード番号、またはいずれかの予測子を選択します。

    通常、優れたモデルでは残差が 0 の近くでほぼ対称的に配置されます。

  17. モデルの設定を調べるには、[履歴] の一覧で最適なモデルを選択し、詳細設定を表示します。[モデル タイプ] ギャラリーのオプションは事前設定された開始点であり、さらに設定を変更できます。[回帰学習器] タブの [モデル タイプ] セクションで [詳細設定] をクリックします。[履歴] の一覧に含まれている異なる回帰木のモデルを比較し、[回帰木の詳細オプション] ダイアログ ボックスで違いを調べます。[最小リーフ サイズ] の設定により木の葉のサイズが制御され、これにより回帰木のサイズと深さが制御されます。

    モデルをさらに改善するには、[最小リーフ サイズ] の設定を 8 に変更してから [学習] をクリックして新しいモデルに学習をさせます。

    [現在のモデル] ウィンドウまたは [回帰木の詳細オプション] ダイアログ ボックスで、選択した学習済みモデルの設定を確認します。

    回帰木の設定の詳細については、回帰木を参照してください。

  18. 選択したモデルをワークスペースにエクスポートします。[回帰学習器] タブの [エクスポート] セクションで [モデルのエクスポート] をクリックします。[モデルのエクスポート] ダイアログ ボックスで [OK] をクリックすると、既定の変数名 trainedModel がそのまま使用されます。

    結果に関する情報はコマンド ウィンドウに出力されます。

  19. エクスポートしたモデルを使用して、新しいデータで予測を行います。たとえば、ワークスペースにある cartable のデータについて予測を行うには、次のように入力します。

    yfit = trainedModel.predictFcn(cartable)
    出力の yfit には、各データ点について予測された応答が含まれています。

  20. 新しいデータを使用して同じモデルに学習をさせる処理を自動化したり、プログラムで回帰モデルに学習をさせる方法について調べるには、このアプリでコードを生成します。最適な学習済みモデルのコードを生成するには、[回帰学習器] タブの [エクスポート] セクションで [関数の生成] をクリックします。

    コードがモデルから生成され、ファイルが MATLAB のエディターに表示されます。詳細については、新しいデータでモデルに学習をさせる MATLAB コードの生成を参照してください。

ヒント

この例と同じワークフローを使用すると、回帰学習器で学習可能な他のタイプの回帰モデルを評価および比較できます。

使用可能な事前設定されているすべての回帰モデルに学習をさせます。

  1. [モデル タイプ] セクションの右端にある矢印をクリックして回帰モデルのリストを展開します。

  2. [すべて] をクリックしてから [学習] をクリックします。

他の回帰モデルのタイプについては、回帰学習器アプリにより回帰モデルに学習をさせるを参照してください。

関連するトピック