機械学習における単純ベイズ アルゴリズム

⚡ スマートサマリー

ナイーブベイズは、ベイズの定理に基づいて構築された教師あり確率分類アルゴリズムであり、すべての特徴が独立して寄与すると仮定しています。その理論は、実践的な作業場です。ping 例えば、3つのモデルバリエーション、その利点、制限事項、および実際の応用例については、以下で説明します。

  • 🔘 定義: 各候補クラスの事後確率を比較することでレコードにラベルを付ける分類器。
  • ☑️ 素朴な仮定: 各特徴量は条件付き独立であるとみなされるが、これはめったに成り立たないにもかかわらず、高い予測精度を示す。
  • ベイズの公式: P(A|B)は、P(B|A)にP(A)を掛け、P(B)で割った値に等しい。
  • 🧪 実例: セール、割引、無料配送が揃うと、購入確率は97.33%になる。
  • 🛠️ 3つのバリエーション: 単語の出現頻度には多項分布、単語の出現頻度にはベルヌーイ分布、連続値にはガウス分布を用いる。
  • ⚠️ 制限: 相関のある特徴は無視されるため、決定木やSVMは依存関係のあるデータにより適している。

機械学習における単純ベイズ アルゴリズム

単純ベイズ分類器アルゴリズム

分類器とは、データを一連の「クラス」のうちの1つ以上に分類する機械学習アルゴリズムのことです。メール分類器はよく知られた例の一つで、受信したすべてのメッセージをスキャンし、「スパム」または「スパムではない」というクラスラベルを付与します。

機械学習におけるナイーブベイズ分類器は 教師あり学習 分類タスクに使用されるアルゴリズム。

下の図はその流れを示しています。

ナイーブベイズ分類器が入力レコードにクラスラベルを割り当てる

Naive Bayes は分類問題を解決するために使用されます。 オブジェクトの確率に基づいて予測します。 Naive Bayes はベイズの定理に基づいており、主にテキスト分類に使用されます。 Naive Bayes は、実装が簡単で、トレーニングが速い確率的分類アルゴリズムです。

ナイーブベイズ分類器はベイズの定理に基づいているため、確率分類器とも呼ばれます。これは、ある項目の確率に基づいて予測を行います。

なぜナイーブベイズと呼ばれるのか?

ナイーブベイズという名前は、ナイーブ(Naive)とベイズ(Bayes)の2つの部分から成り立っています。なぜナイーブ(naive)なのでしょうか?このアルゴリズムは特徴が現れる順序を無視するため、「You are」と「Are you」は同じように見えます。また、どの特徴も他の特徴に影響を与えないと仮定しています。リンゴという果物を認識するために、色は赤、形は球形、味は甘いという特徴を用いますが、このアルゴリズムはこれらの手がかりをそれぞれ独立した証拠として扱います。

  • ナイーブベイズ分類器は、特徴量が互いに独立していると仮定します。しかし、実際のデータではこのような仮定はめったに成り立たないため、この分類器は「ナイーブ」と呼ばれます。
  • この分類アルゴリズムはベイズの定理に基づいているため、ナイーブベイズ分類器として知られています。

ナイーブベイズの定理

ベイズの定理は、事前知識に依存する条件付き確率を用いて仮説の確率を求めるために用いられます。この定理はトーマス・ベイズにちなんで名付けられました。ナイーブベイズ分類器は、ベイズの定理で示される条件付き確率の原理に基づいて動作します。

ベイズの定理を理解するために、2枚のコインを投げるという単純なナイーブベイズ分類器の例を見てみましょう。2枚のコインを投げると、{HH, HT, TH, TT} という標本空間が得られます。したがって、これらの事象の確率は次のようになります。

  • 頭が 1 つになる = 4/XNUMX
  • 少なくとも 3 つの尾 = 4/XNUMX
  • 最初のコインが裏である場合、1 番目のコインは表 = 2/XNUMX
  • 最初のコインが表である場合、表が 1 つ得られる = 2/XNUMX

