17 贝叶斯分类之朴素贝叶斯分类器

在上一篇中,我们探讨了贝叶斯分类的基本理论,介绍了贝叶斯定理、先验概率、似然函数以及后验概率的定义和计算方法。今天,我们将进一步深入到具体的分类模型——朴素贝叶斯分类器。这一分类器是概率图模型中特别简单而又强大的模型,广泛应用于文本分类、垃圾邮件检测等问题。

朴素贝叶斯分类器的基础

朴素贝叶斯分类器基于贝叶斯定理,假设特征之间是条件独立的。这一假设简化了计算,使得我们可以使用简单的概率计算来进行分类,其基本公式为:

$$
P(C | X_1, X_2, \ldots, X_n) = \frac{P(C) \cdot P(X_1, X_2, \ldots, X_n | C)}{P(X_1, X_2, \ldots, X_n)}
$$

根据朴素假设,我们可以将条件概率分解为:

$$
P(X_1, X_2, \ldots, X_n | C) = P(X_1 | C) \cdot P(X_2 | C) \cdots P(X_n | C)
$$

因此,我们可以将后验概率转化为:

$$
P(C | X_1, X_2, \ldots, X_n) \propto P(C) \cdot P(X_1 | C) \cdot P(X_2 | C) \cdots P(X_n | C)
$$

在这个公式中,$P(C)$ 是先验概率,$P(X_i | C)$ 是似然概率,而 $P(X_1, X_2, \ldots, X_n)$ 是常量项,通常可以忽略。

例子:文本分类

考虑一个文本分类的例子,我们要分类一组电子邮件为“垃圾邮件”和“非垃圾邮件”。我们可以通过以下步骤实现朴素贝叶斯分类器:

  1. 数据预处理:将邮件拆分为单词并建立词汇表。
  2. 特征提取:计算每个单词在“垃圾邮件”和“非垃圾邮件”中出现的概率。
  3. 建立模型:基于已计算的概率来进行分类。

数据收集与处理

假设我们有以下三封邮件:

  • 邮件1:"免费 赚取 现金"
  • 邮件2:"重要 会议时间"
  • 邮件3:"赚取 免费 现金 机会"

标签:

  • 邮件1 : 垃圾邮件
  • 邮件2 : 非垃圾邮件
  • 邮件3 : 垃圾邮件

构建词汇表:["免费", "赚取", "现金", "重要", "会议", "时间", "机会"]

计算概率

接下来,我们计算每个单词在两类邮件中出现的概率。

  • 先验概率

    • $P(\text{垃圾邮件}) = \frac{2}{3}$
    • $P(\text{非垃圾邮件}) = \frac{1}{3}$
  • 似然概率
    假设我们使用拉普拉斯平滑(避免零概率问题),我们计算每个单词在两类中的条件概率。

以单词 "免费" 为例:

  • 在垃圾邮件中出现:2次
  • 在非垃圾邮件中出现:0次
  • 词汇表大小:7

所以单词 "免费" 的概率为:
$$
P(\text{免费} | \text{垃圾邮件}) = \frac{2 + 1}{4} = \frac{3}{4}
$$
$$
P(\text{免费} | \text{非垃圾邮件}) = \frac{0 + 1}{4} = \frac{1}{4}
$$

同样可以计算其他单词的概率。

实现朴素贝叶斯分类器

我们可以使用Python的sklearn库来实现一个朴素贝叶斯分类器。以下是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline

# 训练集
emails = [
"免费 赚取 现金",
"重要 会议时间",
"赚取 免费 现金 机会"
]
labels = ["垃圾邮件", "非垃圾邮件", "垃圾邮件"]

# 创建模型
model = make_pipeline(CountVectorizer(), MultinomialNB())

# 训练模型
model.fit(emails, labels)

# 测试邮件
test_email = ["重要 现金 机会"]
print(model.predict(test_email)) # 预测结果

总结

在本篇教程中,我们介绍了朴素贝叶斯分类器的基本概念及其工作原理,并通过一个文本分类的例子演示了如何实现这一分类器。在实践中,朴素贝叶斯分类器因其简单高效而被广泛应用。

接下来,我们将探讨如何对构建的模型进行评估与改进,以保证模型的准确性与高效性。

17 贝叶斯分类之朴素贝叶斯分类器

https://zglg.work/bayesian-learning-zero/17/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论