56星座屋
当前位置: 首页 星座百科

从头开始实现贝叶斯算法(如何真正的理解算法)

时间:2023-05-26 作者: 小编 阅读量: 4 栏目名: 星座百科

有多少人能将贝叶斯思想自然的用于解释生活中的各种现象呢?实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯成为机器学习的核心方法之一。

文/傅一平

源/与数据同行

大学时学习了很多高深的课程,什么数学物理方法、小波函数等等,但现在脑海里估计已经一片空白,反正大概是一堆公式和解题方法吧,其实就是在当时,也根本没深究过这些数学公式的来龙去脉,更无法理解这些公式后面的光辉思想。

贝叶斯算法大名鼎鼎,但用过贝叶斯的估计没几个能从业务的角度去真正理解贝叶斯吧?有多少人能将贝叶斯思想自然的用于解释生活中的各种现象呢?在电梯里你能用几句话跟领导解释清楚吗?

当然直接拿着贝叶斯公式或者调用一个函数的确可以快速解决问题,但这种方法显然没法内化,逻辑上的推导才是算法精神和乐趣所在,对于一个建模的人来说,如果有时间,还是要尽量让一个算法长在自己心里,语言和工具总会不断被更新,你也许永远跟不上这个节奏,唯有里面的思想是持久的,也是一大把年纪后能留下的唯一的算法资产,特别是如果其还能指导你的生活,知道为什么总是很重要。

1、关于信念

你相信上帝吗?你相信中医吗?你相信全球变暖是人为造成的吗?你相信转基因食品安全吗?你相信大年初一去灵隐寺烧香能带来好运吗?信或不信,我们可以用一个量化数字来表示,比如说概率,大年初一去灵隐寺烧香能带来好运的可能性是90%,这是主观概率,就好比天气预报说明天下雨的概率90%一样。

真正的深信不疑或彻底不信都是很少的,一般情况下对一般有争议的问题我们都是抱着将信将疑的态度,信念值在0.01%到99.99%之间,而且,我们对大多数事物的信念值都在动态变化,比如有什么特别突兀的新东西出来,我们一开始可能是不信的,随着证据增多,慢慢增加信念,那么,我如何基于这些证据去计算新的信念值?

2、贝叶斯的困惑

所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大?”

而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测,随着取出的球越来越多,我的推测是否也会变化?”

实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯成为机器学习的核心方法之一。

3、从业务出发推导贝叶斯定理

如果我在决策时掌握所有的信息,我当然能计算一个客观的概率,比如在一个桶里有黑白色的球,如果我事先知道里面黑白球的比例,我自然知道我随机拿到一个白球的概率是多少,如果我事先知道去灵隐寺获得好运的可能性就是90%,我自然会在某次路过灵隐寺的时候进去烧香。

可是生活中绝大多数决策面临的信息是不全的,我们手里只有有限的几个证据,而贝叶斯定理的精神在于,人类的观察能力是有限的,既然无法得到全面的信息,我们就在证据有限(表面)的情况下,尽可能地做一个更好的判断,下面我们先祭出贝叶斯公式,然后尝试用灵隐寺烧香能否显灵的例子推导出它:

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

这里P(A)代表认为升职的概率,B代表一个与A相关的事件(实例),比如“我朋友去年去了灵隐寺烧香,结果他升职了”,P(A/B)代表在B发生的情况下,A发生的概率,其他类似。

P(A)代表了我的原始信念A,就是说我对于升职有一个初始的判断概率,比如15%。P(A/B)代表某个实际事件发生后,有了新的证据,我需要对于原始的信念A做个调整,你可以把A当成你对一般情况的理论预言,而B是一次实验结果,有了新的实验结果,你就调整自己的理论预言,这个新的预言就是P(A/B)。

那么P(A/B)这个新的预言如何计算呢?

首先,跟初始的P(A)有关系,假如P(A)一开始极小,则再多的事件发生你也不会改变初衷,我们的当前观点肯定受先前观点的影响。

