単純ベイズ分類器
単純ベイズ分類器は、予測子が各クラス内で互いに独立しているときに使用するために設計されています。しかし、その独立仮定が有効でない場合にも、実際の場で良好に機能するようです。以下の 2 段階でデータが分類されます。
学習ステップ: 学習データを使用して、与えられたクラスによって予測子が条件付きで独立すると仮定し、確率分布のパラメーターを推定します。
予測ステップ: 未観測のテスト データがある場合に、標本が各クラスに属する事後確率を計算します。その後、最大の事後確率に基づいてテスト データを分類します。
各予測子の 1 次元のクラス条件密度を個別に推定することができるため、クラス条件独立仮定は学習ステップを大きく単純化します。予測子同士のクラス条件の独立は一般的に真ではありませんが、研究によると、この楽観的な仮定が実際には良好に機能することが知られています。この予測子のクラス条件の独立性を仮定することで、単純ベイズ分類器は、他の多くの分類器より少ない学習データを使用して精密な分類に必要なパラメーターを推定できます。これは特に、多くの予測子を含むデータ セットで効率的です。
サポートされている分布
単純ベイズ分類の学習ステップは P(X|Y) の推定に基づきます。これはクラス Y
における予測子の確率または確率密度 X
です。単純ベイズ分類モデル ClassificationNaiveBayes
および学習関数 fitcnb
は、正規 (ガウス) 分布、カーネル分布、多項分布および多変量の多項予測子条件付き分布に対するサポートを提供します。予測子に対する分布を指定する場合、fitcnb
の DistributionNames
名前と値のペアの引数を使用します。分布名に対応する文字ベクトルまたは string スカラーを渡すことによりすべての予測子に対して 1 つの分布タイプを指定するか、長さ D の文字ベクトルの cell 配列または string 配列を渡すことにより各予測子に対して異なる分布を指定することができます。ここで、D は予測子の個数 (つまり、X の列数) です。
正規 (ガウス) 分布
'normal'
分布 ('normal'
を指定) は、各クラスに正規分布が含まれる予測子に適しています。正規分布でモデル化する各予測子に対して、単純ベイズ分類器は、クラス内の学習データの平均と標準偏差を計算することにより、クラスごとに正規分布を推定します。
カーネル分布
'kernel'
分布 ('kernel'
を指定) は、連続分布が含まれる予測子に適しています。この分布は正規分布のような強力な仮定を必要とせず、予測子の分布が非対称的な場合や、複数のピークや最頻値をもつ場合に使用することができます。正規分布に比べ、計算に時間がかかり、より多くのメモリを必要とします。カーネル分布でモデル化する各予測子に対して、単純ベイズ分類器は、そのクラスの学習データに基づき、クラスごとにカーネル密度推定を計算します。既定の設定では、カーネルは正規のカーネルであり、分類器は各クラスと予測子に対して自動的に幅を選択します。各予測子に異なるカーネルを指定し、各予測子または各クラスに異なる幅を指定できるようになります。
多変量多項分布
多変量多項分布 ('mvmn'
を用いて指定) は観測がカテゴリカル予測子に適しています。多変量多項予測子を使用した単純ベイズ分類器の構築を以下に説明します。ステップを説明するにあたり、観測値が 0、1 または 2 とラベル付けされており、予測子は標本が採取されたときの天候を表すような例を考えます。
予測子全体の観測に表れている個別のカテゴリを記録します。たとえば、個別のカテゴリ (または予測子のレベル) は晴れ、雨、雪 および曇りを含みえます。
観測を応答クラスにより分割します。たとえば、0 でラベル付けされた観測を 1 および 2 でラベル付けされた観測から分離し、1 でラベル付けされた観測を 2 でラベル付けされた観測から分離します。
それぞれの応答クラスにカテゴリの相対的頻度および観測数の合計を使用して、多項モデルを当てはめます。たとえば、0 でラベル付けされた観測値では晴天の推定確率が = (ラベル 0 の晴天の観測数)/(ラベル 0 の観測数) であり、他のカテゴリおよび応答ラベルについても同様です。
クラス条件付きの多項確率変数は、多変量多項確率変数を含みます。
多変量多項分布を使用する単純ベイズ分類器の他のプロパティを、ここにいくつか示します。
多変量多項分布を用いてモデル化した各予測子について、単純ベイズ分類器は以下を行います。
各予測子に対する異なる予測子レベルの個別のセットを記録する
各クラスの予測子レベルのセットに対し、確率の個別のセットを計算する。
多変量多項分布としての連続予測子のモデル化がサポートされています。この場合、予測子レベルは測定の個別の発生を表します。つまり、1 つの予測子が多くの予測子レベルをもつ可能性もあります。そうした予測子は離散化することをお勧めします。
"観測値" が固定回数の独立試行による (すべての予測子により表される) さまざまなカテゴリごとの一連の成功である場合、予測子に多項分布が含まれることを指定します。詳細は、多項分布を参照してください。
多項分布
多項分布 ('DistributionNames','mn'
によって指定) は、クラスが与えられていて、各 "観測値" が多項確率変数である場合に適しています。つまり、予測子データ X の観測値 (行) j には D 個のカテゴリがあります。ここで、xjd は 回の独立試行におけるカテゴリ (すなわち予測子) d の成功数です。単純ベイズ分類器の学習ステップの概略を以下に示します。
各クラスでは、以下によってクラスが与えられると、予測子に対する多項分布を近似します。
すべての観測値について、重み付けされたカテゴリ カウントを集計します。さらに、付加的な [1] の平滑化が実装されています。
集計したカテゴリ カウントを使い、各クラス内の D カテゴリ確率を推定します。これらのカテゴリ確率は多項分布の確率パラメーターを生成します。
新たな観測が m のカウントの合計をもつと仮定します。このとき、単純ベイズ分類器は以下を行います。
各多項分布の合計のカウント パラメーターを m に設定
各クラスに対し、推定多項分布を用いてクラスの事後確率を推定
最も高い事後確率に対応するクラスへの観測を予測
いわゆる bag-of-tokens モデルについて考えます。さまざまな種類と複数のトークンと比率を含む 1 つの bag があるとします。各予測子は bag の中の異なる種類のトークンを表し、観測は bag から n 回ごとにトークンを抽出すること (つまり、置き換えること) を表します。また、データはカウントのベクトルを表します。ここで、要素 d はトークン d が出現する回数です。
ある機械学習のアプリケーションで、電子メールのスパム分類器を構築します。ここで、各予測子は単語、文字またはフレーズ (つまりトークン) を表し、観測値は電子メール、データは電子メールのトークンのカウントを表します。ある予測子は感嘆符の数をカウントし、別の予測子は "現金" という単語の出現数をカウントします。さらに別の予測子は、受信者の名前の出現数をカウントします。この単純ベイズ モデルは、トークンの総数 (またはドキュメント全体の長さ) が応答クラスから独立しているという仮定に基づいています。
多項観測を用いる単純ベイズ分類器の他のプロパティには以下が含まれます。
分類は、カテゴリの相対的頻度に基づきます。観測値 j の場合に nj = 0 であると、その観測値では分類が不可能です。
予測子は合計 nj でなければならないため、条件付きで独立していません。
単純ベイズは、nj がクラスに関する情報を提供する場合には適しません。つまり、この分類子は nj がクラスから独立であることを必要とします。
予測子が条件付き多項であると指定する場合、この指定はすべての予測子に適用されます。言い換えれば、
'DistributionNames'
を指定するときには cell 配列に'mn'
を含めることができません。
"予測子" がカテゴリカル、すなわち応答クラス内で多項である場合、予測子が多変量多項であると指定します。詳細は、多変量多項分布を参照してください。
参照
[1] Manning, C. D., P. Raghavan, and M. Schütze. Introduction to Information Retrieval, NY: Cambridge University Press, 2008.