Main Content

分類学習器アプリを使用したカーネル近似の分類器の学習

この例では、分類学習器アプリにおいてカーネル近似の分類器を作成および比較する方法と、学習済みのモデルをワークスペースにエクスポートして新しいデータに対する予測を行う方法を示します。カーネル近似の分類器を使用して多数の観測値を含むデータの非線形分類を実行できます。大規模なインメモリ データに対しては、ガウス カーネルによる SVM 分類器に比べ、カーネル分類器の方が学習と予測が高速になる傾向があります。

  1. MATLAB® コマンド ウィンドウで、humanactivity データ セットを読み込み、データ セットにある変数から分類に使用する table を作成します。データ セットには、人間の 5 種類の身体動作 (座る、立つ、歩く、走る、踊る) についての 24,075 個の観測値が含まれています。各観測値には、スマートフォンの加速度センサーによって測定された加速度データから抽出した 60 個の特徴量が含まれています。

    load humanactivity
    Tbl = array2table(feat);
    Tbl.Properties.VariableNames = featlabels';
    activity = categorical(actid,1:5,actnames);
    Tbl.Activity = activity;

    あるいは、humanactivity のデータ セットを読み込み、カテゴリカル activity 応答変数を作成して、featactivity のデータを個別の変数として保持できます。

  2. [アプリ] タブをクリックしてから、右にある [さらに表示] 矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。

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

    Learn tab

  4. [ワークスペースからの新規セッション] ダイアログ ボックスで、[データ セット変数] のリストから table Tbl を選択します。データ型に基づいて応答および予測子変数が選択されていることに注意してください。特に Activity は、唯一のカテゴリカル変数であるため、応答変数として選択されています。この例では、選択を変更しないでください。

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

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

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

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

  7. カーネル近似モデルを選択して作成します。[学習] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。[カーネル近似の分類器] グループで、[すべてのカーネル] をクリックします。

  8. [学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。

    メモ

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

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

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

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

    メモ

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

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

  10. [モデル] ペインで 2 番目のカーネル モデル ([ロジスティック回帰カーネル]) を選択し、検証の混同行列を使用して各クラスにおける予測の精度を調べます。[学習] タブの [プロットと結果] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [混同行列 (検証)] をクリックします。真のクラスと予測したクラスの結果が含まれている行列が表示されます。

  11. 2 つのカーネル モデルの混同行列を左右に並べて比較します。まず、[モデル 1] のプロットと概要のタブを閉じます。[学習] タブの [プロットと結果] セクションで [レイアウト] ボタンをクリックし、[モデルの比較] を選択します。各プロットの右上で [プロット オプションを非表示] ボタン をクリックして、プロットのスペースを大きくします。

    Side-by-side comparison of the validation confusion matrices for the SVM Kernel and Logistic Regression Kernel classifiers

    元のレイアウトに戻すには、[レイアウト] ボタンをクリックし、[単一モデル (既定)] を選択します。

  12. [モデル] ペインで最適なカーネル モデルを選択します (最高の総合スコアは [精度 (検証)] ボックスで強調表示されます)。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。

    まず、モデルを右クリックして [複製] を選択することで、最適なカーネル モデルを複製します。

  13. 次のいずれかの方法で、追加または除外する特徴量を調べます。

    • 平行座標プロットを使用します。[学習] タブの [プロットと結果] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [平行座標] をクリックします。クラスを十分に分離する予測子を保持します。

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

    • 特徴ランク付けアルゴリズムを使用します。[学習] タブの [オプション] セクションで [特徴選択] をクリックします。[既定の特徴選択] タブで、使用する特徴ランク付けアルゴリズムと、最も高ランクの特徴からいくつの特徴を保持するかを指定します。使用する特徴の数は棒グラフで判断できます。

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

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

  15. [モデル] ペインで最適なカーネル モデルを選択します。モデルをさらに改善できるか試すため、ハイパーパラメーターを変更します。まず、モデルを右クリックして [複製] を選択することで、モデルを複製します。その後、モデルの [概要] タブでいくつかのハイパーパラメーターの設定を変更して試します。[学習] セクションで [すべてを学習] をクリックして [選択を学習] を選択し、新しいモデルに学習させます。

    カーネル モデルの設定の詳細については、カーネル近似の分類器を参照してください。

  16. 学習済みのモデルのコンパクトなバージョンをワークスペースにエクスポートできます。[学習] タブで、[エクスポート] をクリックして [モデルのエクスポート] をクリックし、[モデルのエクスポート] を選択します。カーネル近似モデルには学習データが格納されないため、[分類モデルのエクスポート] ダイアログ ボックスで、学習データを含めるチェック ボックスは無効になっています。ダイアログ ボックスで [OK] をクリックすると、既定の変数名がそのまま使用されます。

  17. この分類器に学習をさせるためのコードを確認するため、[エクスポート] セクションで [関数の生成] をクリックします。この分類器の学習に使用されるデータ セットには 2 つを超えるクラスが含まれているため、生成されたコードは関数 fitckernel ではなく関数 fitcecoc を使用します。

ヒント

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

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

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

  2. [開始] グループで [すべて] をクリックします。

    Option selected for training all available classifier types

  3. [学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。

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

関連するトピック