朴素贝叶斯算法

一、贝叶斯算法

朴素贝叶斯算法是一种基于贝叶斯定理的分类算法。在理解朴素贝叶斯算法之前,需要先了解贝叶斯定理。最早出现在英国数学家托马斯·贝叶斯(Thomas Bayes)在 1763 年发表的一篇论文中,该定理实际上是一种用于计算在给定某些前提条件下某个事件发生的概率的公式。它表达了一个事件的概率,基于相关证据的概率。

贝叶斯公式又被称为贝叶斯规则,是概率统计中的应用所观察到的现象对有关概率分布的主观判断(先验概率)进行修正的标准方法。如果你看到一个人总是做一些好事,则那个人多半会是一个好人。这就是说,当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。用数学语言表达就是:支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。贝叶斯公式中涉及到先验概率、后验概率、条件概率等,具体解释如下。

        先验概率:即基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。

        后验概率:则是从条件概率而来,由因推果,是基于当下发生了事件之后计算的概率,依赖于当前发生的条件。

        条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B),读作“在B条件下A的概率”。

        联合概率:表示两个事件共同发生的概率。A与B的联合概率表示为P(AB),或者P(A,B),或者P(A∩B)。

 

B事件发生的前提下,A事件发生的概率: P(A|B) A 和 B的联合概率,B的概率。

 P(A|B) = \frac{P(AB)}{P(B)}

 

贝叶斯公式:贝叶斯公式便是基于条件概率P(B|A)求的联合概率,再求得P(A|B)。设 A 和 B 是两个事件,且 P(B) > 0。则在事件 B 已经发生的条件下事件 A 发生的概率 P(A|B)为:       

P(A|B) = \frac{P(AB)}{P(B)}= \frac{P(B|A)*P(A)}{P(B)}

 其中,P(A)和 P(B)分别是事件 A 和事件 B 发生的概率P(B|A)是在事件 A 发生的条件下事件 B 发生的概率在分类问题中,需要根据已知的特征来预测未知数据的类别。朴素贝叶斯算法就是基于贝叶斯定理来实现分类的。它假设特征之间相互独立,因此被称为“朴素”贝叶斯算法。

 

将A看成“类别”,B看成“属性”,那么贝叶斯公式看成:

P(Category|Feature) = \frac{P(Feature|Category)P(Category)}{P(Feature)}

具体而言,需要先根据训练数据计算出每个类别的先验概率 P(Ci)。然后对于每个特征,计算在给定类别 Ci的条件下该特征的概率 P(Xi|Ci)。最终,对于一个新的数据点,根据贝叶斯定理计算其属于每个类别的后验概率,然后将其分类为后验概率最大的类别。

在朴素贝叶斯算法中,先验概率是指在考虑任何观测数据之前,基于先前已知的信息和经验,对于每个可能事件的概率的估计。通常用 P(C)表示,其中 C 是类别。条件概率是指给定某些已知条件下,某个事件发生的概率。在朴素贝叶斯算法中,它是指在已知一个样本的特征向量的情况下,该样本属于某个类别的概率,通常用 P(X|C)表示,其中 X 表示特征向量,C 是类别。后验概率是指在考虑了新的观测数据后,对于每个可能事件的概率的重新估计。在朴素贝叶斯算法中,它是指在已知一个样本的特征向量后,该样本属于某个类别的概率,通常用 P(C|X)表示,其中 X 表示特征向量,C 是类别。朴素贝叶斯算法的基本思想是根据贝叶斯定理,通过先验概率和条件概率计算后验概率,从而进行分类。具体地,对于一个给定的特征向量 X,朴素贝叶斯算法计算每个类别的后验概率 P(C|X),并将 X 分类为具有最高后验概率的类别。

朴素贝叶斯算法是应用最为广泛的分类算法之一,在垃圾邮件分类等场景展露出了非常优秀的性能。

二、经典分类器算法对比分析 

除朴素贝叶斯算法以外,还有一些其他的经典分类器算法,下面介绍几种常见的分类器算法及其优缺点。

 

1、逻辑回归(Logistic Regression)

逻辑回归是一种广泛应用于分类问题的机器学习算法,它主要是用于建立分类模型,通过学习样本数据的特征来对未知样本进行分类。逻辑回归属于一种广义的线性模型,因此其可以解决二分类问题和多分类问题。它可以通过优化损失函数,寻找最佳的权重参数来训练模型,并能够很好地处理线性可分和线性不可分的数据。此外,逻辑回归还能够生成可解释性强的分类结果,并且在实现上比较简单,计算速度也较快。

但是逻辑回归的缺点也是非常明显的,容易受到特征相关性、噪声和缺失数据的影响;只能处理二分类问题,而对于多分类问题需要进行逐一拆分和处理;对于非线性的决策边界和非凸问题表现较差。此外,逻辑回归分类器对于数据的分布假设为线性分布,因此在数据非线性可分时表现较差。相比逻辑回归,朴素贝叶斯算法具有更好的计算效率和更高的准确率,因为它能够更好地利用文本分类问题中的词频信息。此外,朴素贝叶斯算法的训练和预测过程简单,不需要进行复杂的数值优化,因此更易于实现和部署。


 

