8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解

2024-04-30 18:44

本文主要是介绍8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解

  • 一·摘要
  • 二·个人简介
  • 三·朴素贝叶斯算法简介
    • 朴素贝叶斯算法概念
      • 贝叶斯方法
      • 朴素贝叶斯算法
      • 贝叶斯公式
  • 四·贝叶斯算法的核心思想:利用贝叶斯定理进行分类
  • 五·优缺点
    • 优点
    • 缺点
  • 六·朴素贝叶斯原理
  • 七·朴素贝叶斯分类器
  • 八·在文本分类上的应用

一·摘要

机器学习中的十大算法之一的朴素贝叶斯(Naive Bayes)算法,是一种基于贝叶斯定理和特征条件独立假设的分类方法。其核心原理在于利用贝叶斯定理计算给定数据样本下各类别的后验概率,并选择具有最高后验概率的类别作为该样本的预测类别。朴素贝叶斯算法假设特征之间是相互独立的,这一假设虽然简化了计算,但也可能影响分类的准确性。由于其简单易懂、学习效率高,朴素贝叶斯算法在实际应用中仍然被广泛使用,特别是在文本分类、垃圾邮件过滤等领域取得了显著的效果。
在这里插入图片描述

二·个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

三·朴素贝叶斯算法简介

朴素贝叶斯算法概念

贝叶斯方法

贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特点是结合先验概率和后验概率,即避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单。

朴素贝叶斯算法

朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。
朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立。也就是说没有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重。虽然这个简化方式在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。

贝叶斯公式

贝叶斯公式: P(A|B) = P(A) * P(B|A) / P(B)

在这里插入图片描述
案例一:
现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,
在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,
问这个红球是来自容器 A 的概率是多少?
事件A:

# X事件为选中了红球
p(X) = 8/20# Y事件代表选中A容器
p(Y) = 1/2# A容器中红球的概率
p(X|Y) = 7/10# 选中一个红球,该球来自A容器的概率为
p(Y|X) = p(X|Y) * p(Y)/p(X)p(Y|X) = 7/10 * 1/2 * 20/8 = 7/8

案例二:
一座别墅在过去的 20 年里一共发生过 2 次被盗事件。
别墅的主人有一条狗,
狗平均每周晚上叫 3 次,
叫在盗贼入侵时狗的概率被估计为 0.9,
问题是:在狗叫的时候发生入侵的概率是多少?

我们假设 
A 事件为狗在晚上叫,
B 为盗贼入侵p(A) = 3/7p(B) = 2/(20*365)p(A|B) = 0.9# 求解的问题:
p(B|A) = p(A|B) * p(B)/p(A)p = 0.9 * (2/(20*365))/(3/7)  = 0.00058

四·贝叶斯算法的核心思想:利用贝叶斯定理进行分类

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

朴素贝叶斯算法的核心思想是通过考虑特征概率来预测分类,即对于给出的待分类样本,求解在此样本出现的条件下各个类别出现的概率,哪个最大,就认为此待分类样本属于哪个类别。

举个例子帮助理解,在挑选葡萄酒时,我们通常也会通过一些感官特征来判断其品质,如颜色、气味、口感等。为了简化问题,我们同只关注其中一个特征——声音,具体来说,就是摇动酒瓶时发出的声音。

根据经验,摇动酒瓶时发出的声音“清脆”可能表明葡萄酒比较年轻,口感可能较为酸涩;而声音“沉闷”则可能意味着葡萄酒已经陈年,口感更加圆润和复杂。当然,这只是一个粗略的判断方法,因为葡萄酒的品质受到多种因素的影响。
在这里插入图片描述

类似地,我们可以使用朴素贝叶斯分类器来构建一个基于声音特征的葡萄酒品质预测模型。在这个模型中,我们会收集大量的葡萄酒样本,记录它们摇动时发出的声音(清脆或沉闷),并标记它们的品质(好或坏)。通过训练这个模型,我们可以得到每个声音特征对应的品质概率。

当面对一瓶未知的葡萄酒时,我们可以通过摇动酒瓶来判断其声音特征,并将这个特征输入到我们的模型中。模型会根据之前学习的概率分布来预测这瓶葡萄酒的品质,输出一个表示好酒或坏酒的概率值。如果“坏酒模型”输出的概率值更大,那么这瓶葡萄酒可能品质不佳;反之,如果“好酒模型”输出的概率值更大,那么这瓶葡萄酒可能品质上乘。

这个模型只是一个简化版的示例,实际上在挑选葡萄酒时,我们会综合考虑更多的特征,如颜色、气味、口感等。此外,朴素贝叶斯分类器也有其局限性,它假设特征之间是相互独立的,这在实际情况中往往不成立。

五·优缺点

优点

模型简单:基于简单的概率模型,易于理解和实现。
分类速度快:主要进行概率计算,适用于大规模数据处理。
对小规模数据友好:不需要大量数据来训练。
适用于多分类:可以轻松处理多类别分类任务。
对缺失数据不敏感:可以较好地处理含有缺失值的数据集。

缺点

