机器学习算法的另一个分支-贝叶斯算法原理(贝叶斯要解决什么问题)

目录

一、贝叶斯简介

二、贝叶斯要解决的问题

三、例子(公式推导)

四、实例

        1. 拼写纠正实例    

        2. 垃圾邮件过滤实例


一、贝叶斯简介

        1. 贝叶斯:英国数学家。1702年出生于伦敦,做过神甫。贝叶斯在数学方面主要研究概率论.对于统计决策函数、统计推断、统计的估算等做出了贡献。

        2. 贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章

        3. 生不逢时,死后他的作品才被世人认可。

二、贝叶斯要解决的问题

        正向概率:假设袋子里有N个白球,M个黑球,伸手去摸一个出来黑球的概率是多大?白球?

        学过统计学的都知道(正向概率):

p(white \;ball \;)=\frac{N}{N+M}\;\;p(black \;ball \;)=\frac{M}{N+M}

        逆向概率:如果我们事先并不知道袋子里的黑白球比例,而是闭着眼睛摸出一个或好几个球,观察这些取出来的球的颜色之后,我们可以就此对袋子里的黑白球的比例做出什么样的推测。

三、例子(公式推导)

        一个学校男生有60%,女生有40%,男生总是穿长裤,女生则一半穿长裤,一半穿长裙。

        正向概率:随机挑选一个学生,他(她)穿长裤的概率和穿长裙的概率是多大?

        逆向概率:迎面走来一条长裤,看不到其他地方,无法确定性别,那么推断出他(她)的概率是多大呢??

        解:假设学校里有U个学生

                穿长裤的(男生):

                        U*p(Boy)*p(Pants|Boy)

                其中:p(Boy)是男生的概率=60%,p(Pants|Boy)是条件概率=100%,所有男生穿长裤。

                穿长裤的女生:

                        U*p(Girl)*p(Pants|Girl)

                求解:穿长裤的人里面有多少男(女)生?

                穿长裤的总数:

                        U*p(Boy)*p(Pants|Boy)+U*p(Girl)*p(Pants|Girl)

               p(Pants|Girl)=U*p(Girl)*p(Pants|Girl)/穿长裤的总数

                p(Girl|Paints)=p(Pants|Girl)=U*p(Girl)*p(Pants|Girl)/U*p(Boy)*p(Pants|Boy)+U*p(Girl)*p(Pants|Girl)

                化简:把U约掉,分母其实就是P(Pants),分子其实就是P(Pants,Girl) 

                用统计学的话说:令随机选择一个女生的事件为A,概率为p(A)     

                                                令随机选择一个穿长裤的人为事件B,概率为p(B)

                        则:

p(A|B) = \frac{p(A)*p(B|A)}{p(B)}

                            这就是贝叶斯公式。

四、实例

        1. 拼写纠正实例    

                我们看到用户输入一个不在词典的单词,那么输入法根据用户习惯还是会给出正确的几个单词,输入法这里做了一个事情:“猜测这个家伙到底真正想要输入的单词是什么呢?”

        解:P(我们猜测他想输入的单词|他实际输入的单词)

                比如输入了一个  tha 正确的可能是the,than等等

                P1(the|tha)         P2(than|tha)   ......对此排序,显示。

                用户实际输入的单词记为:D(D即为观测数据)

                猜测1:p(h1|D),猜测2:p(h2|D),猜测3:p(h3|D).....

                统一为:p(h|D)

