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

目录

一、贝叶斯简介

二、贝叶斯要解决的问题

三、例子(公式推导)

四、实例

        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://xiahunao.cn/news/2905995.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

使用unplugin-auto-import页面不引入api飘红

解决方案:. tsconfig.json文件夹加上 {"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"module": "ESNext","lib": ["ES2020", "DOM", &q…

【2024系统架构设计】案例分析- 4 嵌入式

目录 一 基础知识 二 真题 一 基础知识 1 基本概念 ◆系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。或者,可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

Discuz采集发布插件

Discuz(简称DZ)是一款知名的开源论坛系统,广泛应用于各类网站社区。对于许多站长来说,保持论坛内容的更新是一项挑战,特别是在内容量庞大的情况下。为了解决这个问题,有一类特殊的插件是用于在Discuz论坛中…

论文阅读-Policy Optimization for Continuous Reinforcement Learning

摘要 我们研究了连续时间和空间环境下的强化学习( RL ),其目标是一个具有折扣的无限时域,其动力学由一个随机微分方程驱动。基于连续RL方法的最新进展,我们提出了占用时间(专门针对一个折现目标)的概念,并展示了如何有效地利用它…

使用mysql官网软件包安装mysql

确定你的操作系统,我的是Centos myqsl 所有安装包的地址:https://repo.mysql.com/yum/ 如果你是使用rpm安装你可以到对应的版本里面找到对应的包。 mysql 发行包的地址:http://repo.mysql.com/ 在这里你可以找到对应的发布包安装。 这里使用y…

Windows下安装使用Squirrel

引言 SQuirrel SQL Client是一个用Java写的数据库客户端,用JDBC统一数据库访问接口以后,可以通过一个统一的用户界面来操作MySQL PostgreSQL MSSQL Oracle等等任何支持JDBC访问的数据库。使用起来非常方便。而且,SQuirrel SQL Client还是一个典型的Swing程序。 如果您的工作…

git:git rm --cached和git rm -f和git restore --staged的区别(附带详细步骤测试)和git diff比较本地分支和远程分支的区别(细分到文件/文件)

git rm --cached和git rm -f和git restore --staged的区别 当试图删除一个已经git add在暂存区的文件,我们使用 git rm --cached:从暂存区中移除,但保留在工作区中,且工作区中的文件内容在执行命令前需要还原到最后一次git add的…

统信 UOS V20 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本,演示 统信 UOS V20 一键安装 Oracle 11GR2(231017)单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:…

100 个 Kotlin 面试问题及答案(其二)

尤其是在Android开发中,Kotlin已经成为一种流行的编程语言。为了帮助您在 Kotlin 面试中取得成功,我们为您简化了 100 个最常见的面试问题。本指南涵盖了广泛的主题,包括基本语言概念和高级功能。每个问题都附有简单的答案和实际示例&#xf…

Webpack常见插件和模式

目录 目录 目录认识 PluginCleanWebpackPluginHtmlWebpackPlugin自定义模版 DefinePlugin的介绍 ( 持续更新 )Mode 配置 认识 Plugin Loader是用于特定的模块类型进行转换; Plugin可以用于执行更加广泛的任务,比如打包优化、资源管理、环境变量注入等 …

Voodoo中国区刘毅:全球爆款休闲游戏的创意选品与研发发行 | TopOn观察

10月28日,由TopOn联合罗斯基主办的“游戏赛道新机会”主题沙龙在成都举办。活动邀请了多位国内外知名公司及游戏爆款产品的负责人分享,分别从各自的方向及经验出发,以数据、案例、产品分析、行业趋势等多个维度,为行业从业者带来独…

DataX-Oracle新增writeMode支持update

目录 前言 第一步下载源码 第二步修改源码 1、Oraclewriter 2、WriterUtil 2.1、修改getWriteTemplate方法 2.2、新增onMergeIntoDoString与getStrings方法 3、CommonRdbmsWriter 3.1、修改startWriteWithConnection 3.2、修改doBatchInsert 3.3、修改fillPreparedStatem…

QT6实现音频输出方法

一.QT6音频调用及与QT5的区别 1.音频输入 QAudioSource代替QAudioInput类 QAudioSource类提供了一个接口&#xff0c;用于从音频输入设备接收音频数据。 Header: #include <QAudioSource> qmake: QT multimedia 2.音频输出 QAudioSink代替QAudioOutput类 QAudioSi…

硬件10、从网站获取封装

百度搜索IC封装网或者网址https://www.iclib.com/ 搜索想要的器件&#xff0c;直接下载他的原理图库和封装库

Spring Cloud+Spring Alibaba笔记

Spring CloudSpring Alibaba 文章目录 Spring CloudSpring AlibabaNacos服务发现配置中心 OpenFeign超时机制开启httpclient5重试机制开启日志 SeataSentinel流量控制熔断降级热点控制规则持久化集成 OpenFeign集成 Gateway MicrometerZipKinGateway路由断言过滤器 Nacos 服务…

【YOLOv5改进系列(6)】高效涨点----使用DAMO-YOLO中的Efficient RepGFPN模块替换yolov5中的Neck部分

文章目录 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ 添加yolov5_GFPN.yaml文件二、2️⃣添加extra_modules.py代码三、3️⃣yolo.py文件添加内容3.1 &#x1f393; 添加CSPStage模块 四、4️⃣实验结果4.1 &#x1f393; 使用yolov5s.pt训练的结果对比4.2 ✨ 使用…

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记并附练习代码 ipynb文件)

小土堆PyTorch入门教程笔记 最近在观看PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】顺便做点笔记&#xff0c;方便回看&#xff0c;同时也希望记录的笔记能够帮助到更多在入门的小伙伴~ 【注】仅记录个人觉得重要的知识&#xff0c…

Java的静态代理与jdk动态代理

代理 我们经常利用代理进行解耦以及控制对实际对象的访问等工作。例如&#xff0c;我们可以通过代理对方法的调用进行更精细的控制&#xff08;例如加上日志、权限控制等&#xff09;&#xff0c;而无需修改实际对象的代码。代理的作用是无侵入式的给代码增加功能。有些事情是…

sql——对于行列转换相关的操作

目录 一、lead、lag 函数 二、wm_concat 函数 三、pivot 函数 四、判断函数 遇到需要进行行列转换的数据处理需求&#xff0c;以 oracle 自带的表作为例子复习一下&#xff1a; 一、lead、lag 函数 需要行列转换的表&#xff1a; select deptno,count(empno) emp_num from…

第十四届蓝桥杯JavaA组省赛真题 - 互质数的个数

解题思路&#xff1a; 快速幂 欧拉函数 快速幂比较常见于数据较大的取模场景&#xff0c;欧拉函数感觉还是有点抽象 注意&#xff1a; 取模的时候就不要简写了&#xff0c;例如&#xff1a;res res * a % mod;不要写成res * a % mod; import java.util.Scanner;public c…