特征独立性假设:假设特征之间相互独立,这在现实中可能不成立,影响算法效果。
对输入数据敏感:对数据的表达形式敏感,如连续型数据需要离散化,可能损失信息。
对不平衡数据敏感:可能偏向于多数类,导致对少数类的预测准确率较低。
先验概率计算:样本数量少时,先验概率计算可能不准确。
不适合复杂关系数据:可能无法准确捕捉数据中的复杂关系。

六·朴素贝叶斯原理

朴素贝叶斯算法是一个典型的统计学习方法,主要理论基础就是一个贝叶斯公式,贝叶斯公式的基本定义如下:

在这里插入图片描述

这个公式虽然看上去简单,但它却能总结历史,预知未来

公式的右边是总结历史
公式的左边是预知未来
如果把Y看成类别,X看成特征,P(Yk|X)就是在已知特征X的情况下求Yk类别的概率,而对P(Yk|X)的计算又全部转化到类别Yk的特征分布上来。

举个例子,大学的时候,某男生经常去图书室晚自习,发现他喜欢的那个女生也常去那个自习室,心中窃喜,于是每天买点好吃的在那个自习室蹲点等她来,可是人家女生不一定每天都来,眼看天气渐渐炎热,图书馆又不开空调,如果那个女生没有去自修室,该男生也就不去,每次男生鼓足勇气说:“嘿,你明天还来不?”,“啊,不知道,看情况”。

然后该男生每天就把她去自习室与否以及一些其他情况做一下记录,用Y表示该女生是否去自习室,即Y={去,不去},X是跟去自修室有关联的一系列条件,比如当天上了哪门主课,蹲点统计了一段时间后,该男生打算今天不再蹲点,而是先预测一下她会不会去,现在已经知道了今天上了常微分方程(Y=去|常微分方程)与P(Y=不去|常微分方程),看哪个概率大,如果P(Y=去|常微分方程) >P(Y=不去|常微分方程),那这个男生不管多热都屁颠屁颠去自习室了,否则不就去自习室受罪了。P(Y=去|常微分方程)的计算可以转为计算以前她去的情况下,那天主课是常微分的概率P(常微分方程|Y=去),注意公式右边的分母对每个类别(去/不去)都是一样的,所以计算的时候忽略掉分母,这样虽然得到的概率值已经不再是0~1之间,但是通过比较大小还是能选择类别。

后来他发现还有一些其他条件可以挖,比如当天星期几、当天的天气,以及上一次与她在自修室的气氛,统计了一段时间后,该男子一计算,发现不好算了,因为总结历史的公式:

在这里插入图片描述

这里n=3,x(1)表示主课,x(2)表示天气,x(3)表示星期几,x(4)表示气氛,Y仍然是{去,不去},现在主课有8门,天气有晴、雨、阴三种、气氛有A+,A,B+,B,C五种,那么总共需要估计的参数有8×3×7×5×2=1680个,每天只能收集到一条数据,那么等凑齐1680条数据,大学都毕业了,男生大呼不妙,于是做了一个独立性假设,假设这些影响她去自习室的原因是独立互不相关的,于是:
在这里插入图片描述

有了这个独立假设后,需要估计的参数就变为,(8+3+7+5)×2 = 46个了,而且每天收集的一条数据,可以提供4个参数,这样该男生就预测越来越准了。

七·朴素贝叶斯分类器

讲了上面的小故事,我们来朴素贝叶斯分类器的表示形式:
在这里插入图片描述

当特征为为x时,计算所有类别的条件概率,选取条件概率最大的类别作为待分类的类别。由于上公式的分母对每个类别都是一样的,因此计算时可以不考虑分母,即

在这里插入图片描述
朴素贝叶斯的朴素体现在其对各个条件的独立性假设上,加上独立假设后,大大减少了参数假设空间。

八·在文本分类上的应用

文本分类的应用很多,比如垃圾邮件和垃圾短信的过滤就是一个2分类问题,新闻分类、文本情感分析等都可以看成是文本分类问题,分类问题由两步组成:训练和预测,要建立一个分类模型,至少需要有一个训练数据集。贝叶斯模型可以很自然地应用到文本分类上:现在有一篇文档d(Document),判断它属于哪个类别ck,只需要计算文档d属于哪一个类别的概率最大:
在这里插入图片描述
在分类问题中,我们并不是把所有的特征都用上,对一篇文档d,我们只用其中的部分特征词项t1,t2,…,tnd(nd表示d中的总词条数目),因为很多词项对分类是没有价值的,比如一些停用词“的,是,在”在每个类别中都会出现,这个词项还会模糊分类的决策面,关于特征词的选取,我的这篇文章有介绍。用特征词项表示文档后,计算文档d的类别转化为:
在这里插入图片描述

注意P(Ck|d)只是正比于后面那部分公式,完整的计算还有一个分母,但我们前面讨论了,对每个类别而已分母都是一样的,于是在我们只需要计算分子就能够进行分类了。实际的计算过程中,多个概率值P(tj|ck)的连乘很容易下溢出为0,因此转化为对数计算,连乘就变成了累加:
在这里插入图片描述
我们只需要从训练数据集中,计算 每一个类别的出现概率P(ck) 和 每一个类别中各个特征词项的概率P(tj|ck), 而这些概率值的计算都采用最大似然估计, 说到底就是统计每个词在各个类别中出现的次数和各个类别的文档的数目:
在这里插入图片描述

这篇关于8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949632

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig