序言
朴素贝叶斯分类器,一族基于贝叶斯定理的算法。尽管对特征独立性有“天真”的假设,但这些分类器因其简单性和高效性而在机器学习中得到广泛应用。这篇文章深入研究了理论、实现和应用,阐明了它们的实际效用,尽管假设过于简单。
朴素贝叶斯分类器
朴素贝叶斯分类器是基于贝叶斯定理的分类算法的集合。它不是一个单一的算法,而是一族算法,所有这些算法都有一个共同的原则,即每一对被分类的特征都是相互独立的。首先,让我们考虑一个数据集。
Naive Bayes分类器是最简单有效的分类算法之一,有助于快速开发具有快速预测功能的机器学习模型。
Naive Bayes算法用于分类问题。它在文本分类中得到了广泛的应用。在文本分类任务中,数据包含高维(因为每个词代表数据中的一个特征)。它用于垃圾邮件过滤,情感检测,评级分类等。使用Naive Bayes的优势在于其速度。对于高维数据,该方法速度快,易于预测。
该模型预测实例属于具有给定特征值集合的类的概率。它是一个概率分类器。这是因为它假设模型中的一个特征独立于另一个特征的存在。换句话说,每个特征对预测都有贡献,彼此之间没有关系。在现实世界中,这个条件很少满足。它在算法中使用贝叶斯定理进行训练和预测。
为什么称为朴素贝叶斯
名称中的“朴素”部分表示朴素贝叶斯分类器所做的简化假设。在给定类标签的情况下,分类器假设用于描述观察的特征是条件独立的。名字中的“贝叶斯”部分指的是18世纪的统计学家和神学家托马斯·贝耶斯(Thomas Bayes),他提出了贝叶斯定理。
考虑一个虚构的天气数据集,它描述了打高尔夫球的天气条件。给定天气条件,每个元组将条件分类为适合(“是”)或不适合(“否”)打高尔夫球。如下表格:
No. | Outlook | Temperature | Humidity | Windy | Play Golf |
---|---|---|---|---|---|
0 | Rainy | Hot | High | False | No |
1 | Rainy | Hot | High | True | No |
2 | Overcast | Hot | High | False | Yes |
3 | Sunny | Mild | High | False | Yes |
4 | Sunny | Cool | Normal | False | Yes |
5 | Sunny | Cool | Normal | True | No |
6 | Overcast | Cool | Normal | True | Yes |
7 | Rainy | Mild | High | False | No |
8 | Rainy | Cool | Normal | False | Yes |
9 | Sunny | Mild | Normal | False | Yes |
10 | Rainy | Mild | Normal | True | Yes |
11 | Overcast | Mild | High | True | Yes |
12 | Overcast | Hot | Normal | False | Yes |
13 | Sunny | Mild | High | True | No |
数据集分为两部分,即特征矩阵还有响应向量。
特征矩阵包含数据集的所有向量(行),其中每个向量包含相关特征值。在上述数据集中,特征为“Outlook”、“Temperature”、“Humidity”和“Windy”。
响应向量包含的值类变量(预测或输出)对于特征矩阵的每一行。在上述数据集中,类变量名称为“Play Golf ”。
朴素贝叶斯假设
基本的朴素贝叶斯假设是每个特征产生:
- 功能独立性:在给定类标签的情况下,数据的特征有条件地彼此独立。
- 连续特征呈正态分布:如果特征是连续的,则假定它在每个类中是正态分布的。
- 离散特征具有多项分布:如果特征是离散的,则假设它在每个类内具有多项分布。
- 功能同样重要:假设所有特征对类标签的预测贡献相等。
- 无缺失数据:数据不应包含任何缺失值。
相对于我们的数据集,这个概念可以理解为:
- 我们假设没有一对特征是相关的。例如,“Hot”的Temperature与Humidity无关,或者“Rainy”的天气对Windy没有影响。因此,假设特征为独立的。
- 其次,每个特征被赋予相同的权重(或重要性)。例如,只知道Temperature和Humidity并不能准确预测结果。没有一个属性是不相关的,并且被认为是有贡献的。同样地到结果。
注:朴素贝叶斯所做的假设在现实世界中通常是不正确的。事实上,独立性假设从来都不是正确的,但在实践中往往很有效。现在,在讨论朴素贝叶斯公式之前,了解贝叶斯定理是很重要的。
贝叶斯定理
-
概念:
- 贝叶斯定理是在已知另一事件发生的概率的情况下,求出该事件发生的概率。
-
公式:
- 贝叶斯定理在数学上表述为以下等式: P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(\text{A}|\text{B})=\frac{P(\text{B}|\text{A})P(\text{A})}{P(\text{B})} P(A∣B)=P(B)P(B∣A)P(A),其中 A \text{A} A和 B \text{B} B是事件,且 P ( B ) ≠ 0 P(\text{B}) \neq 0 P(B)=0。
-
说明:
- 基本上,我们试图找出事件A的概率,假设事件B为真。事件B也称为证据.
- P ( A ) P(\text{A}) P(A)是先验的(先验概率,即在看到证据之前事件的概率)。证据是未知实例的属性值(这里是事件B)。
- P ( B ) P(\text{B}) P(B)是边际概率:证据的概率。
- P ( A ∣ B ) P(\text{A}|\text{B}) P(A∣B)是B的后验概率,即看到证据后的事件概率。
- P ( B ∣ A ) P(\text{B}|\text{A}) P(B∣A)是似然概率,即基于证据的假设成立的可能性。
-
现在,关于我们的数据集,我们可以通过以下方式应用贝叶斯定理:
P ( y ∣ X ) = p ( X ∣ y ) p ( y ) p ( X ) P(y|X)=\frac{p(X|y)p(y)}{p(X)} P(y∣X)=p(X)p(X∣y)p(y)。- 其中, y y y是类变量, X X X是大小为 n n n的相关特征向量,即 X = ( x 1 , x 2 , x 3 , … , x n ) X=(x_1,x_2,x_3,\dots,x_n) X=(x1,x2,x3,…,xn)
- 为了清楚起见,特征向量和相应的类变量的示例可以是:(参考数据集的第一行)
特征向量: X = ( Rainy, Hot, High, False ) X=(\text{Rainy, Hot, High, False}) X=(Rainy, Hot, High, False)
响应向量,即包含的值类变量: y = No y = \text{No} y=No
所以基本上,这里的 P ( y ∣ X ) P(y|X) P(y∣X)意思是,假设天气条件是”多雨“、”温度高“、”湿度高“和”无风“,”不大高尔夫球“的概率。
-
现在,是时候给贝叶斯定理加上一个天真的假设了,那就是,独立在这些特征中。所以现在,我们分开了。证据变成独立的部分。
-
现在,如果任意两个事件A和B是独立的,那么 P ( A , B ) = P ( A ) P ( B ) P(\text{A},\text{B})=P(\text{A})P(\text{B}) P(A,B)=P(A)P(B)。因此,我们得出结论: P ( y ∣ x 1 , … , x n ) = P ( x 1 ∣ y ) P ( x 2 ∣ y ) … P ( x n ∣ y ) P ( y ) P ( x 1 ) P ( x 2 ) … P ( x n ) P(y|x_1,\dots,x_n)=\frac{P(x_1|y) P(x_2|y)\dots P(x_n|y) P(y)}{P(x_1) P(x_2)\dots P(x_n)} P(y∣x1,…,xn)=P(x1)P(x2)…P(xn)P(x1∣y)P(x2∣y)…P(xn∣y)P(y)
-
可以表示为: P ( y ∣ x 1 , … , x n ) = P ( y ) ∏ i = 1 n P ( x i ∣ y ) P ( x 1 ) P ( x 2 ) … P ( x n ) P(y|x_1,\dots,x_n)=\frac{P(y) \prod\limits_{i=1}^{n} P(x_i|y)}{P(x_1) P(x_2)\dots P(x_n)} P(y∣x1,…,xn)=P(x1)P(x2)…P(xn)P(y)i=1∏nP(xi∣y)
-
现在,由于给定输入的分母保持不变,我们可以删除该项:
P ( y ∣ x 1 , … , x n ) ∝ P ( y ) ∏ i = 1 n P ( x i ∣ y ) P(y|x_1,\dots,x_n) \propto P(y) \prod\limits_{i=1}^{n} P(x_i|y) P(y∣x1,…,xn)∝P(y)i=1∏nP(xi∣y) -
现在,我们需要创建一个分类器模型。为此,我们为类变量 y y y的所有可能值找到给定输入集的概率,并选择以最大概率输出。这可以在数学上表示为:
y = arg max y P ( y ) ∏ i = 1 n P ( x i ∣ y ) y=\argmax\limits_{y} P(y)\prod\limits_{i=1}^{n} P(x_i|y) y=yargmaxP(y)i=1∏nP(xi∣y) -
所以,最后,我们的任务是计算 P ( y ) P(y) P(y)和 P ( x i ∣ y ) P(x_i|y) P(xi∣y)。请注意, P ( y ) P(y) P(y)也称为类概率, P ( x i ∣ y ) P(x_i|y) P(xi∣y)称为条件概率。
-
不同的朴素贝叶斯分类器的区别主要:在于它们对 P ( x i ∣ y ) P(x_i|y) P(xi∣y)的分布所做的假设。
-
让我们尝试在天气数据集上手动应用上述公式。为此,我们需要对数据集进行一些预先计算。
-
我们需要找到 P ( x i ∣ y j ) P(x_i|y_j) P(xi∣yj)对于每一个 x i x_i xi在 X \text{X} X中和 y j y_j yj在 Y \text{Y} Y中。所有这些计算都在下表中进行了说明:
-
因此,在上图中,我们计算了 P ( x i ∣ y j ) P(x_i|y_j) P(xi∣yj)对于每一个 x i x_i xi在 X \text{X} X中和 y j y_j yj在 Y \text{Y} Y中。在上图中手动输入 y y y。例如,假设Temperature是Cool,打高尔夫球的概率,即 P ( Temperature = Cool ∣ Play Golf = Yes ) = 3 / 9 P(\text{Temperature = Cool}|\text{Play Golf = Yes})= 3/9 P(Temperature = Cool∣Play Golf = Yes)=3/9。
-
此外,我们还需要找到类概率 P ( y ) P(y) P(y)。例如: P ( Play Golf = Yes ) = 9 / 14 P(\text{Play Golf = Yes}) = 9/14 P(Play Golf = Yes)=9/14。
-
现在,我们已经完成了预先计算,分类器也准备好了!
朴素贝叶斯模型的类型
有三种类型的朴素贝叶斯模型:
- 高斯朴素贝叶斯分类器
在高斯朴素贝叶斯中,假设与每个特征相关联的连续值根据高斯分布来分布。高斯分布也称为正态分布当绘制时,它给出关于特征值的平均值对称的钟形曲线。 - 多项式朴素贝叶斯
特征向量表示由多项分布产生的某些事件的频率。这是通常用于文档分类的事件模型。 - 伯努利朴素贝叶斯
在多变量Bernoulli事件模型中,特征是描述输入的独立布尔值(二进制变量)。与多项式模型一样,该模型在文档分类任务中很流行,其中使用二元术语出现(即,单词是否出现在文档中)特征而不是术语频率(即,文档中单词的频率)。
朴素贝叶斯分类器的优势
- 易于实现且计算效率高。
- 在具有大量特征的情况下有效。
- 即使在训练数据有限的情况下也能表现良好。
- 它在存在分类特征的情况下表现良好。
- 对于数字特征,假设数据来自正态分布。
朴素贝叶斯分类器的缺点
- 假设要素是独立的,这在真实世界的数据中可能并不总是成立。
- 可能会受到不相关属性的影响。
- 可能会将零概率分配给看不见的事件,从而导致泛化能力差。
朴素贝叶斯分类器的应用
- 垃圾邮件过滤:根据特征将电子邮件分类为垃圾邮件或非垃圾邮件。
- 文本分类:用于情感分析、文档分类和主题分类。
- 医学诊断:有助于根据症状预测疾病的可能性。
- 信用评分:为贷款审批评估个人的信誉。
- 天气预报:根据各种因素对天气状况进行分类。
一些值得思考的要点
- 尽管朴素贝叶斯分类器的假设显然过于简单,但它在许多实际情况下都能很好地工作,比如著名的文档分类和垃圾邮件过滤。它们需要少量的训练数据来估计必要的参数。
- 与更复杂的方法相比,朴素贝叶斯学习器和分类器可以非常快。类条件特征分布的解耦意味着每个分布可以被独立地估计为一维分布。这反过来有助于缓解维度灾难所产生的问题。
结论
总之,尽管朴素贝叶斯分类器简化了假设,但在各种应用中证明是有效的,在文档分类和垃圾邮件过滤中表现出显著的性能。它们的效率、速度和处理有限数据的能力使它们在现实世界中很有价值,弥补了它们天真的独立性假设。
关于朴素贝叶斯分类器的常见问题
-
什么是朴素贝叶斯?
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类器。它假设给定数据点的特征是相互独立的,而现实中往往不是这样。然而,尽管有这个简化的假设,朴素贝叶斯已经被证明在广泛的应用中令人惊讶地有效。 -
为什么叫朴素贝叶斯?
朴素贝叶斯被称为“朴素的”,因为它假设数据点的特征是相互独立的。这个假设在现实中通常是不正确的,但它确实使算法更容易计算。 -
贝叶斯分类器的示例是什么?
贝叶斯分类器是一种使用贝叶斯定理来计算给定类对于给定数据点的概率的分类器。朴素贝叶斯是最常见的贝叶斯分类器之一。 -
什么比朴素贝叶斯更好?
在某些情况下,有几种分类器优于朴素贝叶斯。例如,逻辑回归通常比朴素贝叶斯更准确,尤其是当数据点的特征彼此相关时。 -
朴素贝叶斯概率可以大于1吗?
不,事件发生的概率不能大于1。事件发生的概率是一个介于0和1之间的数字,其中0表示该事件不可能发生,1表示该事件一定发生。