2、K近邻算法(K-Nearest Neighbors)

是一种基于实例的学习算法,属于无监督学习中的分类算法。KNN 的基本思想是:如果一个样本在特征空间中的 k 个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别。K 近邻算法的主要优点在于它的简单性和灵活性。K 近邻算法不需要假设数据集的概率分布,也不需要在训练之前进行参数估计,因此它可以适用于各种不同类型的数据,包括非线性数据。K 近邻算法还可以进行增量式的学习,即可以随时添加新的训练样本,而无需重新训练整个模型。此外,K 近邻算法也适用于多分类问题和回归问题。

虽然 K 近邻算法具有简单且灵活的优点,但其也存在较为明显的缺点。需要大量的内存空间存储训练数据,测试时需要计算所有训练数据与测试数据之间的距离,计算量较大,时间复杂度高,特别是当数据量非常大时,算法的效率会受到影响。另外,该算法对于异常数据敏感,因为它只是通过距离来判断数据相似性,而不考虑特征本身的重要程度。此外,在数据维度较高时,由于维度灾难的影响,算法的准确率也会受到影响。


 

3、决策树算法(Decision Tree)

决策树算法是一种基于树结构进行分类和预测的机器学习算法,通过递归地将数据集划分为不同的子集,并在每个子集上进行决策,最终构建出一颗决策树。决策树算法可以应用于分类问题和回归问题,并且具有易于理解、可解释性强、适用于各种类型的数据等优点。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/237972.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Xshell启动远程服务器上的tensorboard:本地浏览器打开

在远程服务器上启动的tensorboard产生的localhost网址用本地浏览器一般不能直接打开,我们需要建立本地PC与远程服务器的通信,将tensorboard的映射端口与本地端口连接起来(参考解决方案)。 一、连接远程服务器设置 二、添加SSH隧道…

C++-详解智能指针

目录 ​编辑 一.什么是智能指针 1.RAII 2.智能智能指针 二.为什么需要智能指针 1.内存泄漏 a. 什么是内存泄漏,内存泄漏的危害 b.内存泄漏分类 c.如何检测内存泄漏 d.如何避免内存泄漏 总结一下: 2.为什么需要智能指针以及智能指针的原理 三.智能指针的使用 1.C…

Django-Redis

NoSQL:(不支持sql语句) Redis MongoDB Hbase hadoop Cassandra hadoop key-value数据库(非关系性数据库) redis优势 性能高,读取速度快,存在内存中 Redis应用场景 用来做缓存 在某些特定场景下替代传统数据库---社交…

msvcp140.dll无法继续执行代码是什么意思?六个解决方法分享

今天我想和大家分享的是如何解决由于缺失msvcp140.dll无法继续执行代码的6个办法。 首先,让我们来了解一下msvcp140.dll文件。msvcp140.dll是微软Visual C 2015运行库的一部分,它包含了许多用于支持各种应用程序的函数和类。当您在计算机上运行某些程序…

JavaScript中的for循环你用对了吗?

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-for循环 目录 循环结构 循环思想(三要素) 实现…

pnpm 安装

npm install pnpm -g 解决方案: 1、使用管理员的身份打开powershell, win x 2、输入 set-executionpolicy remotesigned 后按y,问题得到解决 其他: pnpm 安装完成只有,可设置其镜像 1、查阅当前镜像(源&#xff09…

Facebook公共主页受限、被封?一文教你排雷解决

一、Facebook公共主页是什么? 现在人们的生活已经离不开各种社交媒体,只要有智能手机,或多或少会使用一些社交平台,而Facebook是一个拥有大量用户的社交平台。这对于各种企业而言,也是一个十分优秀的营销平台&#xf…

基于springboot+vue的秒杀商城(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

简述MyBatis、MyBatis-Plus、以及MyBatis-Plus的简单运用

什么是MyBatis MyBatis是一个开源的Java持久层框架,用于简化与关系型数据库的交互。它通过将SQL语句与Java代码进行分离,提供了一种优雅的方式来处理数据库操作。 MyBatis的核心思想是将SQL语句与Java方法进行映射,使得开发人员可以通过配置…

文献速递:(第三部分)— (超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展)

文献速递:(第三部分)— (超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展) Title 题目 A review of synthetic and augmented training data for machine learning in ultrasonic non-destructive e…

C++基础 -25- 动态多态

静态多态在程序编译的时候,确定将要执行的状态。 动态多态在程序运行的时候,才能确定执行的状态。 下面举例实现动态多态 work函数接口通过传参不同做不同的工作 #include "iostream"using namespace std;class person {public:person(){}vi…

零基础自学编程,中文编程工具下载,中文编程构件板之工具条菜单构件简介

一、前言: 零基础自学编程,中文编程工具下载,中文编程工具构件之弹出菜单构件简介 编程系统化教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具,零基础轻…