Main Content

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

分類学習器アプリの使用による単純ベイズ分類器の学習

この例では、分類学習器アプリを使用して各種の単純ベイズ分類器を作成および比較する方法と、学習済みのモデルをワークスペースにエクスポートして新しいデータに対する予測を行う方法を示します。

単純ベイズ分類器はベイズの定理を利用しており、各クラス内で予測子が互いに独立していると仮定します。ただし、この分類器は独立性の仮定が有効ではない場合でも十分に機能するようです。分類学習器では、2 つ以上のクラスに対して単純ベイズを使用できます。このアプリでは、ガウス単純ベイズ モデルまたはカーネル単純ベイズ モデルの学習を個別または同時に行うことができます。

次の表は、分類学習器で使用できる単純ベイズ モデルと、予測子をあてはめるために各モデルで使用する確率分布の一覧です。

モデル数値予測子カテゴリカル予測子
ガウス単純ベイズガウス分布 (正規分布)多変量多項分布
カーネル単純ベイズカーネル分布
カーネル タイプとサポートを指定できます。分類学習器は、基となる関数 fitcnb を使用してカーネルの幅を自動的に決定します。
多変量多項分布

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

  1. MATLAB® のコマンド ウィンドウで、フィッシャーのアヤメのデータセットを読み込み、このデータセットの変数を使用して測定予測子 (特徴量) の table を作成します。

    fishertable = readtable('fisheriris.csv');
  2. [アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。

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

    Classification Learner tab

  4. [新規セッション] ダイアログ ボックスで、[データセット変数] のリストからテーブル fishertable を選択します (必要な場合)。

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

    New Session dialog box

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

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

    Scatter plot of the Fisher iris data.

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

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

  7. 単純ベイズ モデルを作成します。[分類学習器] タブの [モデル タイプ] セクションで矢印をクリックしてギャラリーを開きます。[単純ベイズ分類器] グループの [ガウス単純ベイズ] をクリックします。このタイプのモデルには詳細設定がないため [モデル タイプ] セクションの [詳細設定] ボタンが無効になることに注意してください。

    Gaussian Naive Bayes model type selected

    [学習] セクションで [学習] をクリックします。

    ヒント

    Parallel Computing Toolbox™ がある場合、はじめて [学習] をクリックすると (または長時間経過した後で再び [学習] をクリックすると)、[プールを開く] ダイアログ ボックスが開きます。このダイアログ ボックスは、ワーカーの並列プールが開くときに開いたままになります。この間、ソフトウェアの対話的な操作はできません。プールが開いた後で、同時に複数の分類器に学習をさせ、作業を続行することができます。

    ガウス単純ベイズ モデルが作成され、結果がプロットされます。

    [ガウス単純ベイズ] モデルが [履歴] の一覧に表示されます。モデル検定スコアを [精度] ボックスで確認します。このスコアは、モデルが適切に機能することを示しています。

    [ガウス単純ベイズ] モデルの場合、既定では、数値予測子の分布のモデル化にはガウス分布が、カテゴリカル予測子の分布のモデル化には多変量多項分布 (MVMN) が使用されます。

    Scatter plot of the Fisher iris data modeled by a Gaussian Naive Bayes classifier. Correctly classified points are marked with an O. Incorrectly classified points are marked with an X.

    メモ

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

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

  9. 比較のため、カーネル単純ベイズ モデルに学習をさせます。[分類学習器] タブの [モデル タイプ] セクションで、[カーネル単純ベイズ] をクリックします。このタイプのモデルには詳細設定があるため [詳細設定] ボタンが有効になることに注意してください。

    Kernel Naive Bayes model type selected

    ドラフトのカーネル単純ベイズ モデルが [履歴] の一覧に表示されます。

    [モデル タイプ] セクションの [詳細設定] をクリックして、[単純ベイズの詳細オプション] メニューの設定を変更します。[カーネル タイプ] の一覧から [三角形] を、[サポート] の一覧から [正] を選択します。

    Advanced naive Bayes options selected

    メモ

    [単純ベイズの詳細オプション] メニューの設定は、連続データのみで使用できます。[カーネル タイプ] にマウス カーソルを移動すると [連続変数に対するカーネル平滑化関数の指定] というツールヒントが、[サポート] にマウス カーソルを移動すると [連続変数に対するカーネル平滑化密度サポートの指定] というツールヒントが表示されます。

    [学習] セクションの [学習] をクリックして、新しいモデルに学習をさせます。

    Scatter plot of the Fisher iris data modeled by a Kernel Naive Bayes classifier. Correctly classified points are marked with an O. Incorrectly classified points are marked with an X.

    [履歴] の一覧に、新しいカーネル単純ベイズ モデルが新たに表示されます。このモデルの検証スコアは、ガウス単純ベイズ モデルのスコアより優れています。スコアが四角で囲まれ、最適なモデルの [精度] スコアが強調表示されます。

  10. [履歴] の一覧で各モデルをクリックして、結果を表示および比較します。

  11. ガウス単純ベイズ モデルとカーネル単純ベイズ モデルの学習を同時に行います。[分類学習器] タブの [モデル タイプ] セクションで、[すべての単純ベイズ] をクリックします。[詳細設定] ボタンが無効になります。[学習] セクションで [学習] をクリックします。

    All Naive Bayes model type selected

    各タイプの単純ベイズ モデルの学習が行われ、最適なモデルの [精度] スコアが強調表示されます。

    Scatter plot of the Fisher iris data modeled by a Gaussian Naive Bayes classifier. The History panel on the left shows the accuracy for each model.

  12. [履歴] の一覧でモデルをクリックして、結果を表示します。学習済みモデルの散布図を確認し、別の予測子のプロットを試します。誤分類された点は X で示されます。

  13. 各クラスにおける予測子の精度を調べるには、[分類学習器] タブの [プロット] セクションで [混同行列] をクリックします。真のクラスと予測したクラスの結果が含まれている行列が表示されます。

    Confusion matrix plot for the Kernel Naive Bayes model

    メモ

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

  14. [履歴] の一覧で他のモデルをクリックして、結果を比較します。

  15. [履歴] の一覧で、[精度] スコアが最高であるモデルをクリックします。モデルを改善するため、特徴量の修正を試みます。たとえば、予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。

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

    予測子から除外するため、[特徴選択] メニューで [PetalLength][PetalWidth] のチェック ボックスをクリアします。カーネル単純ベイズ モデル ([履歴] の一覧のモデル 3.2) に基づく新しいドラフト モデル (モデル 4) が、新しい設定 (特徴 2/4) で [履歴] の一覧に表示されます。

    Feature Selection menu with SepalLength and SepalWidth selected, and PetalLength and PetalWidth cleared

    [学習] セクションの [学習] をクリックして、新しい予測子のオプションにより新しいカーネル単純ベイズ モデルに学習をさせます。

    [履歴] の一覧に、モデル 4 が新たに表示されます。これもカーネル単純ベイズ モデルですが、学習に使用した予測子は 4 つのうち 2 つだけです。

  16. どの予測子が含まれているかを調べるため、[履歴] の一覧のモデルをクリックしてから [特徴量] セクションの [特徴選択] をクリックして、どのチェック ボックスが選択されるかを確認します。萼片の測定値のみが含まれているモデル (モデル 4) は、すべての予測子が含まれているモデルより [精度] のスコアがはるかに低くなります。

  17. 花弁の測定値のみが含まれている別のカーネル単純ベイズ モデルに学習をさせます。[特徴選択] メニューの選択を変更して [学習] をクリックします。

    Confusion matrix plot for the Kernel Naive Bayes model with two of the four features selected. The History panel on the left shows the accuracy for each model.

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

  18. 追加または除外する特徴量を調べるには、平行座標プロットを使用します。[分類学習器] タブの [プロット] セクションで、[平行座標プロット] をクリックします。

  19. [履歴] の一覧で、[精度] スコアが最高であるモデルをクリックします。モデルをさらに改善するため、単純ベイズの設定を変更します (利用可能な場合)。[分類学習器] タブの [モデル タイプ] セクションで [詳細設定] をクリックします。[詳細設定] ボタンは一部のモデルに対してのみ有効になることを思い出してください。設定を変更してから、[学習] をクリックして新しいモデルに学習をさせます。

  20. 学習済みのモデルをワークスペースにエクスポートします。[分類学習器] タブの [エクスポート] セクションで [モデルのエクスポート]、[モデルのエクスポート] をクリックします。新しいデータを予測するための分類モデルのエクスポートを参照してください。

  21. この分類器に学習をさせるためのコードを確認します。[エクスポート] セクションで [関数の生成] をクリックします。

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

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

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

  2. [開始] グループの [すべて] をクリックしてから、[学習] セクションの [学習] をクリックします。

    Option selected for training all available classifier types

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

関連するトピック