Main Content

分類学習器アプリを使用したサポート ベクター マシンの学習

この例では、2 つのクラスが含まれている ionosphere データセットを使用して分類学習器アプリでサポート ベクター マシン (SVM) 分類器を構築する方法を示します。分類学習器では、2 つ以上のクラスがあるサポート ベクター マシン (SVM) を使用できます。SVM では、あるクラスのすべてのデータ点を別のクラスのデータ点から分離する最適な超平面を探索することによりデータを分類します。ionosphere のデータでは、良好なレーダー反射を表す g、不良なレーダー反射を表す b という 2 つのレベルがあるカテゴリカル変数が応答変数です。

  1. MATLAB®ionosphere データセットを読み込み、このデータセットに含まれている変数の一部を分類に使用するように定義します。

    load ionosphere
    ionosphere = array2table(X);
    ionosphere.Group = Y;

    あるいは、ionosphere のデータセットを読み込み、XY のデータを個別の変数として保持することができます。

  2. [アプリ] タブの [機械学習および深層学習] グループで [分類学習器] をクリックします。

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

    Classification Learner tab

    [ワークスペースからの新規セッション] ダイアログ ボックスで、[データセット変数] のリストから table ionosphere を選択します。データ型に基づいて応答および予測子変数が選択されていることを確認します。応答変数 Group には、2 つのレベルがあります。他の変数はすべて予測子です。

    あるいは、予測子データ X と応答変数 Y を 2 つの個別の変数として保持している場合は、最初に [データセット変数] のリストから行列 X を選択できます。その後、[応答][ワークスペースから] オプション ボタンをクリックし、リストから Y を選択します。Y 変数は、Group 変数と同じです。

  4. [セッションの開始] をクリックします。

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

  5. 散布図を使用して、どの変数が応答の予測に有用であるかを可視化します。X 軸と Y 軸の制御で他の変数を選択します。クラスが最も明確に分離されるのはどの変数であるかを調べます。

  6. SVM モデルの選択肢に学習させるため、[分類学習器] タブの [モデル] セクションで下矢印をクリックして分類器のリストを展開してから [サポート ベクター マシン][すべての SVM] をクリックします。次に、[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。

    メモ

    • Parallel Computing Toolbox™ がある場合は、[並列の使用] ボタンが既定でオンに切り替わります。[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択すると、ワーカーの並列プールが開きます。この間、ソフトウェアの対話的な操作はできません。プールが開いた後、モデルの学習を並列で実行しながらアプリの操作を続けることができます。

    • Parallel Computing Toolbox がない場合は、[すべてを学習] メニューの [バックグラウンド学習を使用] チェック ボックスが既定でオンになります。クリックしてモデルに学習させると、バックグラウンド プールが開きます。プールが開いた後、モデルの学習をバックグラウンドで実行しながらアプリの操作を続けることができます。

    分類学習器で、ギャラリーの SVM オプションごとに 1 つと既定の複雑な木のモデルの学習が行われます。[モデル] ペインで、最適なモデルの [精度 (検証)] のスコアが四角で囲まれて強調表示されます。また、最初の SVM モデル ([線形 SVM]) の検証の混同行列も表示されます。

    Validation confusion matrix of the ionosphere data modeled by an SVM classifier. Blue values indicate correct classifications, and red values indicate incorrect classifications.

    メモ

    検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。

  7. モデルの結果を確認するには、[モデル] ペインでモデルを選択し、[概要] タブを調べます。モデルの [概要] タブには、検証セットに対して計算された [学習結果] のメトリクスが表示されます。

  8. 選択したモデルについて、各クラスにおける予測の精度を調べます。[分類学習器] タブの [プロット] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [混同行列 (検証)] をクリックします。真のクラスと予測したクラスの結果が含まれている行列が表示されます。

  9. 残りの各モデルについて、[モデル] ペインでモデルを選択して検証の混同行列を開き、それらのモデルの結果を比較します。

  10. [モデル] ペインで最適なモデルを選択します (最高のスコアがボックスで強調表示されます)。モデルを改善するため、異なる特徴量をモデルに含めます。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。

    最初に最適なモデルを複製します。[分類学習器] タブの [モデル] セクションで [複製] をクリックします。

  11. 追加または除外する特徴量を調べるには、平行座標プロットを使用します。[分類学習器] タブの [プロット] セクションで矢印をクリックしてギャラリーを開きます。次に [検証結果] グループの [平行座標] をクリックします。クラスを十分に分離する予測子を保持します。

    学習時に使用する予測子はモデルの [概要] タブで指定できます。[特徴選択] をクリックしてセクションを展開し、モデルから削除する予測子を指定します。

  12. あるいは、特徴ランク付けアルゴリズムを使用して、モデルの学習時にどの特徴を使用するかを決めることができます。[分類学習器] タブの [オプション] セクションで [特徴選択] をクリックします。[既定の特徴選択] タブで、使用する特徴ランク付けアルゴリズムを指定します。最も高ランクの特徴からいくつの特徴を保持するかを指定します。使用する特徴の数は棒グラフを使用して判断できます。

    [保存して適用] をクリックして変更を保存します。新しい特徴選択は [モデル] ペインの既存のドラフト モデルに適用されるほか、[分類学習器] タブの [モデル] セクションのギャラリーを使用して作成する新しいドラフト モデルに適用されます。

  13. モデルに学習させます。[分類学習器] タブの [学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択し、新しいオプションを使用してモデルに学習させます。[モデル] ペインで各分類器の結果を比較します。

  14. [モデル] ペインで最適なモデルを選択します。モデルをさらに改善できるか試すため、ハイパーパラメーターを変更してみます。まず、[モデル] セクションで [複製] ボタンを使用してモデルを複製します。その後、モデルの [概要] タブでハイパーパラメーターの設定を変更して試します。[学習] セクションで [すべてを学習] をクリックして [選択を学習] を選択し、新しいモデルに学習させます。設定についての詳細は、サポート ベクター マシンを参照してください。

  15. 学習済みのモデルの完全なバージョンまたはコンパクトなバージョンをワークスペースにエクスポートできます。[分類学習器] タブの [エクスポート] セクションで、[モデルのエクスポート] をクリックして、[モデルのエクスポート] または [コンパクト モデルのエクスポート] のどちらかを選択します。新しいデータを予測するための分類モデルのエクスポートを参照してください。

  16. この分類器に学習をさせるためのコードを確認するため、[関数の生成] をクリックします。SVM モデルについては、予測用の C コードの生成を参照してください。

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

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

  1. [分類学習器] タブの [モデル] セクションで矢印をクリックして分類モデルのギャラリーを開きます。

  2. [開始] グループで [すべて] をクリックします。次に、[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。

    Option selected for training all available classifier types

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

関連するトピック