このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
回帰学習器アプリを使用して回帰木に学習をさせる
この例では、回帰学習器アプリを使用してさまざまな回帰木を作成および比較する方法と、学習済みのモデルをワークスペースにエクスポートして新しいデータの予測を行う方法を示します。
回帰木に学習をさせて、与えられた入力データに対する応答を予測させます。回帰木の応答を予測するには、ルート (開始) ノードから葉ノードの方向に木をたどります。各ノードでは、そのノードに関連付けられているルールを使用して、どの分岐に進むかを決定します。葉ノードに達するまで続けます。予測された応答は、その葉ノードに関連付けられている値です。
Statistics and Machine Learning Toolbox™ のツリーは二分木です。予測の各ステップでは、1 つの予測子変数の値がチェックされます。たとえば、次の図は単純な回帰木を示しています。
この木は、2 つの予測子 x1
および x2
に基づいて応答を予測します。予測は最上位のノードから始まります。各ノードでは、予測子の値をチェックして、どの分岐に進むかを決定します。分岐が葉ノードに達した場合、そのノードに対応する値が応答として設定されます。
この例では carbig
データセットを使用します。このデータセットには、1970 ~ 1982 年に製造されたさまざまな自動車モデルの次の特性が含まれています。
加速度
気筒数
エンジン排気量
エンジン出力 (馬力)
モデル年
重量
生産国
ガロンあたりの走行マイル数 (MPG)
他の変数が入力として与えられた場合の燃費 (ガロンあたりの走行マイル数) を予測するように、回帰木に学習をさせます。
MATLAB® で、
carbig
データセットを読み込み、さまざまな変数が含まれているテーブルを作成します。load carbig cartable = table(Acceleration,Cylinders,Displacement, ... Horsepower,Model_Year,Weight,Origin,MPG);
[アプリ] タブの [機械学習および深層学習] グループで [回帰学習器] をクリックします。
[回帰学習器] タブの [ファイル] セクションで、[新規セッション]、[ワークスペースから] を選択します。
[ワークスペースからの新規セッション] ダイアログ ボックスの [データセット変数] で、ワークスペース内の table と行列のリストから
cartable
を選択します。応答および予測子変数が事前選択されていることを確認します。
MPG
が応答として、他のすべての変数が予測子として選択されています。この例では、選択を変更しないでください。既定の検証方式をそのまま使用して続行するため、[セッションの開始] をクリックします。既定の検証オプションは、過適合を防止する交差検証です。
回帰学習器は、x 軸にレコード番号がある応答のプロットを作成します。
応答プロットを使用して、どの変数が応答の予測に有用であるかを調べます。さまざまな予測子と応答の間の関係を可視化するため、プロットの右の [X 軸] にある [X] のリストで別の変数を選択します。
どの変数が最も明確に応答と相関しているかを調べます。
Displacement
、Horsepower
、Weight
はすべて、応答に対して目に見える明らかな影響があり、すべて応答に対して負の関係を示しています。[X 軸] で変数
Origin
を選択します。箱ひげ図が自動的に表示されます。箱ひげ図には、応答の代表的な値と外れ値の可能性がある値が表示されます。マーカーをプロットすると多くの点が重なる場合、箱ひげ図は役に立ちます。x 軸の変数に一意な値が少ない場合に箱ひげ図を表示するには、[スタイル] の [箱ひげ図] を選択します。回帰木の選択肢に学習させます。複雑な木のモデルは [モデル] ペインに既に含まれています。中程度の木と粗い木のモデルをドラフト モデルのリストに追加します。[回帰学習器] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。[回帰木] グループで [中程度の木] をクリックします。[モデル] ペインにドラフトの中程度の木が作成されます。モデル ギャラリーを再度開き、[回帰木] グループで [粗い木] をクリックします。[モデル] ペインにドラフトの粗い木が作成されます。
[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。3 つの木のモデルの学習が行われ、各モデルの真の学習応答と予測された応答の両方がプロットされます。
メモ
Parallel Computing Toolbox™ がある場合は、[並列の使用] ボタンが既定でオンに切り替わります。[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択すると、ワーカーの並列プールが開きます。この間、ソフトウェアの対話的な操作はできません。プールが開いた後、モデルの学習を並列で実行しながらアプリの操作を続けることができます。
Parallel Computing Toolbox がない場合は、[すべてを学習] メニューの [バックグラウンド学習を使用] チェック ボックスが既定でオンになります。オプションを選択してモデルに学習させると、バックグラウンド プールが開きます。プールが開いた後、モデルの学習をバックグラウンドで実行しながらアプリの操作を続けることができます。
メモ
検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。
[モデル] ペインで、モデルの [RMSE (検証)] (検証平方根平均二乗誤差) をチェックします。最高のスコアはボックスで強調表示されます。
[複雑な木] と [中程度の木] は同じような RMSE ですが、[粗い木] は精度が低くなっています。
[モデル] ペインでモデルを選択すると、そのモデルの結果が表示されます。たとえば、[中程度の木] モデル (モデル 2) を選択します。[応答プロット] タブの [X 軸] で
Horsepower
を選択し、応答プロットを確認します。真の応答と予測された応答の両方がプロットされます。[誤差] チェック ボックスを選択すると、予測された応答と真の応答の間の垂直線として予測誤差が表示されます。モデルの [概要] タブで現在選択されているモデルをさらに詳しく調べます。[回帰学習器] タブの [モデル] セクションで [概要] をクリックします。決定係数、MAE (平均絶対誤差)、予測速度など、他のモデル特性をチェックおよび比較します。詳細については、[概要] タブと [モデル] ペインでのモデルの統計量の表示を参照してください。[概要] タブでは、モデルの学習に使用したハイパーパラメーターなど、現在選択されているモデル タイプの詳細を調べることもできます。
予測された応答と真の応答をプロットします。[回帰学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [予測と実際 (検証)] をクリックします。このプロットを使用して、異なる応答値について回帰モデルがどの程度適切に予測を行うかを調べます。
完璧な回帰モデルでは、予測された応答が真の応答と等しくなるので、すべての点が対角線上に配置されます。この線から点までの垂直距離は、その点についての予測誤差です。優れたモデルは誤差が小さいので、予測は対角線の近くに配置されます。通常、優れたモデルでは点が対角線の近くでほぼ対称的に配置されます。プロットに明確なパターンがある場合、モデルを改善できる可能性があります。
他のモデルを [モデル] ペインで選択し、各モデルについて予測と実際のプロットを開いてから、結果を比較します。プロットを比較しやすくするためにプロットのレイアウトを再編成します。モデル プロットのタブの右端にある [ドキュメント アクション] 矢印をクリックします。
[すべて並べて表示]
オプションを選択し、1 行 3 列のレイアウトを指定します。プロットの右上にある [プロット オプションを非表示] ボタンをクリックして、プロットのスペースを大きくします。
元のレイアウトに戻すには、[プロットと解釈] セクションで [レイアウト] ボタンをクリックし、[単一モデル (既定)] を選択します。
[モデル] ギャラリーで、[回帰木] の [すべての木] を選択します。木のモデルを改善できるか試すため、モデルに別の特徴量を含めます。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。
[回帰学習器] タブの [オプション] セクションで [特徴選択] をクリックします。
[既定の特徴選択] タブで、さまざまな特徴ランク付けアルゴリズムを選択して最も重要な特徴を特定できます。アプリで特徴ランク付けアルゴリズムを選択すると、特徴の重要度スコアに応じて並べ替えられたプロットが表示されます。スコアが高いほど (
Inf
も含む)、特徴の重要度が高いことを示します。ランク付けされた特徴とそのスコアの表が表示されます。この例では、[MRMR] と [F Test] の両方の特徴ランク付けアルゴリズムで、加速度と生産国が最も低い予測子とランク付けされています。予測子に数値変数とカテゴリカル変数が混在しているため、[RReliefF] オプションは無効になっています。
[特徴のランク付けアルゴリズム] の [F Test] をクリックします。[特徴選択] で、検証メトリクスのバイアスを回避するために、最も高ランクの特徴を選択する既定のオプションを使用します。7 つの特徴のうちの 4 つをモデルの学習で保持するように指定します。
[保存して適用] をクリックします。特徴選択の変更が現在のドラフト モデルと [モデル] ギャラリーを使用して作成される新しいモデルに適用されます。
数を絞った特徴のセットを使用して木のモデルに学習させます。[回帰学習器] タブの [学習] セクションで、[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択します。
[モデル] ペインで新しいモデルを確認します。これらのモデルは前と同じ回帰木ですが、7 つの予測子のうち 4 つのみを学習に使用しています。使用した予測子の数が表示されます。どの予測子が使用されたかをチェックするには、[モデル] ペインでモデルをクリックし、モデルの [概要] タブの展開された [特徴選択] セクションでチェック ボックスに注目します。
メモ
交差検証方式を使用する場合は、[最も高ランクの特徴を選択] オプションを使用して特徴選択を行うように選択すると、学習分割ごとに、モデルの学習前にアプリが特徴選択を行います。異なる分割では、最高ランクの特徴として異なる予測子を選択できます。[既定の特徴選択] タブの表には、学習データと検証データで学習させた完全なモデルで使用される予測子のリストが表示されます。
3 つの特徴量を削除したモデルは、すべての予測子を使用するモデルほど効果的に機能しません。一般に、データの収集が高価または困難な場合、一部の予測子がなくても十分に機能するモデルが好ましい可能性があります。
Horsepower
のみを予測子として使用して、3 つの事前設定されている回帰木に学習をさせます。[モデル] ギャラリーで、[回帰木] の [すべての木] を選択します。モデルの [概要] タブで [特徴選択] セクションを展開します。[特徴を個別に選択] オプションを選択し、Horsepower
を除くすべての特徴のチェック ボックスをクリアします。[回帰学習器] タブの [学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。エンジン出力のみを予測子として使用すると、モデルの精度が低下します。しかし、予測子を 1 つしか使用していないことを考えれば、モデルは十分に機能しています。この単純な 1 次元予測子空間では、粗い木が中程度および複雑な木と同じ程度に良好に機能するようになります。
最適なモデルを [モデル] ペインで選択し、残差プロットを表示します。[回帰学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [残差 (検証)] をクリックします。残差プロットには、予測された応答と真の応答の差が表示されます。残差を線グラフとして表示するため、[スタイル] セクションの [ライン] を選択します。
x 軸にプロットする変数を [X 軸] で選択します。真の応答、予測された応答、レコード番号、またはいずれかの予測子を選択します。
通常、優れたモデルでは残差が 0 の近くでほぼ対称的に配置されます。残差に明確なパターンがある場合、モデルを改善できる可能性があります。
モデルのハイパーパラメーターの設定を調べるには、[モデル] ペインで最適なモデルを選択し、モデルの [概要] タブの [モデルのハイパーパラメーター] セクションを展開します。粗い木、中程度の木、および複雑な木のモデルを比較し、モデルのハイパーパラメーターの違いに注目します。具体的には、[最小リーフ サイズ] の設定について、粗い木では 36、中程度の木では 12、複雑な木では 4 になっています。この設定により木の葉のサイズが制御され、これにより回帰木のサイズと深さが制御されます。
最適なモデル (すべての予測子を使用して学習させた中程度の木) を改善できるか試すため、[最小リーフ サイズ] の設定を変更します。まず、[モデル] ペインでモデルをクリックします。[回帰学習器] タブの [モデル] セクションで [複製] をクリックします。[概要] タブで [最小リーフ サイズ] の値を 8 に変更します。次に、[回帰学習器] タブの [学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。
回帰木の設定の詳細については、回帰木を参照してください。
選択したモデルの完全なバージョンまたはコンパクトなバージョンをワークスペースにエクスポートできます。[回帰学習器] タブの [エクスポート] セクションで [モデルのエクスポート] をクリックし、[モデルのエクスポート] または [コンパクト モデルのエクスポート] のどちらかを選択します。[モデルのエクスポート] ダイアログ ボックスで [OK] をクリックすると、既定の変数名
trainedModel
がそのまま使用されます。結果に関する情報はコマンド ウィンドウに出力されます。
エクスポートしたモデルを使用して、新しいデータで予測を行います。たとえば、ワークスペースにある
cartable
のデータについて予測を行うには、次のように入力します。出力のyfit = trainedModel.predictFcn(cartable)
yfit
には、各データ点について予測された応答が含まれています。新しいデータを使用して同じモデルに学習をさせる処理を自動化したり、プログラムで回帰モデルに学習をさせる方法について調べるには、このアプリでコードを生成します。最適な学習済みモデルのコードを生成するには、[回帰学習器] タブの [エクスポート] セクションで [関数の生成] をクリックします。
コードがモデルから生成され、ファイルが MATLAB のエディターに表示されます。詳細については、新しいデータでモデルに学習をさせる MATLAB コードの生成を参照してください。
ヒント
この例と同じワークフローを使用すると、回帰学習器で学習可能な他のタイプの回帰モデルを評価および比較できます。
使用できる事前設定済みの最適化不可能なすべての回帰モデルに学習をさせます。
[回帰学習器] タブの [モデル] セクションで矢印をクリックして回帰モデルのギャラリーを開きます。
[開始] グループで [すべて] をクリックします。
[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。
他の回帰モデルのタイプについては、回帰学習器アプリにより回帰モデルに学習をさせるを参照してください。