机器学习十大经典算法之朴素贝叶斯分类

简介: 机器学习十大经典算法之朴素贝叶斯分类

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而「朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法」

「分类问题


image.png

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(「特征集合」),其中每一个元素是一个待分类项,f叫做分类器。「分类算法的任务就是构造分类器f。」

下面以一个实例来讲解:

「朴素贝叶斯分类」


那么既然是朴素贝叶斯「分类算法」,它的核心算法是下面这个贝叶斯公式:

52eb72a4b8291b79b8dc294f8df4ef0d.png

也可以换成如下表达式:

4ae0f55d1e2c8fe0e38d14b1a716f386.png

所以我们最终只要求出p(类别|特征)就可以。

「例题分析」


给定数据如下:

4932c7bf26a6a23e40f93a05a673eb91.png

如上表所示,假设一对男女朋友,男生想跟女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,「转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率」,假设结果是嫁的概率大,那就选嫁,反之就选择不嫁!

由上面的朴素贝叶斯公式公式可知:

934d75a9e95c68f53df9f5b7790d4861.png

要求出p(嫁|(不帅、性格不好、身高矮、不上进),这是比较难的,但是通过朴素贝叶斯公式可以转化为简单好求的三个量,即p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)。后面解释为什么只要求出这三个量就行。

「那么这三个量是如何求的?」

因为我们要求的公式如下:

934d75a9e95c68f53df9f5b7790d4861.png

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可。

「p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别计算出后面几个概率,也就得到p(不帅、性格不好、身高矮、不上进|嫁) 的概率!」

「要使上面的等式成立,需要各个特征互相独立。朴素贝叶斯分类有朴素一词的来源,就是假设各个特征之间相互独立,那么这个等式就成立了!」

把上面公式变形得到:

5976d1b09d63f9461695be65486ec771.png

下面分别进行统计计算(「在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可」)。

首先我们整理训练数据中,嫁的样本数如下:

f75292d6596e82ba37aacc347cf8c797.png

「则 p(嫁) = 6/12(总样本数) = 1/2」

06b9ba384ff14c6baffba18c4f7e96f0.png

「则p(不帅|嫁) = 3/6 = 1/2」

9be550b41a0db0b102f53cff89040a78.png

「则p(性格不好|嫁)= 1/6」

70893cbea7b0b17c4e63b44003cbed0b.png

「则p(不上进|嫁) = 1/6」

47231fa3b81af6f38b8de2d0d032623e.png

「不帅统计如上红色所示,占4个,那么p(不帅) = 4/12 = 1/3」

93d43a85250985943460a1d19018bd85.png

性格不好统计如上红色所示,那么p(性格不好) = 4/12 = 1/3

3c25128c3b73150a3b2f4f646cf51f5a.png

身高矮统计如上红色所示,那么p(身高矮) = 7/12

bb283b095738c4fb6817b8ba379a34ed.png

不上进统计如上红色所示,那么p(不上进) = 4/12 = 1/3

「到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,」

5976d1b09d63f9461695be65486ec771.png

= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)

「下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,公式如下:」

4e2d0bdd4e86545858f1cfba99991cdb.png

最终算得:

p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)

「很显然(1/6*1/2*1*1/2) > (1/2*1/6*1/6*1/6*1/2)」

「于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)」

「所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!」

算法流程


87b7e6da8ad237047524fedf1df056a7.png

实际应用方式:

  • 若任务对预测速度要求较高,则对给定的训练集,可将朴素贝叶斯分类器涉及的所有概率估值事先计算好存储起来,这样在进行预测时只需要 “查表” 即可进行判别;
  • 若任务数据更替频繁,则可采用 “懒惰学习” (lazy learning) 方式,先不进行任何训练,待收到预测请求时再根据当前数据集进行概率估值;
  • 若数据不断增加,则可在现有估值的基础上,仅对新增样本的属性值所涉及的概率估值进行计数修正即可实现增量学习。

朴素贝叶斯分类算法优缺点


优点:

1)朴素贝叶斯模型有稳定的分类效率。
2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

4)对输入数据的表达形式很敏感。


朴素贝叶斯分类算法实现


https://github.com/Asia-Lee/Naive_Bayes

参考文献


李航博士《统计学习方法》

知乎专栏:https://zhuanlan.zhihu.com/p/26262151

目录
打赏
0
0
0
0
6
分享
相关文章
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
30 6
利用SVM(支持向量机)分类算法对鸢尾花数据集进行分类
本文介绍了如何使用支持向量机(SVM)算法对鸢尾花数据集进行分类。作者通过Python的sklearn库加载数据,并利用pandas、matplotlib等工具进行数据分析和可视化。
223 70
基于入侵野草算法的KNN分类优化matlab仿真
本程序基于入侵野草算法(IWO)优化KNN分类器,通过模拟自然界中野草的扩散与竞争过程,寻找最优特征组合和超参数。核心步骤包括初始化、繁殖、变异和选择,以提升KNN分类效果。程序在MATLAB2022A上运行,展示了优化后的分类性能。该方法适用于高维数据和复杂分类任务,显著提高了分类准确性。
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
75 14
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
256 6
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
529 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
4月前
|
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
135 2

热门文章

最新文章