其次,跟P(B/A)/P(B)也有关系,就是说如果在原始信念P(A)作用下发生某个特定事件(B)的可能性相对更高了,则我由于这个事件改变原始信念的可能性就越高,比如这里P(B)代表去灵隐寺的概率,P(B/A)就代表升职的人中去过灵隐寺的的概率,两者比值就表示信念由于事实改变的相对大小,注意好好理解这句话。

最后,我们就得到了能业务化解释的贝叶斯公式:P(A/B)=P(B/A)/P(B)*P(A),假如你真理解了,你就不会纠结搞混这个公式。

4、从技术出发推导贝叶斯定理

当然,如果纯粹去推导出这个公式,其实也是容易的,笔者这里简要示意下:

U代表全空间,A代表升职,B代表去灵隐寺,C代表交集,很容易推导:

P(A,B)=C/U

P(A/B)*P(B)=C/B*B/U=C/U

P(B/A)*P(A)=C/A*A/U=C/U

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

5、生活的启示

请看以下第一张图,你认为大树后面是一个箱子,还是两个箱子,或是三个箱子,为什么? 如果你认为是一个箱子,请看第二张图,你到底凭什么判断是一个箱子?

很简单,你会说:要是真的有两个箱子那才怪了,怎么就那么巧这两个箱子刚刚好颜色相同,高度相同呢?

那么,如何证明?

我们可以很容易用贝叶斯来解释这个生活常识问题,假如A1代表认为是一个箱子,A2代表二个箱子,B代表观察到的事件,则其实求解P(A1/B)、P(A2/B)哪个概率最大?

P(A1/B)=P(B/A1)/P(B)*P(A1)

P(A2/B)=P(B/A2)/P(B)*P(A2)

显然P(B/A2)猜测后面是两个箱子使得我们的观测结果成为小概率的时候,我们才会说才怪呢?哪能这么巧呢?

6、中文分词问题

中文分词领域就用到了贝叶斯,分词问题的描述为:给定一个句子(字串),如:南京市长江大桥,如何对这个句子进行分词(词串)才是最靠谱的,例如:

1. 南京市/长江大桥

2. 南京市长/江大桥

这两个分词,到底哪个更靠谱呢?

我们用贝叶斯公式来形式化地描述这个问题,令 B 为句子,A 为词串(一种特定的分词假设),我们就是需要寻找使得 P(A|B) 最大的 A ,使用一次贝叶斯可得:

P(A分词/B句子)=P(B/A)/P(B)*P(A)

由于P(B)对于每个A都一样,P( B/A )近似为1,则P(A/B)主要由P(A)决定,也就是要寻找一种分词A使得这个句子B的概率最大化。

如何计算一个词串,A=W1,W2,W3,W4...的可能性呢?

我们知道,根据联合概率的公式展开:P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * ...,然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的条件有 n-1 个),数据稀疏问题也会越来越严重,即便语料库再大也无法统计出一个靠谱的 P(Wn|Wn-1,Wn-2,..,W1) 来。

为了缓解这个问题,科学家们一如既往地使用了“天真”假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的 k 个词(1个词就是朴素贝叶斯),这个就是所谓的“有限地平线”假设。

虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,现在式子变成了:P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) ..。

对于我们上面提到的例子“南京市长江大桥”由于“南京市长”和“江大桥”在语料库中一起出现的频率为 0 ,这个整句的概率便会被判定为 0 ,从而使得“南京市/长江大桥”这一分词方式胜出。

其他应用案例比如:

垃圾邮件识别(过滤器):P(A(垃圾邮件)/B(N个单词组成的垃圾邮件));

统计机器翻译:P(A(翻译成的外文)/B(待翻译的句子));

语音识别:P(A(推测出发送的句子)/B(观测到的语音信号));

7、一个具体计算案例

