朴素贝叶斯分类器算法

2025年03月17日 | 阅读 9 分钟
  • 朴素贝叶斯算法是一种监督学习算法,它基于贝叶斯定理,并用于解决分类问题。
  • 它主要用于文本分类,其中包含高维度的训练数据集。
  • 朴素贝叶斯分类器是最简单且最有效的分类算法之一,它有助于构建能够快速预测的机器学习模型。
  • 它是一种概率分类器,这意味着它基于对象的概率进行预测。.
  • 朴素贝叶斯算法的一些流行示例包括垃圾邮件过滤、情感分析和文章分类

为什么称为朴素贝叶斯?

朴素贝叶斯算法由“朴素”和“贝叶斯”两个词组成,可以解释为:

  • 朴素 (Naïve):之所以称为朴素,是因为它假设某个特征的出现与否与其他特征的出现与否是独立的。例如,如果根据颜色、形状和味道来识别水果,那么红色、球形、甜的水果就被识别为苹果。因此,每个特征独立地有助于识别出它是苹果,而无需相互依赖。
  • 贝叶斯 (Bayes):之所以称为贝叶斯,是因为它依赖于贝叶斯定理的原理。

贝叶斯定理

  • 贝叶斯定理也称为贝叶斯规则贝叶斯定律,用于在先验知识的基础上确定假设的概率。它依赖于条件概率。
  • 贝叶斯定理的公式如下:
Naïve Bayes Classifier Algorithm

其中,

P(A|B) 是后验概率:在观察到事件 B 的情况下,假设 A 为真的概率。

P(B|A) 是似然概率:在假设 A 为真的情况下,证据 B 出现的概率。

P(A) 是先验概率:在观察到证据之前,假设 A 为真的概率。

P(B) 是边缘概率:证据 B 出现的概率。

朴素贝叶斯分类器的工作原理

可以通过下面的例子来理解朴素贝叶斯分类器的工作原理。

假设我们有一个关于天气状况以及对应的目标变量“是否玩耍”的数据集。因此,使用此数据集,我们需要决定在特定日期是否应该根据天气状况玩耍。要解决此问题,我们需要遵循以下步骤:

  1. 将给定数据集转换为频率表。
  2. 通过找到给定特征的概率来生成似然表。
  3. 现在,使用贝叶斯定理计算后验概率。

问题:如果天气是晴朗的,那么玩家应该玩耍还是不玩耍?

解决方案:要解决此问题,首先考虑以下数据集。

OutlookPlay
0下雨是的
1晴朗是的
2阴天是的
3阴天是的
4晴朗不能
5下雨是的
6晴朗是的
7阴天是的
8下雨不能
9晴朗不能
10晴朗是的
11下雨不能
12阴天是的
13阴天是的

天气状况的频率表

天气是的不能
阴天50
下雨22
晴朗32
总计105

天气状况的似然表

天气不能是的
阴天055/14= 0.35
下雨224/14=0.29
晴朗235/14=0.35
全部4/14=0.2910/14=0.71

应用贝叶斯定理

P(是|晴朗)= P(晴朗|是)*P(是)/P(晴朗)

P(晴朗|是)= 3/10= 0.3

P(晴朗)= 0.35

P(是)=0.71

所以 P(是|晴朗) = 0.3*0.71/0.35= 0.60

P(否|晴朗)= P(晴朗|否)*P(否)/P(晴朗)

P(晴朗|否)= 2/4=0.5

P(否)= 0.29

P(晴朗)= 0.35

所以 P(否|晴朗)= 0.5*0.29/0.35 = 0.41

因此,从上面的计算可以看出,P(是|晴朗) > P(否|晴朗)

因此,在晴天,玩家可以玩游戏。

朴素贝叶斯分类器的优点

  • 朴素贝叶斯是用于预测数据集类的快速简单的机器学习算法之一。
  • 它可用于二分类和多分类。
  • 与其它算法相比,它在多分类预测方面表现更好。
  • 它是文本分类问题最受欢迎的选择。

朴素贝叶斯分类器的缺点

  • 朴素贝叶斯假设所有特征都是独立或不相关的,因此它无法学习特征之间的关系。

朴素贝叶斯分类器的应用

  • 它用于信用评分
  • 它用于医疗数据分类
  • 由于朴素贝叶斯分类器是急切学习者,因此可用于实时预测
  • 它用于文本分类,如垃圾邮件过滤情感分析

朴素贝叶斯模型的类型

朴素贝叶斯模型有三种类型,如下所示:

  • 高斯 (Gaussian):高斯模型假设特征遵循正态分布。这意味着如果预测变量取连续值而不是离散值,则模型假定这些值是从高斯分布中抽取的。
  • 多项式 (Multinomial):当数据呈多项式分布时,使用多项式朴素贝叶斯分类器。它主要用于文档分类问题,即某个文档属于哪个类别,例如体育、政治、教育等。
    该分类器使用单词的频率作为预测变量。
  • 伯努利 (Bernoulli):伯努利分类器的工作原理与多项式分类器类似,但预测变量是独立的布尔变量。例如,一个特定的词是否在一个文档中出现。该模型在文档分类任务中也很受欢迎。

朴素贝叶斯算法的 Python 实现

现在我们将使用 Python 实现朴素贝叶斯算法。为此,我们将使用“user_data数据集,该数据集已在我们的其他分类模型中使用过。因此,我们可以轻松地将朴素贝叶斯模型与其他模型进行比较。

