sklearn.naive_bayes を(複数の)カテゴリ機能とともに使用するにはどうすればよいですか? [closed] 質問する

sklearn.naive_bayes を(複数の)カテゴリ機能とともに使用するにはどうすればよいですか? [closed] 質問する

クラスがブール値である問題に対する Naive Bayes モデルを学習したいと考えています。一部の機能はブール値ですが、他の機能はカテゴリ型であり、少数の値 (~5) を取ることができます。

もしすべての特徴がブール値であれば、 を使いたいでしょうsklearn.naive_bayes.BernoulliNB。 は明らかですsklearn.naive_bayes.MultinomialNBない私が欲しいもの。

1 つの解決策は、カテゴリ フィーチャをブール フィーチャに分割することです。たとえば、変数「X」が「赤」、「緑」、「青」の値を取る場合、「X は赤」、「X は緑」、「X は青」という 3 つの変数を持つことができます。これは、クラスが与えられた変数の条件付き独立性の仮定に違反するため、まったく不適切であると思われます。

もう 1 つの可能性は、変数を実数値変数としてエンコードすることです。この場合、0.0 は赤、1.0 は緑、2.0 は青を意味します。これも、GaussianNB を使用するには完全に不適切と思われます (明らかな理由により)。

私がやろうとしていることを、sklearn が提供する Naive Bayes モデルにどのように当てはめればよいのかわかりません。

[多項式 NB が私が望むものではないと思う理由を説明するために編集]:

k私の理解では、多項式 NB では、特徴ベクトルは、iid サンプルでトークンが観測された回数のカウントで構成されます。

私の理解では、これは文書の分類に適合するもので、文書の基になるクラスがあり、文書内の各単語はそのクラスに固有のカテゴリ分布から抽出されると想定されています。文書にはkトークンがあり、特徴ベクトルの長さは語彙サイズに等しく、特徴数の合計は になりますk

私の場合、いくつかのベルヌーイ変数と、いくつかのカテゴリ変数があります。ただし、ここでは「カウント」の概念はありません。

例: クラスは数学が好きな人、嫌いな人です。予測子は大学の専攻 (カテゴリ) と大学院に通ったかどうか (ブール値) です。

ここにはカウントがないので、これは多項式に適合しないと思います。

ベストアンサー1

一部の機能はブール型ですが、その他の機能はカテゴリ型であり、少数の値 (約 5) を取ることができます。

これは興味深い質問ですが、実際には 1 つの質問以上のものです。

  1. NB でカテゴリ特徴を処理する方法。
  2. NB で非同次な特徴を処理する方法 (以下で指摘するように、2 つのカテゴリ特徴も非同次です)。
  3. これを で行う方法sklearn

まず、単一カテゴリ特徴NBは特徴が独立していると仮定/単純化しています。これを複数のバイナリ変数に変換するというあなたのアイデアはまさにダミー変数明らかに、これらのダミー変数は独立とは程遠いものです。結果に対してベルヌーイ NB を実行するというアイデアは、暗黙的に独立性を前提としています。実際には、従属変数に直面しても NB が必ずしも機能しないということはわかっていますが、特に多項式 NB が非常に簡単な代替手段であるため、問題を NB にとって最悪の構成に変換しようとする理由はありません。

逆に、ダミー変数を使用して単一のカテゴリ変数を複数列のデータセットに変換した後、多項式NBを使用するとします。多項式NBの理論:

多項式イベント モデルでは、サンプル (特徴ベクトル) は、多項式によって特定のイベントが生成された頻度を表します。ここで、pi はイベント i が発生する確率です。特徴ベクトルはヒストグラムであり、xi {\displaystyle x_{i}} x_{i} は特定のインスタンスでイベント i が観測された回数をカウントします。これは、ドキュメント分類によく使用されるイベント モデルであり、イベントは単一のドキュメント内の単語の出現を表します (bag of words 仮定を参照)。

したがって、ここでは、単一のカテゴリ変数の各インスタンスは「長さ 1 の段落」であり、分布は正確に多項分布です。具体的には、長さ 1 の段落には 1 つの単語しか含まれていないため、各行の 1 つの位置に 1 が含まれ、残りすべてに 0 が含まれます。したがって、これらが頻度になります。

の多項式 NBの観点からはsklearn、データセットが 5 列であるという事実は、独立性の仮定を意味するものではないことに注意してください。


ここで、いくつかの特徴量からなるデータセットがある場合を考えてみましょう。

  1. カテゴリ
  2. ベルヌーイ
  3. 普通

NB を使用するという前提では、これらの変数は独立しています。したがって、次の操作を実行できます。

  1. NB分類器を構築するそれぞれダミー変数と多項式 NB を使用して、カテゴリ データを個別に分析します。
  2. NB分類器を構築する全てsklearnのベルヌーイ NB は、複数の単一特徴ベルヌーイ NB への単なるショートカットであるため、ベルヌーイ データを一度に処理することはできません。
  3. すべての通常の機能については 2 と同じです。

独立性の定義によれば、インスタンスの確率は、これらの分類子によるインスタンスの確率の積になります。

おすすめ記事