机器学习中的朴素贝叶斯算法

朴素贝叶斯分类器算法
分类器是一种机器学习算法,它将数据分类到一个或多个“类别”中。电子邮件分类器就是一个常见的例子:它会扫描每封收到的邮件,并为其添加“垃圾邮件”或“非垃圾邮件”的类别标签。
机器学习中的朴素贝叶斯分类器是一种 监督学习 用于分类任务的算法。
下图概述了该流程。
朴素贝叶斯用于解决分类问题。它根据对象的概率进行预测。朴素贝叶斯基于贝叶斯定理,主要用于文本分类。朴素贝叶斯是一种易于实现且训练速度快的概率分类算法。
由于朴素贝叶斯分类器基于贝叶斯定理,因此它也被称为概率分类器。它根据项目的概率进行预测。
为什么叫朴素贝叶斯?
朴素贝叶斯算法的名称由两部分组成:朴素(Naive)和贝叶斯(Bayes)。为什么叫朴素(Naive)呢?因为该算法忽略特征出现的顺序,所以“You are”和“Are you”看起来完全一样。它还假设任何特征都不会影响其他特征。例如,为了识别水果苹果,你需要使用颜色为红色、形状为球形、味道为甜的特征,而该算法会将每个线索都视为独立的证据。
- 朴素贝叶斯分类器假设各个特征彼此独立。由于这在实际数据中很少成立,因此该分类器被称为朴素分类器。
- 该分类算法基于贝叶斯定理,因此被称为朴素贝叶斯分类器。
朴素贝叶斯定理
贝叶斯定理用于在已知先验知识的条件下计算假设的概率。该定理以托马斯·贝叶斯的名字命名。朴素贝叶斯分类器正是基于贝叶斯定理给出的条件概率原理工作。
为了理解贝叶斯定理,我们来看一个简单的朴素贝叶斯分类器示例:抛掷两枚硬币。我们可以通过抛掷两枚硬币得到以下样本空间:{HH, HT, TH, TT}。因此,这些事件的概率分别为:
- 获得两个头 = 1/4
- 至少有一次反面 = 3/4
- 第一枚硬币是反面,第二枚硬币是正面 = 1/2
- 假设第一枚硬币是正面,则掷出两次正面 = 1/2
贝叶斯定理根据已发生事件的概率来计算某一事件发生的概率。贝叶斯定理的公式如下:
P(A|B) = (P(B|A) * P(A)) / P(B)
P(A|B) 表示在事件 B 已经发生的情况下,事件 A 发生的概率。概率 P(B) 不能为零。
- 您需要找到当事件 B(证据)为真时事件 A 的概率。
- P(A) 是事件 A 的先验概率,即在观察到任何证据之前事件发生的概率。这里,事件 B 是一个未知实例的值。
- P(A|B) 是事件 A 的后验概率,即在考虑证据 B 之后 A 发生的概率。
朴素贝叶斯分类器的工作示例
验证公式有效性的最快方法是手动运行它。
让我们以商店为例。ping 为了理解贝叶斯朴素分类器的工作原理,本示例使用了一个包含 30 行的小型样本数据集。
数据集
问题是使用朴素贝叶斯定理预测一个人是否会在特定的日期、折扣和免费送货组合下购买产品。
步骤1) 我们将使用数据集中提到的输入类型(例如天数、折扣和免费送货)为每个属性创建频率表。
设事件“购买”记为“A”,自变量“折扣”、“免运费”和“日期”记为“B”。我们将使用这些事件和变量来应用贝叶斯定理。
步骤2) 现在让我们逐一计算似然表。
例如1:
根据该似然表,我们将计算如下的条件概率。
P(A) = P(No Buy) = 6/30 = 0.2 P(B) = P(Weekday) = 11/30 = 0.37 P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33
并且,利用贝叶斯定理找到 P(A/B),
P(A/B) = P(No Buy / Weekday) = P(Weekday / No Buy) * P(No Buy) / P(Weekday) = (2/6 * 6/30) / (11/30) = 0.1818
类似地,如果 A 为买入,那么
= P(Buy / Weekday) = P(Weekday / Buy) * P(Buy) / P(Weekday) = (9/24 * 24/30) / (11/30) = 0.8181
注意: 由于 P(购买 | 工作日)大于 P(不购买 | 工作日),我们可以得出结论,客户最有可能在工作日购买该产品。
步骤3) 类似地,我们可以根据所有三个变量计算事件发生的可能性。现在我们将使用上述频率表计算所有三个变量的似然表。
例如2:
现在,使用这三个可能性表,我们将根据“天”、“折扣”和“免费送货”的特定组合来计算客户是否有可能进行购买。
这里,让我们结合这些因素:
- 日 = 假日
- 折扣 = 是
- 免费送货 = 是
何时,A = 购买
计算以下日期、折扣和免费送货组合的购买条件概率。
其中 B 为:
- 日 = 假日
- 折扣 = 是
- 免费送货 = 是
并且 A = 购买
因此,
= P(A/B) = P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30) = 0.986
当 A = 不购买时
类似地,计算以下日期、折扣和免费送货组合下的购买条件概率。
其中 B 为:
- 日 = 假日
- 折扣 = 是
- 免费送货 = 是
并且 A = 不买
因此,
= P(A/B) = P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30) = 0.027
步骤4) 因此,
购买概率 = 0.986
不购买的概率 = 0.027
最后,我们有了当天购买的条件概率。现在让我们概括这些概率以获得事件发生的可能性。
- 概率总和 = 0.986 + 0.027 = 1.013
- 购买可能性 = 0.986 / 1.013 = 97.33 %
- 不购买的可能性 = 0.027 / 1.013 = 2.67 %
这两个分数加起来是 1.013 而不是 1,因为独立性假设使得每个估计值都是近似的,所以除以总数会将它们重新缩放为百分比。
请注意,97.33% 大于 2.67%。我们可以得出结论,一般客户会在节假日以折扣和免费送货的方式购买。
朴素贝叶斯模型的类型
朴素贝叶斯分类器有很多种类型。这里我们讨论了多项式、伯努利和高斯朴素贝叶斯分类器。
| 变种 | 特征类型 | 典型用途 |
|---|---|---|
| 多项式 | 字数统计 | 主题和文档分类 |
| 伯努利 | 二进制标志位(存在或不存在) | 短信和垃圾邮件过滤 |
| 高斯 | 连续数值 | 传感器读数和测量 |
1. 多项式朴素贝叶斯
这种朴素贝叶斯模型用于文档分类问题。它使用表示文档中单词频率的特征。分类器考虑单词的出现次数和数量来确定文档属于特定类别(例如体育、政治或技术)的概率。
2.伯努利朴素贝叶斯
这类似于多项式朴素贝叶斯。伯努利朴素贝叶斯分类器用于文档分类任务。但是,它使用布尔预测器。它表示单词是否存在,并且只取值是或否。分类器根据单词是否出现在文本中来计算概率。
3. 高斯朴素贝叶斯
此分类器适用于连续值,但不适用于离散值。此分类器使用 高斯 分布,即均值和方差。
条件概率公式变为,
此 scikit学习 该库新增了两个变体:用于不平衡文本的互补朴素贝叶斯和用于离散类别的分类朴素贝叶斯。
朴素贝叶斯分类器的优点和局限性
机器学习中的朴素贝叶斯算法有各种优点和缺点。
朴素贝叶斯分类器的优点
- 简单高效: 朴素贝叶斯算法简单易训练和实现。由于计算成本低,因此效率高。它可以高效处理大型数据集。
- 快速训练和预测: 由于特征之间的独立性,朴素贝叶斯算法所需的训练数据量较少。一旦模型训练完成,它就能快速进行预测。
- 可扩展性: 朴素贝叶斯可以处理具有大量特征的高维数据集。即使特征数量大于训练示例数量,它也能表现良好。它会随着数据点和预测器的数量而扩展。它既能处理连续数据,也能处理离散数据。
- 对不相关特征的鲁棒性: 它对不相关的特征不敏感。
- 适用于小型训练集: 朴素贝叶斯即使在训练数据有限的情况下也能提供合理的结果。它可以处理训练样本数量较少的情况。
朴素贝叶斯分类器的局限性
朴素贝叶斯 机器学习 假设所有特征都是相互独立的。因此,它无法学习数据中不同特征之间的关系。它将每个特征视为与其他特征没有关系。
第二点需要注意的是:它报告的类别概率校准得不好,因此与预测相关的置信度数值并不是可靠的概率。
为了解决这个问题,你可以使用 决策树随机森林、支持向量机(SVM) 神经网络 等等。这些算法能够学习数据中特征之间复杂的关联和依赖关系,因此可以预测更准确的结果。
朴素贝叶斯分类器的应用
由于该算法快速高效,您可以使用它进行实时预测。
垃圾邮件检测
电子邮件服务 (如 Gmail使用此算法来判断电子邮件是否为垃圾邮件。此算法非常适合垃圾邮件过滤。
情感分析
它可以根据词汇选择、句子结构和上下文等特征将文本分类为正面、负面或中性。它可用于社交媒体监控、客户评论和市场研究。
文件分类
它可以根据文档中特定词语或特征出现的频率或存在程度,将文档分为体育、政治、技术或金融等类别。
推荐系统
它可以分析用户偏好、历史数据和商品特征,以预测用户的兴趣或偏好,从而推荐产品、电影或文章。
这种分类器算法也应用于人脸识别、天气预报、医疗诊断和商店等领域。ping例如,新闻分类等。您可以在其中实现朴素贝叶斯算法。 Python其中 sklearn.naive_bayes 模块提供了上述所有变体。








