Naive Bayes(ナイーブベイズ)は、機械学習における確率的分類器の一つで、ベイズの定理に基づいています。以下にナイーブベイズの主要な特徴と概念をまとめます:
基本概念
- ベイズの定理:
ナイーブベイズの基礎となる数式です。 $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ ここで、A はクラス、B は特徴を表します。 ここで:
- $P(A|B)$ は、Bが与えられた時のAの条件付き確率(事後確率)
- $P(B|A)$ は、Aが与えられた時のBの条件付き確率(尤度)
- $P(A)$ はAの事前確率
- $P(B)$ はBの確率(証拠)
ナイーブベイズの文脈では:
- A はクラス(分類したいカテゴリ)
- B は特徴(観測されたデータ)
を表します。この公式を使用して、与えられた特徴Bに対して、最も確率の高いクラスAを予測します。ナイーブベイズの「ナイーブ」な仮定は、各特徴が互いに独立していると仮定することです。これにより、複数の特徴がある場合の計算が簡略化されます。
- 「ナイーブ」の意味:
特徴間の独立性を仮定しています。この仮定により計算が簡略化されますが、現実世界では必ずしも成り立たない場合があります。 - 確率的モデル:
各クラスの確率を計算し、最も確率の高いクラスを予測結果とします。
主な種類
- ガウシアンナイーブベイズ:
連続値の特徴に対して使用され、正規分布を仮定します。 - 多項式ナイーブベイズ:
離散値の特徴に対して使用され、多項分布を仮定します。テキスト分類でよく使われます。 - ベルヌーイナイーブベイズ:
二値特徴(0または1)に対して使用され、ベルヌーイ分布を仮定します。
利点
- 実装が簡単で計算効率が良い
- 少量のトレーニングデータでも良好な性能を発揮する
- 高次元の入力に対しても効果的
欠点
- 特徴間の独立性の仮定が現実世界では成り立たないことが多い
- 数値予測には不向き
応用例
- スパムメール分類
- 感情分析
- 文書カテゴリ分類
- 医療診断
実装例 (Python/scikit-learn)
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# データの準備
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# モデルの作成と学習
nb_model = GaussianNB()
nb_model.fit(X_train, y_train)
# 予測
y_pred = nb_model.predict(X_test)
# 精度の評価
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
ナイーブベイズは、その単純さと効率性から、特にテキスト分類タスクにおいて広く使用されている手法です。