ドキュメンテーション

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

分類学習器アプリを使用した決定木の学習

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

データに対する応答を予測するように分類木を学習させることができます。応答を予測するには、ツリーのルート (開始) ノードから葉ノードの方向に意思決定を行います。葉ノードには応答が含まれます。

Statistics and Machine Learning Toolbox™ のツリーは二分木です。予測の各段階では、1 つの予測子 (変数) について値のチェックが行われます。たとえば、次の図は単純な分類木を示しています。

このツリーでは、2 つの予測子 x1x2 に基づいて分類を予測します。予測は最上位のノードから始まります。各決定では、予測子の値をチェックして、どの分岐に進むかを決定します。分岐がリーフ ノードに達すると、データは 0 または 1 のタイプに分類されます。

  1. MATLAB® で、fisheriris データセットを読み込みます。このデータセットの変数から、分類に使用する測定予測子 (特徴) のテーブルを作成します

    fishertable = readtable('fisheriris.csv');
  2. [アプリ] タブの [機械学習] グループで [分類学習器] をクリックします。

  3. [分類学習器] タブの [ファイル] セクションで、[新規セッション] をクリックします。

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

    データ型に基づいて応答および予測子変数が選択されていることを確認します。花弁と萼片の長さおよび幅は予測子、種は分類対象の応答です。この例では、選択を変更しないでください。

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

    データの散布図が作成されます。

  6. 散布図を使用して、どの変数が応答の予測に有用であるかを調べます。[予測子][X] および [Y] のリストで異なるオプションを選択して、種と測定値の分布を可視化します。種の色が最も明確に分離されるのはどの変数であるかを調べます。

    4 つの予測子すべてに関して setosa 種 (青い点) が他の 2 つの種から容易に分離されることを確認します。versicolor 種と virginica 種はどの予測子の測定値でも接近しており、特に萼片の長さと幅をプロットした場合は重なります。setosa は、他の 2 つの種よりも予測が容易です。

  7. 分類木モデルを作成するため、[分類学習器] タブの [モデル タイプ] セクションで下矢印をクリックしてギャラリーを展開してから [粗い木] をクリックします。次に、[学習] をクリックします。

    ヒント

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

    単純な分類木が作成され、結果がプロットされます。

    [履歴] の一覧で [粗い木] モデルを確認します。モデル検定スコアを [精度] ボックスで確認します。このモデルは良好に機能しました。

    メモ

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

  8. 散布図を確認します。X は、誤分類された点を示しています。青い点 (setosa 種) はすべて正しく分類されていますが、他の 2 つの種は一部が誤分類されています。[プロット][データ][モデル予測] を切り替えます。正しくない点 (X) の色を確認します。または、モデル予測をプロットするときに、正しくない点のみを表示するため、[正] チェック ボックスをクリアします。

  9. 比較のため、別のモデルを学習させます。[中程度の決定木] をクリックしてから [学習] をクリックします。

    [学習] をクリックすると、新しいモデルが [履歴] の一覧に表示されます。

  10. [履歴] の一覧で [中程度の決定木] モデルを確認します。モデル検定スコアは、粗い木のスコアと変わりません。最適なモデルの [精度] スコアの概要がボックスに表示されます。[履歴] の一覧で各モデルをクリックして、結果を表示および比較します。

  11. [中程度の決定木] モデルの散布図を確認します。[中程度の決定木] では、前の [粗い木] と同じ数の点が正しく分類されます。過適合を回避する必要があり、粗い木は適切に機能するので、以後のすべてのモデルで粗い木を基準にします。

  12. [履歴] の一覧で [粗い木] を選択します。モデルを改善するため、別の機能をモデルに含めてみます。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。

    [分類学習器] タブの [特徴量] セクションで [特徴選択] をクリックします。

    予測子から除外するため、[特徴選択] ダイアログ ボックスで [PetalLength][PetalWidth] のチェック ボックスをクリアします。粗い木に基づく新しいドラフト モデルが、2/4 の特徴量という新しい設定でモデルの履歴一覧に表示されます。

    新しい予測子のオプションを使用して新しい決定木モデルに学習をさせるため、[学習] をクリックします。

  13. [履歴] の一覧で 3 番目のモデルを確認します。これも [粗い木] モデルで、4 つの予測子のうち 2 つだけを学習に使用しています。[履歴] の一覧には、除外した予測子の数が表示されます。どの予測子が除外されたかをチェックするには、[履歴] の一覧でモデルをクリックし、[特徴選択] ダイアログ ボックスのチェック ボックスを確認します。萼片の測定値のみが含まれているモデルは、花弁のみのモデルより精度のスコアがはるかに低くなります。

  14. 花弁の測定値のみが含まれている別のモデルを学習させます。[特徴選択] ダイアログ ボックスの選択を変更して [学習] をクリックします。

    花弁の測定値のみを使用して学習させたモデルは、すべての予測子が含まれているモデルと同程度に機能します。すべての測定値を使用した場合でも花弁の測定値のみを使用した場合でも、モデルによる予測に変わりはありません。データの収集が高価または困難な場合、一部の予測子がなくても十分に機能するモデルが好ましい可能性があります。

  15. 幅の測定値のみが含まれているモデルと長さの測定値のみが含まれているモデルについて学習を繰り返します。いくつかのモデルでは、スコアに大きい違いがありません。

  16. 各クラスの性能を調べて、類似したスコアの中から最適なモデルを選択します。すべての予測子が含まれている粗い木を選択します。各クラスにおける予測子の精度を調べるには、[分類学習器] タブの [プロット] セクションで [混同行列] をクリックします。このプロットを使用すると、現在選択している分類器が各クラスでどのように機能したかを理解できます。真のクラスと予測したクラスの結果が含まれている行列が表示されます。

    分類器が十分には機能しなかった領域を探すには、数値が大きく赤で表示されている対角線外のセルを確認します。このような赤いセルでは、真のクラスと予測したクラスが一致していません。データ点は誤分類されています。

    メモ

    検定では結果に無作為性があるので、実際の混同行列の結果はここに示されているものと異なる場合があります。

    この図で、中央の行の 3 番目のセルを確認します。このセルの真のクラスは versicolor ですが、点が virginica に誤分類されています。このモデルでは 3 つが誤分類されたことがセルに示されています (結果は異なる場合があります)。観測値の数ではなく比率を表示するには、[プロット] のコントロールで [真陽性率] を選択します。

    この情報は、目標に最適なモデルを選択するために役立てることができます。このクラスの偽陽性が分類問題にとって非常に重要な場合は、このクラスを最適に予測するモデルを選択します。このクラスの偽陽性があまり重要ではなく、予測子が少ないモデルの方が他のクラスで良好に機能する場合は、全体的な精度の優先度を多少低くするために一部の予測子を除外したモデルを選択し、将来のデータ収集を容易にします。

  17. [履歴] の一覧に含まれている各モデルについて混同行列を比較します。どの予測子が各モデルに含まれているか調べるには、[特徴選択] ダイアログ ボックスを確認します。

  18. 追加または除外する特徴量を調べるには、散布図と平行座標プロットを使用します。[分類学習器] タブの [プロット] セクションで、[平行座標プロット] をクリックします。クラスを最適に分離する特徴は花弁の長さと花弁の幅であることがわかります。

  19. モデルの設定を調べるには、[履歴] の一覧でモデルを選択し、詳細設定を表示します。[モデル タイプ] ギャラリーのオプションは事前設定された開始点であり、さらに設定を変更できます。[分類学習器] タブの [モデル タイプ] セクションで [詳細設定] をクリックします。履歴に含まれている単純な決定木のモデルと中程度の決定木のモデルを比較し、[ツリーの詳細オプション] ダイアログ ボックスで違いを調べます。ツリーの深さは、[最大分割数] の設定により制御されます。

    粗い木のモデルをさらに改善するには、[最大分割数] の設定を変更してから [学習] をクリックして新しいモデルに学習をさせます。

    [現在のモデル] ペインまたは [詳細設定] ダイアログ ボックスで、選択した学習済みモデルの設定を確認します。

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

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

  21. 決定木モデルを可視化するには、次のように入力します。

    view(trainedModel.ClassificationTree,'Mode','graph')

  22. エクスポートした分類器を使用して、新しいデータに対して予測を行うことができます。たとえば、ワークスペースにある fishertable のデータについて予測を行うには、次のように入力します。

    yfit = trainedModel.predictFcn(fishertable)
    出力の yfit には、データ点ごとのクラスの予測が含まれています。

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

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

この例では、フィッシャーによる 1936 個のアヤメのデータを使用します。このアヤメのデータには、3 種の標本について花弁の長さ、花弁の幅、萼片の長さ、萼片の幅という花の測定値が含まれています。予測子の測定値に基づいて種を予測するように分類器を学習させます。

このワークフローを使用すると、分類学習器で学習させることができる他のタイプの分類器を評価および比較できます。

選択したデータセットに対して使用できる事前設定済みの分類器モデルをすべて試すには、次のようにします。

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

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

他の分類器のタイプについては、分類学習器アプリにおける分類モデルの学習を参照してください。

関連するトピック