p(h|D)=p(h)*p(D|h)/p(D)   

                对于不同的具体猜测h1,h2,h3...p(D)都是一样的,所以在比较p(h1|D),p(h2|D)....我们可以把这个常数忽略掉。

                即:p(h|D)\propto p(h)*p(D|h)

                对于给定的观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,Prior)”和“这个猜测生成我们观测的数据的可能性大小”

               

        结论:传统的机器学习的思想:极大似然函数,参数由数据决定

                    机器学习的另一个分支:贝叶斯公式,关注的先验条件(知识),关注数据对结果的影响。

        对于这个案例来说:p(h)先验概率:the,than就是在用户语料库中,进行词频统计,例如用户采用1000个词,the的概率1%,than的概率:0.1%。

                而p(tha|the)怎么算?这个可以由自己定制规则,the->tha做一次增删改查,than->tha做一次曾删改查,所以概率相同。

                得出p(the|tha)>p(tha|than)

        2. 垃圾邮件过滤实例

                问题:给定一封邮件,判定它是否属于垃圾邮件(类似于手机垃圾短信,系统自动识别放在垃圾短信中)   

                D来表示这封邮件,注意D是由N个单词组成。我们用 h+ 来表示垃圾邮件, h- 表示正常邮件。

        p(h-|D)=p(h-)*p(D|h-)/p(D)

                    p(h+|D)=p(h+)*p(D|h+)/p(D)           

        先验概率:p(h+),p(h-)这两个先验概率都是很好得出来的,只需要计算一个邮件库的垃圾邮件和正常邮件的概率即可。

        D里面含有N个单词d1,d2,d3....,p(D|h+)=p(d1,d2,...,dn|h+),就是说在垃圾邮件中出现根我们目前这封邮件一模一样的概率是多大???

        p(d1,d2,...,dn|h+)扩展为:p(d1|h+)*p(d2|d1,h+)*...*p(dn|d1,d2,...,dn-1,h+) 

          就是说这封邮件和垃圾邮件中的第一单词一样,这封邮件在和垃圾邮件中的第一单词一样的情况下,第二个单词一样的概率....我们发现这样算下去,太麻烦。

        提出朴素贝叶斯的概念:即每个特征之间是相互独立的,互不影响,这是一个强假设。用来化简的,我们想一想,真实的语言文本之间互不影响吗???当然不是,所以这样做并不能提升准确率。

        化简为:p(d1|h+)*p(d2|h+)*...*p(dn|h+)

        对于p(d1|h+)*p(d2|h+)*...*p(dn|h+)还采用在垃圾邮件中的词频统计方法即可。

       

                   

                

                

        

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

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

相关文章

初识C++ · 入门(1)

目录 前言: 1 命名空间 2 输入和输出 3 缺省参数 5 函数重载 前言: C与C语言是有一定交集的,可以理解为本贾尼在使用C语言的时候认为有缺陷,于是加了一些小语法进行改良,后来经过委员会的修改,C98问世…

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域,每个类别大都会达到300个样本。但是在实际公开数据集中,以CWRU数据集为例,每个类别只有24组数据,这明显是不…

CSGO赛事管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 系…

ExpandableNotificationRow的父类layout

ExpandableNotificationRow的父类layout NotificationsQuickSettingsContainer NotificationPanelView NotificationShadeWindowView ExpandableNotificationRow 就是下图的一个 Notification: USB连接 。 何时创建一个ExpandableNotificationRow 并且被添加到Not…

Spring Boot 工程开发常见问题解决方案,日常开发全覆盖

本文是 SpringBoot 开发的干货集中营,涵盖了日常开发中遇到的诸多问题,通篇着重讲解如何快速解决问题,部分重点问题会讲解原理,以及为什么要这样做。便于大家快速处理实践中经常遇到的小问题,既方便自己也方便他人&…

护眼台灯对眼睛有危害吗?多款预防近视的台灯推荐

在日常生活中,灯光对于我们而言,是非常重要的,尤其是在夜晚,不管是学习还是办公都需要合适的光线环境。很多家长为了保护孩子的视力会选择从台灯下手,但又不知道护眼台灯对眼睛有危害吗?今天就来好好的告诉…

【MySQL】数据库--表操作

