机器学习中的朴素贝叶斯算法
朴素贝叶斯分类器算法
分类器是一种机器学习算法,可以将数据归类到一个或多个“类别”中。电子邮件分类器就是一种分类器的例子,它扫描电子邮件以按类别标签进行过滤:垃圾邮件或非垃圾邮件。
机器学习中的朴素贝叶斯分类器是一种用于分类任务的监督学习算法。
朴素贝叶斯用于解决分类问题。它基于对象的概率进行预测。朴素贝叶斯基于贝叶斯定理,主要用于文本分类。朴素贝叶斯是一种概率分类算法,易于实现且训练速度快。
由于朴素贝叶斯分类器基于贝叶斯定理,因此它被称为概率分类器。它根据项目的概率进行预测。
为什么称为朴素贝叶斯?
朴素贝叶斯分类器包含两个词:朴素和贝叶斯。为什么叫朴素?该算法将所有单词句子视为相同。例如,“你是”和“你是”对该算法来说是相同的。它不依赖于特征或特征的出现。如果您想识别水果苹果,则需要颜色红色、形状球形、味道甜才能识别为苹果。这意味着这些特征是相互独立的。
- 朴素贝叶斯分类器假设特征是相互独立的。由于在现实生活中很少可能做到这一点,因此该分类器被称为朴素。
- 这种分类算法基于贝叶斯定理,因此被称为朴素贝叶斯分类器。
朴素贝叶斯定理
贝叶斯定理用于根据依赖于先验知识的条件概率来查找假设的概率。该定理以托马斯·贝叶斯的名字命名。朴素贝叶斯分类器基于条件概率原理工作,如贝叶斯定理所示。
为了理解贝叶斯定理,让我们看一个抛掷两个硬币的简单朴素贝叶斯分类器示例。通过抛掷两个硬币,我们可以得到以下样本空间:{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) 不能为零。
- 您需要找到事件 A 的概率,该概率在事件 B(证据)为真时给出。
- P(A) 是 A 的先验概率(先验,即在证明前观察到的事件的概率)。这里,事件 B 是未知实例的值。
- P(A|B) 是事件 B 的后验概率,即在查看证据后事件的概率。
朴素贝叶斯分类器的实际工作示例
让我们以购物为例来理解贝叶斯朴素分类器的工作原理。在此数据集中,有 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 %
请注意,由于 97.33% 大于 2.67%。我们可以得出结论,平均而言,客户在有折扣和免费送货的节假日期间会进行购买。
朴素贝叶斯模型类型
朴素贝叶斯分类器有很多类型。在此我们讨论了多项式、伯努利和高斯朴素贝叶斯分类器。
1. 多项式朴素贝叶斯
这种朴素贝叶斯模型用于文档分类问题。它处理表示文档中单词频率的特征。分类器考虑单词的出现和计数来确定文档属于特定类别(如体育、政治或技术)的概率。
2. 伯努利朴素贝叶斯
这与多项式朴素贝叶斯类似。伯努利朴素贝叶斯分类器用于文档分类任务。但是,它使用布尔预测器。它表示单词是否存在,并且只取是或否的值。分类器根据单词是否出现在文本中来计算概率。
3. 高斯朴素贝叶斯
该分类器用于连续值而非离散值的情况。该分类器使用 高斯 分布的参数,即均值和方差,来计算概率。
条件概率的公式变为:
朴素贝叶斯分类器的优点和局限性
朴素贝叶斯算法在机器学习中具有各种优点和缺点。
朴素贝叶斯分类器的优点
- 简单高效: 朴素贝叶斯简单易于训练和实现。由于计算成本低,它效率很高。它可以高效地处理大型数据集。
- 快速训练和预测: 由于特征之间的独立性,朴素贝叶斯不需要那么多训练数据。模型训练完成后,它可以快速预测。
- 可扩展性: 朴素贝叶斯可以处理具有大量特征的高维数据集。即使特征数量大于训练样本数量,它也能表现良好。它随着数据点和预测变量的数量而扩展。它同时处理连续和离散数据。
- 对无关特征的稳健性: 它对无关特征不敏感。
- 对小型训练集效果良好: 即使训练数据有限,朴素贝叶斯也能提供合理的结果。它可以处理训练实例数量较少的情况。它不需要太多训练数据。
朴素贝叶斯分类器的局限性
机器学习中的朴素贝叶斯假定所有特征都是相互独立的。因此,它无法学习数据中不同特征之间的关系。它将每个特征视为与其他特征无关。
为了克服这个问题,您可以使用决策树、随机森林、支持向量机 (SVM)、神经网络等。这些算法能够学习数据中特征之间的复杂关系和依赖关系。因此,它们可以提供更准确的结果。
朴素贝叶斯分类器的应用
由于该算法速度快且效率高,因此您可以将其用于实时预测。
垃圾邮件检测
电子邮件服务(如 Gmail)使用此算法来确定电子邮件是否为垃圾邮件。该算法非常适合垃圾邮件过滤。
情感分析
它可以根据单词选择、句子结构和上下文等特征将文本分类为正面、负面或中性。它在社交媒体监控、客户评论和市场研究中有应用。
文档分类
它可以根据文档中特定单词或特征的频率或存在情况,将文档分类到体育、政治、技术或金融等类别中。
推荐系统
它可以分析用户偏好、历史数据和项目特征,以预测用户兴趣或偏好,从而推荐产品、电影或文章。
此分类器算法也用于人脸识别、天气预测、医疗诊断、购物、新闻分类等。您可以在 Python 中实现朴素贝叶斯。有朴素贝叶斯分类器 sklearn,即 sklearn.naive_bayes。它是实现该算法的模块。
结论
机器学习中的朴素贝叶斯算法是主要用于垃圾邮件检测、新闻分类、情感分析、天气预测、购物等的分类器。朴素贝叶斯算法基于贝叶斯定理。这种 算法 简单易实现。由于速度快,我们可以在实时应用程序中使用它。它最大的缺点是它假定特征独立(由于现实生活中特征独立很少可能,因此称为朴素)。它将每个特征视为相等。为了克服这个缺点,您可以使用决策树、随机森林、支持向量机 (SVM) 等其他分类器。