机器学习核心算法之——贝叶斯方法

640?wx_fmt=gif


1.贝叶斯公式


贝叶斯公式已经成为机器学习的核心算法之一,诸如拼写检查、语言翻译、海难搜救、生物医药、疾病诊断、邮件过滤、文本分类、侦破案件、工业生产等诸多方面都有很广泛的应用,它也是很多机器学习算法的基础。在这里,有必要了解一下贝叶斯公式。

贝叶斯公式是以英国学者托马斯·贝叶斯(Thomas Bayes)命名的。1763年Richard Price整理发表了贝叶斯的成果《An Essay towards solving a Problem in the Doctrine of Chances》,这才使贝叶斯公式展现在世人的面前。

贝叶斯公式是为了解决”逆概”;问题而提出的。正概问题很常见,比如不透明袋中有黑球

M个,白球N个,随手抓起一个球,求是黑球的概率,大家心算一下就能知道是 M/M+N


当然,生活中有大量这样的例子,像人口流动统计、金融统计等等,这些统计的特征就是我们事先已经知道了所有样本的分布情况,在此基础上进行概率的计算,这就是“正概”问题。但是,如果我们不知道所有样本的信息(这样的例子比比皆是,例如物理学中我们不可能看到所有电子的运行状态,所以只能通过实验模拟观察大多数的情况去建立最合适的模型去解释),同时我们又想知道样本的概率怎么办呢?贝叶斯公式的作用就体现出来了。


还是一个袋子中装着若干小球,里面有黑色跟白色,我们随机取出一些小球,然后根据小球的情况去计算袋中小球实际的分布情况。此时我们可能有很多种模型(猜测)去解释,随着取出小球数量的增加,我们的模型也越来越精确,越来越逼近实际的情况,然后我们从这些模型中找出最贴合实际的。总结来说:不同模型的求解就是计算不同的后验概率(事件已经发生,求某种因素导致该事件发生的概率),对于连续的猜测空间是计算概率密度函数;模型比较如果不考虑先验概率(根据以往的经验和分析获得的概率)则运用了最大似然估计。这就是贝叶斯思想的核心。


下面我举一个例子:一所学校里面有 60% 的男生,40% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算“随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大”,这个就是前面说的“正向概率”的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗?


一些认知科学的研究表明(《决策与判断》以及《Rationality for Mortals》第12章:小孩也可以解决贝叶斯问题),我们对形式化的贝叶斯问题不擅长,但对于以频率形式呈现的等价问题却很擅长。在这里,我们不妨把问题重新叙述成:你在校园里面随机游走,遇到了 N 个穿长裤的人(仍然假设你无法直接观察到他们的性别),问这 N 个人里面有多少个女生多少个男生。


你说,这还不简单:算出学校里面有多少穿长裤的,然后在这些人里面再算出有多少女生,不就行了?


我们假设全校总共有H个学生,其中男生(都穿长裤)占60%,只有50%女生穿长裤。

我们首先计算穿长裤的人数:

H*P(Boy)*P(Pants|Boy)+H*P(Girl)*P(Pants|Girl),其中P(Boy)为男生比例,P(Pants|Boy)为男生中穿长裤的比率(此题中为100%),女生同理。其中创长裤的女生共有H*P(Girl)*P(Pants|Girl)个,两者一比,我们就得到:

式1

P(Girl|Pants) = P(Girl)*P(Pants|Girl)/P(Boy)*P(Pants|Boy)+P(Girl)*P(Pants|Girl)

而这里面男生女生可以泛指一切事物,所以通用公式为

