深入理解朴素贝叶斯(Naive Bayes)模型原理

朴素贝叶斯(Naive Bayes)是一种常用的分类算法,基于贝叶斯定理和特征条件独立性假设。该算法在自然语言处理、文本分类、垃圾邮件过滤等领域得到广泛应用。

1. 贝叶斯定理

贝叶斯定理是概率论中的一个重要定理,描述了在已知先验概率的情况下,如何根据新的观察结果来更新对事件的概率估计。对于两个事件 A 和 B,贝叶斯定理表示为:

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

其中,P(A|B) 表示在观察到事件 B 发生的条件下事件 A 发生的概率,P(B|A) 表示在事件 A 发生的条件下事件 B 发生的概率,P(A) 和 P(B) 分别表示事件 A 和事件 B 的先验概率。

2. 朴素贝叶斯算法原理

朴素贝叶斯算法基于贝叶斯定理,假设特征之间相互独立。这是一个较强的假设,因此算法被称为“朴素”。朴素贝叶斯算法通过计算给定特征条件下的类别概率,来预测新样本的类别。

具体来说,假设有一个数据集 D,包含 n 个样本 {x1, x2, …, xn},每个样本包含 m 个特征 {f1, f2, …, fm} 和一个类别标签 {y}。朴素贝叶斯算法的目标是通过计算后验概率 P(y|f1, f2, …, fm) 来预测新样本的类别。根据贝叶斯定理,后验概率表示为:

P(y|f1, f2, ..., fm) = (P(f1, f2, ..., fm|y) * P(y)) / P(f1, f2, ..., fm)

为了简化计算,朴素贝叶斯算法假设特征之间相互独立:

P(f1, f2, ..., fm|y) = P(f1|y) * P(f2|y) * ... * P(fm|y)

根据这个假设,后验概率进一步简化为:

P(y|f1, f2, ..., fm) = (P(y) * Π P(fi|y)) / P(f1, f2, ..., fm)

为了进行分类,我们需要计算每个类别的后验概率,并选择具有最大后验概率的类别作为预测结果。

3. 朴素贝叶斯算法的应用

朴素贝叶斯算法在文本分类任务中广泛应用。可以用于垃圾邮件过滤、情感分析、文档分类等。在这些任务中,文本通常被表示为词袋模型,每个特征表示一个单词,并且特征值表示单词在文本中的出现与否。

4. 朴素贝叶斯算法文本分类应用

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

# 加载数据集
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
data = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)

# 特征提取
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data.data)
y = data.target

# 构建朴素贝叶斯模型
model = MultinomialNB()

# 拟合数据
model.fit(X, y)

# 预测
test_data = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)
X_test = vectorizer.transform(test_data.data)
y_true = test_data.target
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_true, y_pred)
print("Accuracy: {:.2f}%".format(accuracy * 100))

代码中,使用 fetch_20newsgroups 函数加载一个包含多个类别的文本数据集。使用 CountVectorizer 对文本进行特征提取,将文本转换为特征向量表示。接下来,构建一个 MultinomialNB 朴素贝叶斯模型,并使用 fit 方法拟合数据。最后,使用测试集进行预测,并计算准确率。

猜你喜欢

转载自blog.csdn.net/weixin_43749805/article/details/131322751
今日推荐