ベイズの定理は、既に発生した別の事象の確率に基づいて、ある事象が発生する確率を計算するものです。ベイズの定理の公式は次のとおりです。

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B)は、事象Bが既に発生した場合に事象Aが発生する確率です。確率P(B)はゼロであってはなりません。

  • イベント B (証拠) が真である場合に与えられるイベント A の確率を見つける必要があります。
  • P(A)はAの事前確率、つまり、何らかの証拠が観測される前の事象の確率です。ここで、事象Bは未知のインスタンスの値です。
  • P(A|B)は事象Aの事後確率、つまり証拠Bを見た後のAの確率です。

ナイーブベイズ分類器の動作例

その数式が正しく機能するかどうかを確認する最も手っ取り早い方法は、手計算で実行してみることです。

お店を例にとってみましょうping ベイズナイーブ分類器の動作を理解するため。このデータセットには、この例のために30行の小さなサンプルデータセットが含まれています。

データセット

サンプルショップping Day、Discount、Free Delivery、Buy 列を含む 30 行のデータセット

問題は、単純ベイズ定理を使用して、日、割引、無料配達の特定の組み合わせで人が製品を購入するかどうかを予測することです。

各属性値に対する購入と非購入の結果を集計した度数分布表

ステップ1) データセットに記載されている入力タイプ (日数、割引、無料配送など) を使用して、属性ごとに度数表を作成します。

曜日、割引、無料配送の属性に関する度数分布表

事象「購入」を「A」、独立変数である「割引」、「無料配送」、「日数」を「B」とします。これらの事象と変数を用いてベイズの定理を適用します。

ステップ2) 次に、尤度テーブルを XNUMX つずつ計算してみましょう。

「買い」と「買いなし」に対する「日中」属性の尤度表

例1:

この尤度テーブルに基づいて、以下のように条件付き確率を計算します。

P(A) = P(No Buy) = 6/30 = 0.2
P(B) = P(Weekday) = 11/30 = 0.37
P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33

そして、ベイズの定理を使って P(A/B) を求めます。

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

同様に、A が購入の場合、

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

注意: P(購入 | 平日) が P(購入なし | 平日) より大きいため、顧客は平日に製品を購入する可能性が高いと結論付けることができます。

ステップ3) 同様に、XNUMX つの変数すべてに基づいてイベントの発生の可能性を計算できます。 次に、上記の度数表を使用して、XNUMX つの変数すべての尤度表を計算します。

組み合わせ計算で使用される、日数、割引、無料配送に関する尤度表

例2:

ここで、これら XNUMX つの尤度テーブルを使用して、「日」、「割引」、「無料配送」の特定の組み合わせに基づいて顧客が購入する可能性があるかどうかを計算します。

ここでは、次の要素を組み合わせて考えてみましょう。

  • 日=休日
  • 割引 = はい
  • 無料配送 = はい

いつ、A = 購入する

次の曜日、割引、無料配送の組み合わせでの購入の条件付き確率を計算します。

ここで、B は次のとおりです。

  • 日=休日
  • 割引 = はい
  • 無料配送 = はい

そしてA = 購入

したがって、

= P(A/B)
= P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30)
= 0.986

いつ、A = 購入しない

同様に、次の曜日、割引、無料配送の組み合わせでの購入の条件付き確率を計算します。

ここで、B は次のとおりです。

  • 日=休日
  • 割引 = はい
  • 無料配送 = はい

そして A = 購入しない

したがって、

= P(A/B)
= P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30)
= 0.027

ステップ4) したがって、

購入確率 = 0.986

購入されない確率 = 0.027

最後に、この日に購入する条件付き確率があります。 これらの確率を一般化して、イベントの尤度を取得しましょう。

  • 確率の合計 = 0.986 + 0.027 = 1.013
  • 購入の可能性 = 0.986 / 1.013 = 97.33 %
  • 購入されない可能性 = 0.027 / 1.013 = 2.67 %