一般人中艾滋病的携带者比例是0.01%,如果一个人检测血液呈阳性,其得艾滋的概率是多少?(如果是真艾滋,血液检测的准确性达到99.9%,如果是假艾滋,血液检测准确率是99.99%)。

P(A(得艾滋)/B(检测呈阳性))= P(B/A)/P(B)*P(A)=99.9%/(0.01%*99.9% 99.9%*0.01%)*0.01%=50%。

真没想到,在这么高的血液检测准确性条件下,一个检测血液呈阳性的人真得艾滋的概率也只有50%。

直观解释:随机找1万人做实验,根据分布,只有1人得艾滋,由于检测手段强,这个人会被检测出来,但剩下的9999人虽然没艾滋,但检测出艾滋的概率由于0.01%,还是有1人被错误检测,因此共有2人检测成阳性,得艾滋的概率为50%。

因此,如果一个事情很罕见,即先验概率很低,即使再多的可疑事实出现,也要注意可能误判,比如不要对抓特务报太大信心!

笔者学习贝叶斯也是东看看,西看看,看了忘,忘了看,这次把学习的综合写成一篇还算易懂的文章,算是了却一个心愿,对于任何一个公式一定要在业务上搞懂搞透,起码能自圆其说吧,贝叶斯算是好懂的,但很多算法不是这样,公式的推导就已经让人发疯,更别提搞懂来龙去脉甚至跟生活去接轨了,从历史上看,牛人一般也只愿意show 结果,而不愿意把思考过程写下来,比如费马定理的证明,这个非常遗憾。

好了,贝叶斯介绍完了,如果你真的看到这里,是否对于其思想有一个新的理解?作为传统企业的一个技术人员,其实对于算法的掌控深度是非常纠结的,因为即使理解透了也可能于工作无益,这并非是性价比很高的方式,工程上能搞定就可以了。

但笔者想的是,这是一种学习方式,也许不用那么功利,自己觉得值就去干吧,没有谁能说现在学哪个知识就一定将来有用,或者没用,未来是如此不确定,在这个大数据时代。