式2(B'为B的互补,例如男生女生)   

P(B|A)=P(B)*P(A|B)/P(B')*P(A|B')+P(B)*P(A|B)

其实分母就是指所有穿长裤的人的概率P(Pants)也就是P(A),分子是女生中穿长裤与是女生同时发生的概率,也就是P(Pants,Girl)或者说P(A,B),所以式2(全概率公式的一种特殊情况)又可以写为:式3

P(B|A)=P(A,B)/P(A)

又可以写为:式4

P(B|A)*P(A)=P(A,B)         

同理,我们可以得到P(A|B)*P(B)=P(A,B) ,所以:

P(A|B)*P(B) = P(B|A)*P(A),即:式5 

P(B|A)=P(A)*P(B|A)/P(B)


640?wx_fmt=png


式3或式4也就是贝叶斯公式。其实式2是一个问题共有两种分类时的情况,例如性别、掷硬币等只有两种情况,现实生活中很多是由多种情况构成,一件事情可能由多个原因影响,那么推广开来,就是贝叶斯公式的通式。如图1-1所示,一个事物有两个影响要素A和B,面积的大小对应发生的概率大小,C事件的发生受到A和B要素的影响。如果计算在C事件发生是受到A事件影响的概率P(A|C),就是计算A∩C与C的面积之比,也就是P(A∩C)/P(C),P(A∩C)又可以写为P(A,C),因为P(C|A)表示A条件下C事件发生的概率,P(A)表示A事件发生的概率,即A的面积,所以P(A)*P(C|A)即A∩C的面积,也就是即A和C同时发生的概率P(A,C)。就得到P(A∩C)=P(A)*P(C|A), 同理:P(B∩C)=P(B)*P(C|B),因为得到 P(A|C)=P(A)*P(C|A)/[P(A)*P(C|A)+P(B)*P(C|B)]。这是一个事物的影响因素由两个组成的情况,我们把所有情况统一起来就是全概率公式:

 式6

640?wx_fmt=png 




2.贝叶斯推断

2.1什么是贝叶斯推断

贝叶斯推断(BAYESIAN INFERENCE)是一种应用于不确定性条件下的决策的统计方法。贝叶斯推断的显著特征是,为了得到一个统计结论能够利用先验信息和样本信息。通俗来讲,我想知道A事件的发生,如果没有任何的先验知识,我只能做出它发生与不发生的概率各占50%的判断。但是,幸运的是我知道B事件发生了,根据两者的关联经验,我知道它对A事件的发生起到促进作用,所以我可以更加准确的判断A事件是大概率发生的(如80%),而不是起初的非零即一的50%。如果我有更多A的关联事件,那么我可以做出更加准确的判断,这就是贝叶斯推断。


我们还是看式5:P(B|A)=P(A)*P(B|A)/P(B),P(A)是我们的先验概率,(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。

P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。


为了更直观的解释贝叶斯推断,这里举一个维基百科的例子——吸毒监测:


假设一个常规的检测结果的敏感度与可靠度均为99%,即吸毒者每次检测呈阳性(+)的概率为99%。而不吸毒者每次检测呈阴性(-)的概率为99%。从检测结果的概率来看,检测结果是比较准确的,但是贝叶斯定理却可以揭示一个潜在的问题。假设某公司对全体雇员进行吸毒检测,已知0.5%的雇员吸毒。请问每位检测结果呈阳性的雇员吸毒的概率有多高?


令“D”为雇员吸毒事件,“N”为雇员不吸毒事件,“+”为检测呈阳性事件。可得


1、P(D)代表雇员吸毒的概率,不考虑其他情况,该值为0.005。因为公司的预先统计表明该公司的雇员中有0.5%的人吸食毒品,所以这个值就是D的先验概率。


2、P(N)代表雇员不吸毒的概率,显然,该值为0.995,也就是1-P(D)。


3、P(+|D)代表吸毒者阳性检出率,这是一个条件概率,由于阳性检测准确性是99%,因此该值为0.99。


4、P(+|N)代表不吸毒者阳性检出率,也就是出错检测的概率,该值为0.01,因为对于不吸毒者,其检测为阴性的概率为99%,因此,其被误检测成阳性的概率为1 - 0.99 = 0.01。


5、P(+)代表不考虑其他因素的影响的阳性检出率。该值为0.0149或者1.49%。我们可以通过全概率公式计算得到:此概率 = 吸毒者阳性检出率(0.5% x 99% = 0.495%)+ 不吸毒者阳性检出率(99.5% x 1% = 0.995%)。P(+)=0.0149是检测呈阳性的先验概率。


用数学公式描述为:

640?wx_fmt=png

根据上述描述,我们可以计算某人检测呈阳性时确实吸毒的条件概率P(D|+):

尽管吸毒检测的准确率高达99%,但贝叶斯定理告诉我们:如果某人检测呈阳性,其吸毒的概率只有大约33%,不吸毒的可能性比较大。假阳性高,则检测的结果不可靠。

同时,我们可以计算一下假如一个人吸毒,但他误检测成阴性的概率P(D|-):

P(D|-) =P(-|D)P(D)/P(-|D)P(D)+P(-|N)P(N)

           =0.01*0.005/0.01*0.005+0.99*0.995

           =0.0000507

可见,一个人吸毒但被误检测为阴性的概率只有0.005%,也就是说一个人如果检测为阴性,则基本可以判定他没有吸毒。但是一个人如果监测为阳性,则只有33%的概率确定他吸毒。这在跟很多医学监测当中的案例很相似,假阳性比假阴性更值得我们关注!

2.2贝叶斯推断与拼写纠正

贝叶斯推断其实有很多应用,例如语言翻译、中文分词、图像识别等,很多博客也以拼写纠正作为示例,这里我就详细讲一下拼写纠正的过程。

经典著作《人工智能:现代方法》的作者之一 Peter Norvig 曾经写过一篇介绍如何写一个拼写检查/纠正器的文章,详情戳这里。

用户在输入过程中,难免会遇到拼写错误的情况,我们要做的就是给出一个或几个纠正后的用户本来想要输入的单词推荐。这里的一个关键问题就是:用户到底想要输入什么单词?

其实用数学的语言来描述,就是要求出

P(我们猜测用户要输入的单词|用户实际输入的单词)的大小。

用T表示我们猜测用户输入的单词,用S表示用户实际输入的单词,那么就是求 

P(t|S)= P(S|t)*P(t)/P(S)的大小。

对于同一个单词,P(S)的概率是一样的,那么就等价于P(t|S)∝ P(S|t)×P(t)。  

∝是正比于,不是无穷大,那么要是的P(t|S)最大,就是使得P(S|t)×P(t)最大。

P(S|t)名义上是指我们猜测的单词t是用户真正想输入单词的概率,不同的单词概率不同,这就涉及到最大似然估计。例如用户输入的单词是thriw,这时throw跟thraw都有可能,但是你会想到,o跟i很接近,用户可能要输的单词是throw的可能性比thraw的可能性大得多,根据最大似然估计找出最可能的单词。但是,有时候光有最大似然并不能完美的解决问题,我们还需要利用先验概率P(t)。

P(t)使我们猜测的单词出现的概率,这些单词t1、t2、t3....理论上有无穷种,但它是一种先验概率,对于单词来说,可能有点抽象。这里举一个分词的例子:

The girl saw the boy with a telescope.

如果仅用最大似然估计方法的话,可能会给出两种结果:

1 The girl saw | the boy with a telescope    

2.The girl saw the boy | with a telescope


但是根据我们的常识,一个女孩看着一个拿着望远镜的男孩?拿着望远镜有点莫名其妙,与“看”这个动作联系起来,那么最合适的解释恐怕是女孩拿着望远镜看那个男孩。那么得出这个结论,就是用到我们的先验知识,也就是P(t)。


网站:博客园

网站链接:https://www.cnblogs.com/

文章链接:https://www.cnblogs.com/SUNYZBlog/p/9610378.html

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg

长按扫码关注


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

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

相关文章

B 站面试官:“啥是重定向?”

三分钟,带你学习和实践域名重定向大家好,我是鱼皮,今天分享 重定向 小知识,以及我在腾讯云云开发中实现域名重定向的实践。孽起之前,我开发了一个编程导航网站,将网站放到了腾讯云云开发上,用云…

比起掉头发,我更怕掉队

程序员是最需要持续学习的职业可能在大家眼中,程序员是一群木讷、思维方式单一的物种,但其实,他们才是思维活跃,时刻保持学习力,不甘落后的一群人。计算机行业每天都会有新的东西出现,程序员们需要关注最新…

刷新mac地址命令_配置好Cisco交换机需要熟悉IOS命令及相关的知识

一、几种配置命令模式switch> 这种提示符表示是在用户命令模式,只能使用一些查看命令。switch# 这种提示符表示是在特权命令模式。switch(config)# 这种提示符表示是全局配置模式switch(config-if)# 端口配置命令模式二、检查、查看命令这些命令是查看当前配置…

WPF 使用FontAwesome字体图标

要搞点小软件,又不想使用图标和图标类库,突然想起FontAwesome,试了一下,还挺方便的,先弄了几个最常用的图标试一下,弄了几个按钮的样式,看一下效果:看一下fontAwesome使用方法:首先从…

从Google Maglev说起,如何造一个牛逼的负载均衡?

Maglev是谷歌为自己的数据中心研发的解决方案,并于2008开始用于生产环境。在第十三届网络系统设计与实现USENIX研讨会(NSDI ‘16)上, 来自谷歌、加州大学洛杉矶分校、SpaceX公司的工程师们分享了这一商用服务器负载均衡器Maglev的…

怎么打包图片_超简单的免费批量图片压缩技巧,只需3步

我们在上传图片的时候,经常会遇到一个问题,那就是图片文件太大,无法上传。那这个时候我们该怎么办呢?我们一般都会想到把图片进行压缩之后,重新上传。那么我们要怎么压缩图片呢?如果图片数量很多&#xff0…

Calendar类

接触java不久,感觉java真的挺好玩的。 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法…

史上最牛的5次黑客攻击!比电影还刺激!

好莱坞认为,黑客就像是使用计算机的黑魔导士。在电影中,计算机可以炸毁房屋,关闭公路,释放瘟疫还有引发女权运动。也许有人认为,好莱坞的想象力很丰满,但现实是骨感的。他们错了,因为在现实中&a…

优化 .NET Core logging 中的泛型 logger

优化 .NET Core logging 中的泛型 loggerIntro在微软的 logging 组件中&#xff0c;我们可以比较方便的使用泛型 Logger&#xff0c;如&#xff1a;ILogger<Generic> 这样的&#xff0c;但是如果泛型 Logger 的类型是一个泛型类型就会有些问题&#xff0c;具体的泛型参数…

charts漏斗图表_ECharts漏斗图属性与实例介绍

ECharts漏斗图在 ECharts 系列中&#xff0c;漏斗图使用 series[i]-funnel 表示。漏斗图适用于业务流程比较规范、周期长、环节多的流程分析&#xff0c;通过漏斗各环节业务数据的比较&#xff0c;能够直观地发现和说明问题所在。示例&#xff1a;ECharts漏斗图属性type在漏斗图…

原来R语言还有这些不为人知的用处!

开学钜惠已经进行了好些天啦&#xff0c;前两天小天介绍了关于python课程的开学季限时优惠&#xff08;传送门&#xff09;&#xff0c;你以为这样就结束了吗&#xff1f;不不不&#xff0c;还有R语言系列的优惠没讲过呢。接下来&#xff0c;小天来详细说明一下&#xff01;19月…

记一次 .NET医院公众号程序 线程CPU双高分析

一&#xff1a;背景 1. 讲故事上周四有位朋友加wx咨询他的程序出现 CPU 线程 双高的情况&#xff0c;希望我能帮忙排查下&#xff0c;如下图&#xff1a;从截图看只是线程爆高&#xff0c;没看到 cpu 爆高哈????????????&#xff0c;有意思的是这位朋友说他&#…

谷歌搜索,揭示人性最黑暗的5个秘密

《卫报》网站发布文章指出&#xff0c;我们能够从我们在网上问的问题获得对自己更多的了解呢。美国数据科学家塞斯斯蒂芬斯-大卫多维茨&#xff08;Seth Stephens-Davidowitz&#xff09;通过分析谷歌的匿名搜索数据&#xff0c;揭示了我们最黑暗的一些秘密&#xff0c;揭露了我…

通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流...

在一般的互联网应用中限流是一个比较常见的场景&#xff0c;也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现&#xff0c;也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接返回成功失败来决定是否发起请求。也可…

(转)完美画质 3D游戏反锯齿技术浅析 .

完美的画面已经离我们不再遥远——反锯齿技术浅析 不管现今的游戏画面有多完美&#xff0c;人物和环境有多真实&#xff0c;但游戏画面的构成的主要方式仍然没有得到改善&#xff1a;一帧画面由成千上万像素构成。这意味着物体多边形的轮廓最终是锯齿状的图形。所以画面质量不可…

业余时间学数据分析,如何快速上手

广泛被应用的数据分析谷歌的数据分析可以预测一个地区即将爆发的流感&#xff0c;从而进行针对性的预防&#xff1b;淘宝可以根据你浏览和消费的数据进行分析&#xff0c;为你精准推荐商品&#xff1b;口碑极好的网易云音乐&#xff0c;通过其相似性算法&#xff0c;为不同的人…

64位Visual Studio 2022,微软在下一盘大棋!

有没有跟我一样奇怪过&#xff0c;都2021年了&#xff0c;用的还是VS2019&#xff1f;原来微软是憋大招去了&#xff0c;4月18号Amanda的一篇博文宣布了一则重磅消息——Visual Studio 2022 首个预览版将于今年夏季发布 &#xff0c;并且终于成为万众期待的 64 位版&#xff01…

【重磅】MIT发布2018年“全球十大突破性技术”

“有些技术已经应用多年&#xff0c;有些则是意外之喜。无论如何&#xff0c;以下是我们认为将在未来的几年对我们的工作和生活产生巨大影响的技术突破。”北京时间2018年2月21日&#xff0c;《麻省理工科技评论》揭晓了2018年“全球十大突破性技术”&#xff0c;这份全球新兴科…

[Stardust]星尘配置中心

在分布式系统开发中&#xff0c;配置中心必不可少。在中通几年时间里&#xff0c;为了配合大数据计算平台&#xff0c;统一管理数百个微小应用&#xff0c;设计了一套轻量级配置中心。星尘配置中心在其理念基础上改进&#xff0c;针对中小团队而全新设计&#xff01;源码&#…

大数据可视化设计到底是啥,该怎么用

大数据可视化是个热门话题&#xff0c;在信息安全领域&#xff0c;也由于很多企业希望将大数据转化为信息可视化呈现的各种形式&#xff0c;以便获得更深的洞察力、更好的决策力以及更强的自动化处理能力&#xff0c;数据可视化已经成为网络安全技术的一个重要趋势。文章目录一…