实现步骤

  • 数据预处理步骤
  • 将朴素贝叶斯拟合到训练集
  • 预测测试结果
  • 测试结果的准确性(创建混淆矩阵)
  • 可视化测试集结果。

1) 数据预处理步骤

在此步骤中,我们将预处理/准备数据,以便在代码中高效地使用它。这与我们在数据预处理中所做的类似。代码如下:

在上面的代码中,我们使用“dataset = pd.read_csv('user_data.csv')”将数据集加载到我们的程序中。加载的数据集被分成训练集和测试集,然后我们对特征变量进行了缩放。

数据集的输出如下:

Naïve Bayes Classifier Algorithm 1

2) 将朴素贝叶斯拟合到训练集

在预处理步骤之后,现在我们将朴素贝叶斯模型拟合到训练集。以下是代码:

在上面的代码中,我们使用了GaussianNB 分类器将其拟合到训练数据集。我们也可以根据需要使用其他分类器。

输出

Out[6]: GaussianNB(priors=None, var_smoothing=1e-09)

3) 预测测试集结果

现在我们将预测测试集结果。为此,我们将创建一个新的预测变量 y_pred,并使用 predict 函数进行预测。

输出

Naïve Bayes Classifier Algorithm 2

上面的输出显示了预测向量 y_pred 和真实向量 y_test 的结果。我们可以看到一些预测与真实值不同,这些是错误的预测。

4) 创建混淆矩阵

现在我们将使用混淆矩阵检查朴素贝叶斯分类器的准确性。以下是代码:

输出

Naïve Bayes Classifier Algorithm 3

如上方的混淆矩阵输出所示,有 7+3= 10 个错误预测,以及 65+25=90 个正确预测。

5) 可视化训练集结果

接下来,我们将使用朴素贝叶斯分类器可视化训练集结果。以下是代码:

输出

Naïve Bayes Classifier Algorithm 4

在上面的输出中,我们可以看到朴素贝叶斯分类器已经用一条精细的边界分隔了数据点。由于我们在代码中使用了GaussianNB 分类器,因此这是一条高斯曲线。

6) 可视化测试集结果

输出

Naïve Bayes Classifier Algorithm 5

上面的输出是测试集数据的最终输出。正如我们所见,分类器创建了一条高斯曲线来划分“已购买”和“未购买”变量。有一些错误的预测,我们在混淆矩阵中计算过。但它仍然是一个相当不错的分类器。


关于朴素贝叶斯分类器算法的单项选择题练习

1. 朴素贝叶斯分类器做出了以下哪项假设?

  1. 所有特征都相互独立。
  2. 所有特征都相互依赖。
  3. 仅当特征具有高斯分布时,特征才相互独立。
  4. 仅当特征具有高斯分布时,特征才相互依赖。

答案

a) 所有特征都相互独立。

说明

朴素贝叶斯分类器假定给定类别标签的所有特征都是相互独立的,这就是为什么它被称为“朴素”的原因。


2. 陈述 (A):朴素贝叶斯分类器假定特征是相互独立的。

原因 (R):朴素贝叶斯分类器应用贝叶斯定理,并具有特征之间强烈的独立性假设。

选项

  1. A 和 R 都正确,并且 R 是 A 的正确解释。
  2. A 和 R 都正确,但 R 不是 A 的正确解释。
  3. A 为真,但 R 为假。
  4. A 为假,但 R 为真。

答案

a) A 和 R 都正确,并且 R 是 A 的正确解释。

说明

朴素贝叶斯分类器基于贝叶斯定理,并假定某个特征在某个类别中的出现与其他任何特征的出现都是独立的。这种强烈的假设简化了计算,也是该分类器名称中包含“朴素”的原因。


3. 在使用朴素贝叶斯进行文本分类时,拉普拉斯平滑的目的是什么?

  1. 处理文本中的缺失值。
  2. 防止未见过的单词出现零概率。
  3. 提高分类器的计算效率。
  4. 对文本中的单词概率进行归一化。

答案

b) 防止未见过的单词出现零概率。

说明

拉普拉斯平滑用于避免在训练数据集中未出现的单词出现零概率。


4. 以下哪种朴素贝叶斯分类器最适合文本分类任务?

  1. 高斯朴素贝叶斯。
  2. 多项式朴素贝叶斯。
  3. 伯努利朴素贝叶斯。
  4. 补全朴素贝叶斯。

答案

b) 多项式朴素贝叶斯。

说明

多项式朴素贝叶斯常用于文本分类,其中特征通常是单词频率。


5. 匹配下列

  1. 高斯朴素贝叶斯
  2. 多项式朴素贝叶斯
  3. 伯努利朴素贝叶斯
  1. 用于二元/布尔特征
  2. 用于连续特征
  3. 用于文本分类中的单词计数等离散特征

选项

  1. A-2, B-3, C-1
  2. A-1, B-2, C-3
  3. A-3, B-1, C-2
  4. A-2, B-1, C-3

答案

a) A-2, B-3, C-1

说明

  • 高斯朴素贝叶斯 (A-2):用于连续特征,假定特征遵循正态分布。
  • 多项式朴素贝叶斯 (B-3):用于文本分类中的单词计数等离散特征。
  • 伯努利朴素贝叶斯 (C-1):用于二元/布尔特征。

下一主题分类与回归