2つのスコアを合計すると1ではなく1.013になります。これは、独立性の仮定により各推定値が近似値となるため、合計で割ることでパーセンテージに再スケーリングされるためです。

97.33% は 2.67% より大きいことに注意してください。 平均的な顧客は休日に割引と無料配送を利用して購入すると結論付けることができます。

ナイーブベイズモデルの種類

単純ベイズ分類器には多くの種類があります。 ここでは、多項式、ベルヌーイ、ガウス単純ベイズの分類器について説明しました。

バリアント 機能タイプ 典型的な使用
多項式 単語数 トピックと文書の分類
ベルヌーイ バイナリ形式の存在/不在フラグ 短いテキストとスパムフィルタリング
ガウシアン 連続数値 センサーの読み取り値と測定値

1.多項単純ベイズ

このタイプの単純ベイズ モデルは、文書分類問題に使用されます。 これは、文書内の単語の頻度を表す特徴と連携します。 分類子は単語の出現と数を考慮して、ドキュメントがスポーツ、政治、テクノロジーなどの特定のカテゴリに属する​​確率を決定します。

2. ベルヌーイ単純ベイズ

これは、多項単純ベイズに似ています。 Bernoulli Naive Bayes 分類器は、ドキュメント分類タスクに使用されます。 ただし、ブール予測子を使用します。 これは単語が存在するかどうかを表し、Yes または No の値のみを受け取ります。分類子は、単語がテキスト内に出現するかどうかに基づいて確率を計算します。

3.ガウス単純ベイズ

この分類子は連続値の場合に使用されますが、離散値の場合には使用されません。この分類子は、 ガウシアン 分布、つまり平均と分散。

ナイーブベイズで連続的な特徴をモデル化するために使用されるガウスベル曲線

条件付き確率の式は次のように変わります。

平均と分散を用いたガウスナイーブベイズ条件付き確率式

その scikit-学ぶ ライブラリに、不均衡なテキストデータに対応する補完型ナイーブベイズと、離散的なカテゴリに対応するカテゴリカルナイーブベイズの2つのバリアントが追加されました。

単純ベイズ分類器の利点と制限

機械学習におけるナイーブ ベイズ アルゴリズムにはさまざまな利点と欠点があります。

単純ベイズ分類器の利点

  • シンプルさと効率性: Naive Bayes はシンプルで、トレーニングと実装が簡単です。 計算コストが低いため効率的です。 大規模なデータセットを効率的に処理できます。
  • 高速トレーニングと予測: ナイーブベイズは、特徴量間の独立性があるため、それほど多くの学習データを必要としません。モデルが学習されれば、高速な予測が可能になります。
  • スケーラビリティ: Naive Bayes は、多数の特徴を持つ高次元データセットを処理できます。 特徴の数がトレーニング サンプルの数よりも多い場合でも、パフォーマンスは良好です。 データポイントと予測子の数に応じてスケールされます。 連続データと離散データの両方を処理します。
  • 無関係な機能に対する堅牢性: 無関係な機能には敏感ではありません。
  • 小規模なトレーニング セットとうまく連携します。 ナイーブベイズは、限られた訓練データでも妥当な結果を提供できます。訓練データの数が少ない状況にも対応可能です。

単純ベイズ分類器の限界

ナイーブベイズ 機械学習 すべての機能が互いに独立していることを前提としています。 したがって、データ内の異なる特徴間の関係を学習することはできません。 各機能は他の機能と無関係であるかのように処理されます。

2つ目の注意点:報告されるクラス確率は精度が低いため、予測に付随する信頼度は信頼できる確率ではありません。

この問題を解決するには、次を使用できます。 決定木ランダムフォレスト、サポートベクターマシン(SVM)、 ニューラルネットワーク など。これらのアルゴリズムは、データ内の特徴間の複雑な関係性や依存関係を学習する能力を持っています。そのため、より正確な結果を予測することができます。

