贝叶斯算法学习与记录第一弹

news/2025/2/15 19:30:15/

文章目录

  • 一、贝叶斯算法起源
  • 二、贝叶斯主要解决的问题
  • 三、为什么使用贝叶斯
  • 四、问题:
  • 五、贝叶斯公式:
  • 六、拼写纠正例子:
  • 七、模型比较理论
  • 八、垃圾邮件过滤实例


一、贝叶斯算法起源

贝叶斯算法源于一个叫贝叶斯的人为了解决“逆概”问题而创作的;

二、贝叶斯主要解决的问题

贝叶斯主要解决的问题:
正向概率:假设袋子里面有n个白球,m个黑球,你伸手进去摸一把,摸出黑球的概率是多大;
逆向概率:如果我们事先不知道袋子里面黑白球的比例,闭着眼睛随便摸出一个或多个球,
观察这些取出来的球的颜色之后,我们可以就此对袋子里面的黑白球的比例作出什么样的推测?

三、为什么使用贝叶斯

为什么使用贝叶斯?
1、现实世界本身是不确定的,人类的观察能力是有限的;
2、我们日常观察到的只是事物表面上的结果,因此我们需要提供一个猜测;

四、问题:

假设学校里面人的总数是U个,
穿长裤的(男生)个数:U*P(Boy)P(Pants|Boy)–P(Boy)是男生的概率=60%;P(Pants|Boy)是条件概率,即男生这个条件下穿长裤的概率是多大,这里是100%,因为男生都穿长裤/穿长裤的女生个数:UP(Girl)P(Pants|Girl)–P(Girl)是女生的概率=40%;
(另男生总是穿长裤,女生一半穿长裤一半穿裙子)
求解:穿长裤的人里面有多少个女生(P(Girl|Pants))?
答:穿长裤的人总数为U
P(Boy)P(Pants|Boy)+UP(Girl)P(Pants|Girl);
P(Girl|Pants)=U
P(Girl)P(Pants|Girl)/穿长裤总数=UP(Girl)P(Pants|Girl)/[UP(Boy)P(Pants|Boy)+UP(Girl)*P(Pants|Girl)]=P(Girl)*P(Pants|Girl)/[P(Boy)*P(Pants|Boy)+P(Girl)*P(Pants|Girl)]到此发现与总人数U无关,可以消去;进一步化简分母=P(Pants,Girl),分子=P(Pants)

五、贝叶斯公式:

(求逆向概率的时候转换成正向,把难求的值转换成好求的)
在这里插入图片描述

六、拼写纠正例子:

问:我们看到用户输入了一个不在字典中的单词,我们需要去猜测”这个用户真正想输入的单词是什么呢?哪个单词概率最大“P(我们猜测他想输入的单词|他实际输入的单词)
用户实际输入单词记为D(D代表tha,即观测数据),
猜1:P(the|tha)
猜2:P(than|tha)
猜3:P(tan|tha)…
统一记为P(h|D);P(h|D)=P(h)*P(h|D)/P(D);
因P(D)是定量,故P(h|D)正比于P(h)*P(h|D);
对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率Prior)”和“这个猜测生成我们观测到的数据的可能大小”
比如用户输入tlp ,那到底是 top 还是 tip ?这个时候,当最大似然
不能作出决定性的判断时,先验概率就可以插手进来给出指示——
“既然你无法决定,那么我告诉你,一般来说 top 出现的程度要高
许多,所以更可能他想打的是 top "

import urllib
import urllib.requestimport re
import collections
def words(text):return re.findall('[a-z]+',text.lower())
def train(features):model=collections.defaultdict(lambda:1)#所有词统计完一遍之后定义其 至少出现1次,概率为0代表几乎不可能发生for f in features:model[f]+=1return model
NWORDS=train(words(open('big.txt').read()))
#读取语料库语言,单词抽取,转换小写
alphabet='abcdefghijklmnopqrstuvwxyz'
def edits1(word):n=len(word)return set([word[0:i]+word[i+1:]for i in range(n)]+[word[0:i]+word[i+1]+word[i]+word[i+2:]for i in range(n-1)]+[word[0:i]+c+word[i+1:]for i in range(n) for c in alphabet]+[word[0:i]+c+word[i:]for i in range(n+1) for c in alphabet])
def known_edits2(word):return set(e2 for e1 in edits1(word)for e2 in edits1(e1) if e2 in NWORDS)
def known(words):return set(w for w in words if w in NWORDS)
def correct(word):candidates=known([word])or known(edits1(word))or known_edits2(word)or [word]return max(candidates,key=lambda w:NWORDS[w])

在这里插入图片描述

七、模型比较理论

最大似然:最符合观测数据的(即 P(D | h) 最大的)最有优势
奥卡姆剃刀: P(h) 较大的模型有较大的优势(目标越多)
掷一个硬币,观察到的是“正”,根据最大似然估计的精神,我们应该
猜测这枚硬币掷出“正”的概率是 1,因为这个才是能最大化 P(D | h)
的那个猜测
如果平面上有 N 个点,近似构成一条直线,但绝不精确地位于一条直线
上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模
型2)拟合,也可以用三阶多项式(模型3),特别地,用 N-1 阶多项式
便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到
底哪个是最靠谱的呢?
奥卡姆剃刀:越是高阶的多项式越是不常见

八、垃圾邮件过滤实例

问题:给定一封邮件判定它是否属于垃圾邮件,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,d2,…,dn|h+) 扩展为: P(d1|h+) * P(d2|d1, h+) * P(d3|d2,d1,
h+) * …(这里我们把原始贝叶斯问题转化为朴素贝叶斯问题,相当于对关系进行简化,假设之间特征是独立的互不影响的);简化为 P(d1|h+) * P(d2|h+) * P(d3|h+) * …
对于P(d1|h+) * P(d2|h+) * P(d3|h+) * …只要统计 di 这个单词在垃
圾邮件中出现的频率即可。


http://www.ppmy.cn/news/22673.html

相关文章

并发之美

在我们日常生活中,事情应该一件一件的做,但是我们会感觉这样不仅效率低下,而且还特别累人,我们何不转换思想,看下图:我们可以在烧开水的时候,顺便把洗茶具、拿茶叶的事情做了,这样是…

Leetcode:416. 分割等和子集、1049. 最后一块石头的重量 II(C++)

目录 416. 分割等和子集 问题描述: 实现代码与解析: 动态规划(01背包问题): 原理思路: 1049. 最后一块石头的重量 II 问题描述: 实现代码与解析: 动态规划(01背…

【Leetcode】面试题 08.05. 递归乘法、HJ55 挑7

作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 面试题 08.05. 递归乘法 HJ55 挑7 面试题 08.05. 递归乘法 面试题 08.05. 递归乘法 题…

笔记:Space-time Neural Irradiance Fields for Free-Viewpoint Video

论文标题:自由视角的时空神经辐射(发光)场 创新点 使用RGBD单目视频(2.5D)表示时空。引入对场景深度的监督解决运动模糊问题。 (本文仅介绍对NeRF的改进部分) 深度重建损失 问题&#xff1…

npm的知识要点

前端开发趋向于分散隔离,多以组件、包的形式来进行。虽然不使用node、npm、webpack、babel等工具依然可以进行前端开发,但这是远离和拒绝新技术、新理念的做法。 npm(node package manage)是基于共享理念的实践、基于node的JavaScript编写的包管理工具&a…

字节跳动抖音推荐算法实习生一面凉经

面试大概50分钟 本来投的是头条开发岗位,不知为何被捞到了推荐算法岗位。多位推荐算法hr一直约我面试,说经历和他们部门契合。我从年底推到年后,最后答应面试,这也是读研以来第一次面试。大概是自己准备不充分,一面就…

模拟(一)回型矩阵、螺旋矩阵

回型矩阵_牛客题霸_牛客网 描述 给你一个整数n&#xff0c;按要求输出n∗n的回型矩阵 输入描述&#xff1a; 输入一行&#xff0c;包含一个整数n 1<n<19 输出描述&#xff1a; 输出n行&#xff0c;每行包含n个正整数. 示例1 输入&#xff1a; 4 输出&#xff1a; 1 2 3 4…

5G NR R16 SPS

一 简介 今天给大家介绍一个R16的小topic&#xff1a;SPS——Semi-persistent Scheduling(半持续调度)&#xff0c;与传统的Dynamic Scheduling(动态调度)相对应。 首先解释什么是SPS&#xff0c;我们知道目前常用的调度方式是动态调度&#xff0c;也就是一个DCI指示一个PDSC…