このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
分類学習器アプリの使用による単純ベイズ分類器の学習
この例では、分類学習器アプリを使用して各種の単純ベイズ分類器を作成および比較する方法と、学習済みのモデルをワークスペースにエクスポートして新しいデータに対する予測を行う方法を示します。
単純ベイズ分類器はベイズの定理を利用しており、各クラス内で予測子が互いに独立していると仮定します。ただし、この分類器は独立性の仮定が有効ではない場合でも十分に機能するようです。分類学習器では、2 つ以上のクラスに対して単純ベイズを使用できます。このアプリでは、ガウス単純ベイズ モデルまたはカーネル単純ベイズ モデルの学習を個別または同時に行うことができます。
次の表は、分類学習器で使用できる単純ベイズ モデルと、予測子を当てはめるために各モデルで使用する確率分布の一覧です。
モデル | 数値予測子 | カテゴリカル予測子 |
---|---|---|
ガウス単純ベイズ | ガウス分布 (正規分布) | 多変量多項分布 |
カーネル単純ベイズ | カーネル分布 カーネル タイプとサポートを指定できます。分類学習器は、基となる関数 fitcnb を使用してカーネルの幅を自動的に決定します。 | 多変量多項分布 |
この例では、フィッシャーのアヤメのデータセットを使用します。このデータセットには、3 種の標本について花の測定値 (花弁の長さ、花弁の幅、がく片の長さ、がく片の幅) が含まれています。予測子の測定値に基づいて種を予測するよう単純ベイズ分類器に学習をさせます。
MATLAB® のコマンド ウィンドウで、フィッシャーのアヤメのデータセットを読み込み、このデータセットの変数を使用して測定予測子 (特徴量) の table を作成します。
fishertable = readtable("fisheriris.csv");
[アプリ] タブをクリックしてから、[アプリ] セクションの右にある矢印をクリックしてアプリ ギャラリーを開きます。[機械学習および深層学習] グループの [分類学習器] をクリックします。
[分類学習器] タブの [ファイル] セクションで、[新規セッション]、[ワークスペースから] を選択します。
[ワークスペースからの新規セッション] ダイアログ ボックスで、[データセット変数] のリストから table
fishertable
を選択します (必要な場合)。ダイアログ ボックスに示されているように、データ型に基づいて応答および予測子変数が選択されます。花弁とがく片の長さおよび幅は予測子、種は分類対象の応答です。この例では、選択を変更しないでください。
既定の検証方式をそのまま使用して続行するため、[セッションの開始] をクリックします。既定の検証オプションは、過適合を防止する交差検証です。
データの散布図が作成されます。
散布図を使用して、どの変数が応答の予測に有用であるかを調べます。[予測子] の [X] および [Y] のリストで異なるオプションを選択して、種と測定値の分布を可視化します。種の色が最も明確に分離されるのはどの変数であるかを調べます。
setosa
種 (青い点) は、4 つの予測子すべてに関して他の 2 つの種から容易に分離されます。がく片の長さと幅をプロットした場合は特に、versicolor
種とvirginica
種はどの予測子の測定値でも接近しており、重なっています。setosa
は、他の 2 つの種よりも予測が容易です。単純ベイズ モデルを作成します。[分類学習器] タブの [モデル] セクションで矢印をクリックしてギャラリーを開きます。[単純ベイズ分類器] グループの [ガウス単純ベイズ] をクリックします。モデルの [概要] タブの [モデルのハイパーパラメーター] セクションにハイパーパラメーターのオプションが含まれていないことに注意してください。
[学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。
メモ
Parallel Computing Toolbox™ がある場合は、[並列の使用] ボタンが既定でオンに切り替わります。[すべてを学習] をクリックして [すべてを学習] または [選択を学習] を選択すると、ワーカーの並列プールが開きます。この間、ソフトウェアの対話的な操作はできません。プールが開いた後、モデルの学習を並列で実行しながらアプリの操作を続けることができます。
Parallel Computing Toolbox がない場合は、[すべてを学習] メニューの [バックグラウンド学習を使用] チェック ボックスが既定でオンになります。オプションを選択してモデルに学習させると、バックグラウンド プールが開きます。プールが開いた後、モデルの学習をバックグラウンドで実行しながらアプリの操作を続けることができます。
ガウス単純ベイズ モデルが作成され、検証の混同行列がプロットされます。
[ガウス単純ベイズ] モデルが [モデル] ペインに表示されます。モデル検証スコアを [精度 (検証)] ボックスで確認します。このスコアは、モデルが適切に機能することを示しています。
[ガウス単純ベイズ] モデルの場合、既定では、数値予測子の分布のモデル化にはガウス分布が、カテゴリカル予測子の分布のモデル化には多変量多項分布 (MVMN) が使用されます。
メモ
検証により、結果に無作為性が導入されます。実際のモデルの検証結果は、この例に示されている結果と異なる場合があります。
学習済みモデルの散布図を確認します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [散布] をクリックします。X は、誤分類された点を示しています。青い点 (
setosa
種) はすべて正しく分類されていますが、他の 2 つの種には誤分類された点があります。[プロット] で [データ] と [モデル予測] を切り替えます。正しくない点 (X) の色を確認します。または、正しくない点のみを表示するため、[正] チェック ボックスをクリアします。比較のため、カーネル単純ベイズ モデルに学習をさせます。[分類学習器] タブの [モデル] ギャラリーで [カーネル単純ベイズ] をクリックします。ドラフトのカーネル単純ベイズ モデルが [モデル] ペインに表示されます。
モデルの [概要] タブの [モデルのハイパーパラメーター] で、[カーネル タイプ] の一覧から
[三角形]
を、[サポート] の一覧から[正]
を選択します。メモ
ハイパーパラメーターのオプションは、連続データのみで使用できます。[カーネル タイプ] にマウス カーソルを移動すると [連続変数に対するカーネル平滑化関数の指定] というツールヒントが、[サポート] にマウス カーソルを移動すると [連続変数に対するカーネル平滑化密度サポートの指定] というツールヒントが表示されます。
[学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択し、新しいモデルに学習させます。
[モデル] ペインに、新しいカーネル単純ベイズ モデルのモデル検証スコアが表示されます。このスコアは、ガウス単純ベイズ モデルのスコアと同じです。最適なモデルの [精度 (検証)] スコアが四角で囲まれて強調表示されます。
[モデル] ペインで各モデルをクリックして、結果を表示および比較します。モデルの結果を確認するには、モデルの [概要] タブを調べます。モデルの [概要] タブには、検証セットに対して計算された [学習結果] のメトリクスが表示されます。
ガウス単純ベイズ モデルとカーネル単純ベイズ モデルの学習を同時に行います。[分類学習器] タブの [モデル] ギャラリーで [すべての単純ベイズ] をクリックします。[学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。
各タイプの単純ベイズ モデルの学習が行われ、最適なモデルの [精度 (検証)] スコアが強調表示されます。最初のモデル (モデル 4.1) の検証の混同行列が表示されます。
[モデル] ペインでモデルをクリックして、結果を表示します。たとえば、モデル 2 を選択します。学習済みモデルの散布図を確認します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [散布] をクリックします。別の予測子のプロットを試します。誤分類された点は X で示されます。
各クラスにおける予測子の精度を調べます。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [混同行列 (検証)] をクリックします。真のクラスと予測したクラスの結果が含まれている行列が表示されます。
[モデル] ペインで他の学習済みモデルをクリックして、結果を比較します。
モデルを改善できるか試すため、モデルの学習時に異なる特徴量を含めます。予測力が低い特徴量を削除するとモデルを改善できるかどうか調べます。
[分類学習器] タブの [オプション] セクションで [特徴選択] をクリックします。
[既定の特徴選択] タブで、さまざまな特徴ランク付けアルゴリズムを選択して最も重要な特徴を特定できます。アプリで特徴ランク付けアルゴリズムを選択すると、特徴の重要度スコアに応じて並べ替えられたプロットが表示されます。スコアが高いほど (
Inf
も含む)、特徴の重要度が高いことを示します。ランク付けされた特徴とそのスコアの表が表示されます。この例では、1 因子 ANOVA を使用して特徴量をランク付けします。[特徴のランク付けアルゴリズム] の [ANOVA] をクリックします。
[特徴選択] で、検証メトリクスのバイアスを回避するために、最も高ランクの特徴を選択する既定のオプションを使用します。4 つの特徴のうちの 2 つをモデルの学習で保持するように指定します。[保存して適用] をクリックします。特徴選択の変更が [モデル] ギャラリーを使用して作成される新しいモデルに適用されます。
数を絞った特徴のセットを使用して新しい単純ベイズ モデルに学習させます。[分類学習器] タブの [モデル] ギャラリーで [すべての単純ベイズ] をクリックします。[学習] セクションで、[すべてを学習] をクリックして [選択を学習] を選択します。
この例では、数を絞った特徴のセットを使用して学習させた 2 つのモデルの方がすべての予測子を使用して学習させたモデルよりも性能が優れています。データの収集が高価または困難な場合、一部の予測子がなくても十分に機能するモデルが好ましい可能性があります。
どの予測子が含まれているかを調べるには、[モデル] ペインでモデルをクリックし、モデルの [概要] タブの展開された [特徴選択] セクションでチェック ボックスに注目します。たとえば、モデル 5.1 には花弁の測定値のみが含まれています。
メモ
交差検証方式を使用する場合は、[最も高ランクの特徴を選択] オプションを使用して特徴選択を行うように選択すると、学習分割ごとに、モデルの学習前にアプリが特徴選択を行います。異なる分割では、最高ランクの特徴として異なる予測子を選択できます。[既定の特徴選択] タブの表には、学習データと検証データで学習させた完全なモデルで使用される予測子のリストが表示されます。
追加または除外する特徴量をさらに調べるには、平行座標プロットを使用します。[分類学習器] タブの [プロットと解釈] セクションで矢印をクリックしてギャラリーを開き、[検証結果] グループの [平行座標] をクリックします。
[モデル] ペインで、[精度 (検証)] スコアが最高であるモデルをクリックします。モデルをさらに改善できるか試すため、ハイパーパラメーターを変更します (可能な場合)。まず、[分類学習器] タブの [モデル] セクションで [複製] をクリックしてモデルを複製します。その後、モデルの [概要] タブでハイパーパラメーターの設定を変更して試します。ハイパーパラメーターのオプションは一部のモデルのみで使用できることを思い出してください。[学習] セクションで [すべてを学習] をクリックして [選択を学習] を選択し、新しいモデルに学習させます。
学習済みのモデルをワークスペースにエクスポートします。[分類学習器] タブの [エクスポート] セクションで [モデルのエクスポート]、[モデルのエクスポート] をクリックします。新しいデータを予測するための分類モデルのエクスポートを参照してください。
この分類器に学習をさせるためのコードを確認します。[エクスポート] セクションで [関数の生成] をクリックします。
このワークフローを使用すると、分類学習器で学習させることができる他のタイプの分類器を評価および比較できます。
選択したデータセットに対して使用できる事前設定済みの最適化不可能な分類器モデルをすべて試すには、次のようにします。
[分類学習器] タブの [モデル] セクションで矢印をクリックしてモデルのギャラリーを開きます。
[開始] グループで [すべて] をクリックします。
[学習] セクションで、[すべてを学習] をクリックして [すべてを学習] を選択します。
他の分類器のタイプの詳細については、分類学習器アプリにおける分類モデルの学習を参照してください。