単純ベイズ分類器の応用

このアルゴリズムは高速かつ効率的であるため、リアルタイムの予測に使用できます。

スパム検出

メールサービス (といった Gmailこのアルゴリズムを使用して、メールがスパムかどうかを判断します。このアルゴリズムはスパムフィルタリングに最適です。

感情分析

単語の選択、文の構造、文脈などの特徴に基づいて、テキストを肯定的、否定的、中立的に分類できます。 ソーシャル メディアの監視、顧客レビュー、市場調査などに応用できます。

文書分類

文書内の特定の単語や特徴の頻度や存在に基づいて、文書をスポーツ、政治、テクノロジー、金融などのカテゴリに分類できます。

推奨システム

ユーザーの好み、履歴データ、アイテムの特徴を分析して、製品、映画、記事を推奨する際のユーザーの興味や好みを予測できます。

この分類アルゴリズムは、顔認識、天気予報、医療診断、ショップなどでも使用されています。pingニュース分類など。ナイーブベイズを実装できます。 Pythonここで、sklearn.naive_bayes モジュールは、上記で説明したすべてのバリアントを提供します。

よくあるご質問

必要なバリアントをインポートします sklearn.naive_bayesデータをtrain_test_splitで分割し、トレーニング行に対してfit()を呼び出し、テスト行に対してpredict()を呼び出します。GaussianNBは連続特徴量に適していますが、MultinomialNBとBernoulliNBはテキストカウントとバイナリワードフラグを扱います。

トレーニングデータにおいて、あるカテゴリがクラスに一度も出現しない場合、そのカテゴリの条件付き確率はゼロとなり、積全体が消滅します。ラプラス平滑化では、すべてのカウントに1を加算することで、ゼロになるものがないようにします。Scikit-learnでは、これをアルファパラメータとして公開しています。

どちらが圧倒的に優れているというわけではありません。ナイーブベイズは学習が速く、必要なデータ量も少なく、高次元のテキストにも対応できます。ロジスティック回帰は相関のある特徴量をモデル化し、より精度の高い確率を生成します。小規模なテキストデータセットではナイーブベイズが優位に立つことが多いですが、データ量が増えるとロジスティック回帰がそれを上回ります。

テストセットを保持し、予測を真のラベルと比較します。 混同行列そして、精度、再現率、F1スコアを算出します。スパムのように、あるクラスがサンプルの大部分を占めるような不均衡なデータでは、精度だけでは誤った判断を下す可能性があります。

テキストを小文字に変換し、句読点を削除し、ストップワードを除去し、必要に応じてトークンの語幹抽出を行い、各ドキュメントをカウントまたはTF-IDFベクトルに変換します。ベルヌーイ分布のバリアントでは、カウントの代わりにバイナリの存在フラグを使用します。トレーニング時と予測時で同じ手順を適用します。

ナイーブベイズは最も単純なベイジアンネットワークで、1つのクラスノードにすべての特徴量が直接接続され、特徴量間にリンクはありません。一般的なベイジアンネットワークでは、依存関係を示すエッジを描画できるため、ナイーブベイズが意図的に無視する相関関係をモデル化できます。

自動化された機械学習ツールは、平滑化値、特徴表現、およびバリアントの選択を探索し、交差検証スコアに基づいて候補をランク付けします。これにより、手作業による試行錯誤のほとんどが不要になります。ただし、どの指標が重要か、そして勝者が妥当な挙動を示すかどうかは、依然としてユーザーが判断する必要があります。

GitHubコパイロット 短いコメントから、インポート、訓練・テスト分割、適合・予測呼び出しといった定型コードを素早く生成します。ただし、スクリプトが選択したバリアントと評価コードは必ず確認してください。もっともらしいスクリプトでも、誤ったモデルを訓練してしまう可能性があるからです。