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

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

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

「分类问题


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

相关文章
|
6月前
|
机器学习/深度学习 Dragonfly 人工智能
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
基于蜻蜓算法优化支持向量机(DA-SVM)的数据多特征分类预测研究(Matlab代码实现)
167 1
|
5月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
477 0
|
4月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
6月前
|
机器学习/深度学习 传感器 数据采集
【23年新算法】基于鱼鹰算法OOA-Transformer-BiLSTM多特征分类预测附Matlab代码 (多输入单输出)(Matlab代码实现)
【23年新算法】基于鱼鹰算法OOA-Transformer-BiLSTM多特征分类预测附Matlab代码 (多输入单输出)(Matlab代码实现)
452 0
|
7月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
7月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
258 0
|
9月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
631 8
|
10月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
408 6
|
11月前
|
机器学习/深度学习 资源调度 算法
基于入侵野草算法的KNN分类优化matlab仿真
本程序基于入侵野草算法(IWO)优化KNN分类器,通过模拟自然界中野草的扩散与竞争过程,寻找最优特征组合和超参数。核心步骤包括初始化、繁殖、变异和选择,以提升KNN分类效果。程序在MATLAB2022A上运行,展示了优化后的分类性能。该方法适用于高维数据和复杂分类任务,显著提高了分类准确性。

热门文章

最新文章