目录 一、创建表 二、查看表 三、修改表 1. 添加字段--add 2.修改表名--rename to 3.修改列名--change 4.修改字段的数据类型--modify 5.删除字段(列)--drop 四、删除表 一、创建表 create [temporary]table[if not exists]table_name [([colu…

python如何获取word文档的总页数

最近在搞AI. 遇到了一个问题,就是要进行doc文档的解析。并且需要展示每个文档的总页数。 利用AI. 分别尝试了chatGPT, 文心一言, github copilot,Kimi 等工具,给出来的答案都不尽如人意。 给的最多的查询方式就是下面这种。 这个…

【Canvas与艺术】硬朗风格十二棱表表盘

【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>硬朗风格十二棱表表盘</title><style type"text/css…

Qt+OpenGL入门教程(三)——绘制三角形

通过前两篇文章的学习&#xff0c;我想大家应该有了基本的理解&#xff0c;我们接下来实操一下。 创建Qt OpenGL窗口 QOpenGLWidget QGLWidget是传统QtOpenGL模块的一部分&#xff0c;与其他QGL类一样&#xff0c;应该在新的应用程序中避免使用。相反&#xff0c;从Qt5.4开始…

新手如何用Postman做接口自动化测试?

1、什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来&#xff0c;本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已…

【检索增强】Retrieval-Augmented Generation for Large Language Models:A Survey

本文简介 1、对最先进水平RAG进行了全面和系统的回顾&#xff0c;通过包括朴素RAG、高级RAG和模块化RAG在内的范式描述了它的演变。这篇综述的背景下&#xff0c;更广泛的范围内的法学硕士研究RAG的景观。 2、确定并讨论了RAG过程中不可或缺的核心技术&#xff0c;特别关注“…

深入Facebook的世界:探索数字化社交的无限可能性

引言 随着数字化时代的到来&#xff0c;社交媒体平台已经成为了人们日常生活中不可或缺的一部分&#xff0c;而其中最为突出的代表之一便是Facebook。作为全球最大的社交媒体平台之一&#xff0c;Facebook不仅仅是一个社交网络&#xff0c;更是一个数字化社交的生态系统&#…

机器人机械手加装SycoTec 4060 ER-S电主轴高精密铣削加工

随着科技的不断发展&#xff0c;机器人技术正逐渐渗透到各个领域&#xff0c;展现出前所未有的潜力和应用价值。作为机器人技术的核心组成部分之一&#xff0c;机器人机械手以其高精度、高效率和高稳定性的优势&#xff0c;在机械加工、装配、检测等领域中发挥着举足轻重的作用…

Python学习:lambda(匿名函数)、装饰器、数据结构

Python Lambda匿名函数 Lambda函数&#xff08;或称为匿名函数&#xff09;是Python中的一种特殊函数&#xff0c;它可以用一行代码来创建简单的函数。Lambda函数通常用于需要一个函数作为输入的函数&#xff08;比如map()&#xff0c;filter()&#xff0c;sort()等&#xff0…

C++ 多线程和互斥锁(一文搞定)

实验 简介&#xff1a;我们启动并行启动两个线程&#xff0c;但设置一个全局互斥锁&#xff0c;在两个线程中等待并占用互斥锁&#xff0c;然后输出日志。 代码 #include <iostream> #include <thread> /* C 多线程库 */ #include <mutex> …

基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)

基于Hive的天气情况大数据分析系统&#xff08;通过hive进行大数据分析将分析的数据通过sqoop导入到mysql&#xff0c;通过Django基于mysql的数据做可视化&#xff09; Hive介绍&#xff1a; Hive是建立在Hadoop之上的数据仓库基础架构&#xff0c;它提供了类似于SQL的语言&…

2015年认证杯SPSSPRO杯数学建模A题(第二阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现&#xff1a; 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途&#xff0c;结绳更是必不可少的技能之一。针对不同用途&#xff0c;有多种绳结的编制方法。最简单的绳结&#xff0c;有时称…

机器学习和深度学习的简单对比

如图1-2所示&#xff0c;深度学习&#xff08;DeepLearning&#xff0c;DL&#xff09;属于机器学习的子类。它的灵感来源于人类大脑的工作方式&#xff0c;这是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并非是一个全新的概念&#xff0c;可理解为包含多…

实战 | 微调训练TrOCR识别弯曲文本

导 读 本文主要介绍如何通过微调训练TrOCR实现弯曲文本识别。 背景介绍 TrOCR&#xff08;基于 Transformer 的光学字符识别&#xff09;模型是性能最佳的 OCR 模型之一。在我们之前的文章中&#xff0c;我们分析了它们在单行打印和手写文本上的表现。 TrOCR—基于Transforme…