,
    推荐阅读
  • 双针跑偏怎么回事(你了解什么是双追针吗)

    你了解什么是双追针吗虽然钟表上的时间是客观的,一分一秒都维持精淮步伐,但是每个人对时间的主观感受各不一样,对于同一事件的发生过程有的快,有的慢,对于时间记录难免有失衡淮,有了计时码表给予时间记录予以公正,就不怕会有严重误。

  • 红薯和牛奶可以一起吃吗?(红薯和牛奶可以同食吗)

    下面希望有你要的答案,我们一起来看看吧!红薯和牛奶可以一起吃吗红薯和牛奶是可以一起吃的,但不建议过量食用。因为红薯属于淀粉类食物,含有较丰富的粗纤维。与含有蛋白质的牛奶一起食用时,容易形成腹胀等不容易消化的问题,肠胃功能较弱的人群在这两种食物的选择上是需要谨慎的,避免食用过量。

  • 好看的十大穿越小说推荐(十大公认穿越小说巅峰神作)

    毫不客气地说《斗破苍穹》绝对算得上是小白文的巅峰,在这本小说横空出世之后,曾引发了众多作者纷纷跟风。《斗罗大陆》作者:唐家三少说到天蚕土豆的《斗破苍穹》,那就不能不提一下同样是穿越文的《斗罗大陆》,毕竟在当年这两本小说曾杀得不分上下,一直到09年底,《斗破苍穹》才牢牢占据了上风。虽然说,近些年因为种种原因,唐家三少的口碑越来越差,不过有一说一,当年《斗罗大陆》这本小说确是十分火爆。

  • 一个老太太谈生二胎的大白话(生女儿就是比生儿子好)

    而她也给出了生女儿就是比儿子好的理由,大意如下。这位67岁的老太太表示,女儿比儿子好的第一个理由就是女儿即便嫁了人,有什么事也都是第一时间想着自己的父母。而儿子就不一样了,很多男士认为生孩子、照顾孩子就是女性的义务,所以养育子女在他们看来就是父母必须做的事情,而所谓的感恩对他们来说,真的是太难了。因为工作原因,接触到很多孩子和家长,在这里希望结识更多志同道合的宝妈宝爸,共同探讨育儿心经。

  • 浴室墙面发霉如何处理(浴室里的墙面发霉了怎么办)

    漂白水(粉)加水以1:99的比例倒进喷水瓶,喷在有发霉的墙体可立即解决墙体发霉问题。用抹布擦拭墙面;再以清水洗净,墙面干燥后刷上防霉漆,则能长时间防潮。在霉菌不太严重的情况下,使用80%的酒精洗刷墙壁就足够了。清洗时要注意通风,应戴防护手套、口罩和眼镜。为了避免再次发霉应当注意使墙体彻底干燥,消除霉菌的成因以及正确取暖和通风。

  • 红茶婊是什么意思(红茶婊解释)

    红茶婊是什么意思?红茶婊,就是指那种抽烟、喝酒、眼线夸张、爱露乳沟打扮的很骚、但她的朋友们都知道她其实不是那种随便的姑娘,但她实际上就是那种随便的姑娘的婊子是欧美最新爆款风,叼烟讲理到处疯,嘴上说爱情至上,转眼宝马随老翁,我来为大家科普一下关于红茶婊是什么意思?是欧美最新爆款风,叼烟讲理到处疯,嘴上说爱情至上,转眼宝马随老翁。

  • 地面潮湿用什么方法快速干(潮湿拖地快干用什么方法)

    首先,加热水直到它变得不热,温度大约为40摄氏度。然后,在水中加入一匙盐,稍加搅拌,等到盐完全溶解后,即可开始拖地。用热盐水浸湿拖把,尽可能拧干,并将地板擦干净。1分钟后,纸在热盐水上拖过地板后擦拭,无水渍,并重新铺上。因为液体的挥发速度和温度越高,温度越高,挥发速度越快,用温水拖地板自然干燥得越快。而盐中的氯化镁和氯化钙很有吸收性,它们在地板上干燥然后变成小颗粒,可以让地面长期保持干燥。

  • 酱肉丝的家常做法(做酱肉丝的步骤)

    以下内容大家不妨参考一二希望能帮到您!酱肉丝的家常做法将里脊肉切丝,大葱切丝备用。将肉丝放入盆中,加入料酒,盐,生粉腌制五分钟。起锅烧油,放入肉丝炒至变白,捞出备用。另起锅烧油,放入甜面酱炒香,放入料酒,老抽,清水,白糖搅拌均匀。放入炒好的肉丝,翻炒均匀,淋上适量的水淀粉,翻炒收汁即可。

  • 小米机器人最新款(机器人板块再迎重磅事件催化)

    小米机器人最新款8月11日晚,在2022#雷军年度演讲#中,小米雷军展示全尺寸人形仿生机器人CyberOne,高1.77米,重52kg。服务机器人产量达到921.4万台,同比增长48.9%。下一步,工信部将进一步维护机器人产业链供应链稳定,加快实施“机器人”应用行动,支撑各行业数字化转型和智能化升级。此外,公司对机器人齿轮垫圈紧固件等系列产品进入了深入研发

  • 明日方舟SS尘影余音活动更新总结 性价比意外超高的术士芯片礼包

    SS尘影余音活动,时间:6.9-6.23,第二阶段活动将于一周后,也就是6月16日正式开启活动和之前的SS主题活动一样的,都是刷第一阶段开启的关卡,刷道具完成各种任务要求后解锁获取资源,包括搬商店资源等等。不协和音程限时寻访卡池开启,时间:6.9-6.23设计UP干员:六星术士黑键、五星医疗濯尘芙蓉、五星狙击蓝毒。新干员登场,包括六星术士黑键、五星医疗异格芙蓉、五星重装车尼尔。