udacity是如何介绍贝叶斯的-机器学习笔记

 

       朴素贝叶斯是一种概率算法,它基于条件概率这一概念,该算法,易于实现且训练速度很快,在本文中将分享一个非常有趣的应用,垃圾邮件分类,隶属于自然语言处理。

       假如:我们在一个办公室里办公室里有两个人Lucy 和 Jim,他们在办公室的时间一样长,如果有一天我们坐在办公室里看见有人快速地经过我们身边,我们想知道这个人是谁,首先我们进行分析,目前知道的是Lucy和 Jim在办公室里的时间一样长此人是 Lucy的概率为 50%此人是 Jim的概率也为 50% 。

现在我们再加入一条信息,当我们看见这个人经过时,发现他(她)身穿红色毛衣,根据我们对他们的了解,Lucy 一周穿两次红色毛衣 ,而 Jim一周穿三次红色毛衣, 由于Lucy穿红色毛衣的次数少于 Jim,所以这个人是Jim的概率要大一些,那么概率究竟是多少呢?

比如说我们有五次看到有人经过,此人是Lucy的次数有两次,因为 Lucy一周有两次穿红色毛衣,而此人为 Jim的次数为三次  因为他一周有三次穿红色毛衣,因此,我们可以得到各自的概率为 40% 和 60%,我们利用红毛衣这个信息获得了更准确的概率,这称为贝叶斯定理。

 

起初的猜测概率为50% 50% 称为先验概率,因为这是在没有得到红毛衣之前做出的推断,而最后再加入红毛衣的信息后,得到的信息的概率为60% 40% 称为后验概率。

贝叶斯的工作是将我们知道的转换为我们推测的。在上面的例子中我们已知的是Lucy和 Jim穿红色毛衣的概率

我们需要推测的是穿红毛衣的人是Lucy还是Jim的概率。

首先,我们知道事件A 的概率,接着引进一个新事件R,事件R 与 事件 A 相关,已知事件R 在事件 A 发生条件下的概率。

在这两个事件中贝叶斯定理所做的是,推测事件A 在事件 R 发生条件下的概率 ,也就是事件R 发生后,事件 A 新的概率。

贝叶斯定理也能分析复杂情况,

办公室里仍然有Lucy和 Jim两个人,我们看到一人快速经过,但不知此人是谁。

我们的信息是,Lucy每周有三天都在办公室,Jim经常出差每周只有一天在办公室,所以首先在没有其他信息比如红毛衣的前提条件下,这个人是Lucy的可能性是 Jim 的三倍,因此Lucy的先验概率是 0.75 而 Jim 是 0.25。

 

假设连续几周都是这种情况,但现在加入新的条件,这个人穿着红色毛衣,和之前穿毛衣的条件一样,Lucy一周有两次穿红色毛衣,而此人为 Jim的次数为三次,所以真正的概率并不是0.75 与 0.25,因为Jim每周比 Lucy多穿一次红色毛衣

 

加入红毛衣信息后,以纵列为单位,所以每周五天的工作日当中,Lucy 穿红色毛衣两次 ,Jim穿红色毛衣三次,把他们穿红色毛衣的日期标红,已知看到的这个人穿红色毛衣,所以不考虑他们没有穿红色毛衣的时候,两人穿红色毛衣的次数共九次,其中六次是Lucy,三次是Jim,因此假设有九次看到有人穿红色毛衣快速经过,那么这个人是Lucy的概率是三分之二,是Jim的概率是三分之一,因此后验概率就是Lucy三分之二,0.67;Jim三分之一 ,0.33。

用数学的方式再解释一次,我们在办公室看到一个人,起初我们推测这个人是Lucy的概率是 75%,是Jim的可能性是 25%。

因为Lucy每周在办公室三天,而 Jim每周只在办公室一天,现在加入新的已知条件,看到的这个人穿着红色毛衣,数据显示Lucy每周穿两次红色毛衣

首先分析红色毛衣的人是Lucy的可能性是多少呢?因为每周有五个工作日她穿红色毛衣上班的概率是五分之二也就是0.4

,那么她没有穿红色毛衣去上班的概率就是0.6,Jim也是同样的道理,因为他每周穿三次红色毛衣,所以她今天穿红色毛衣的概率就是0.6,,没有穿红色毛衣的概率就是0.4。根据条件概率的公式,这两种情况发生的概率就是两个事件概率的乘积。

这个人是Lucy的概率乘以 Lucy穿红色毛衣的概率,所以看到的这个人是Alex 而她恰好穿红色毛衣的概率,就是0.75*0.4

二者相乘得到乘积。用同样的方式计算其他情况的概率,我们看到的这个人是Lucy,而她没穿红色毛衣的概率,就是0.75*0.6

我们看到的这个人是Jim,而他恰好穿红色毛衣的概率,也是两个概率的乘积,也就是0.25*0.6,最后一种情况我们看到的这个人是Jim,而她没有穿红色毛衣的概率就是 0.25*0.4。

下面用贝叶斯定理来分析一下,我们分析共有四种可能的情况,这四种情况的概率相加应等于一,但有一点可以确定,看到的这个人穿着红色毛衣,所以在这四种情况中,只有两种情况符合条件,就是当Lucy或者Jim穿红色毛衣的时候。所以不考虑另外两种情况。鉴于现在一共只有两种情况了,二者的概率应该更高,但比例应保持不变,所以将其它们归一化,用它们分别除以一个数使结果相加等于1,这个数就是二者的总和,所以这个人是Lucy的概率就是第一个等式:0.75 乘以 0.4 再除以二者的总和,也就是0.75 乘 0.4加上0.25 乘 0.6,结果等于三分之二也就是0.67 。这个人是Jim 的概率恰好是三分之一也就是0.33。如果用公式计算Jim的概率,结果同样是三分之一。

下面介绍叶斯定理的正式表达,首先要有一个事件,这个事件可以是A 或 B,二者的概率分别表示为P(A) 以及 P(B)

现在又有了第三个事件R,在A 和 B 事件的条件下,R事件可能发生,也可能不发生,R 可以更精确地确定事件 A 和 B 的概率

通过条件能够计算事件A 的条件下 R 的概率 P(R|A)以及A 的条件下 R 的对立事件的概率,就是说在A 的条件下 R 事件不发生的概率,同样在B 的条件下 R 事件的概率 P(R|B)以及在B 的条件下 R 的互补事件的概率,

已知的情况共有这四种:

R∩A

R 的互补事件 ∩A

R∩B

R 的互补事件 ∩B

已知事件R 已经发生了

所以第二种和第四种情况不符合条件,只剩两种情况,R∩A 和 R∩B。

A∩R 的概率,也就是事件A 和 事件 R 的交集,根据条件概率,应是P(A)乘 P(R|A),同样的方法计算事件B 和 R 的交集,因为这两个概率相加不等于一,所以我们让它们分别除以二者的和,新得到的归一化概率相加即等于一,因此用下面的公式来计算P(A|R) 和 P(B|R),这是在已知R 事件发生后 新得到的事件 A 和 B 的概率,总之P(A) 和 P(B) 被称为先验概率是在不知道R 事件发生的情况下,计算得到的事件 A 和 B 的概率。P(A|R) 和 P(B|R) 被称作后验概率,是我们在已知R 事件发生的情况下 推断出的 A 和 B 事件的概率,这就是贝叶斯定理。

来看一个有趣的例子来看一下贝叶斯定理的应用,假如你身体不舒服要去医院看医生,医生告诉你你可能得了某种严重的疾病现在要给你安排做个检查,他说这项检查的准确率是99%,具体来说如果有100 位患者,那么这项检查能准确地诊断出其中99 位生病了,如果有100 位健康人士,那么这项检查能诊断出其中99 人是健康的,用术语来说分别叫作敏感性和特异性,你在等待检查结果的时候,上网搜索了一下资料然后发现,平均有万分之一的人患有这种疾病,第二天医生打来电话说消息不太好,检查结果呈阳性这个时候你开始感到恐慌了。

先用数学的方式,计算一下患病的概率是多少动脑子的时候到了,现在有两条已知信息,这项检查的准确率是99% ,平均有万分之一的人患有这种疾病,那么你患病的概率是多少呢?

S 表示患病,H 表示健康,+ 代表检查结果呈阳性,由于万分之一的人患有这种疾病,所以患病的概率P(S) 是 0.0001,同样健康的概率P(H) 是 0.9999,不管对患者还是健康人士来说,检查结果的准确率都是99%,所以患者正确确诊的概率P(+|S)是0.99,健康人士被误诊为患病的概率为P(+|H)是0.01,把这两个套用到新的公式中得到患者被正确确诊的概率P(S|+)恰好是0.0098,不到百分之一。那检查结果99% 的准确率是怎么得来的呢?很奇怪但答案就是这样。

我们在看一下“可能性之树”,假设现在有一百万人,他们要么是健康的要么是生病的,因为平均有万分之一的人患有这种疾病那么这一百万名患者当中,有一百人患有这种疾病而另外的九十九万九千九百人则是健康的,要记得每100 人当中,99 位是诊断结果正确的 而另外一位则是误诊的。对于患者和健康人士来说都是这样,那么这些患者中有多少人的检查结果是阳性多少人的检查结果是阴性这一百名患者当中,99 人的检测结果正确呈阳性,另外一人则误诊检查结果呈阴性,在剩余的健康人士中,百分之一也就是9,999 人会被误诊,检查结果呈阳性,其余的99% 也就是 989,901 人检查结果正确,呈阴性

仔细来分析一下这四个人群

第一组人是患者他们将接受进一步的检查和治疗

第二组人则不幸被误诊了虽然也是患者但他们没有接受任何治疗就回家了

第三组人是健康人士但被误诊的他们要接受进一步的检查

第四组人也就是大多数人都是健康人士

你的检查结果呈阳性,所以你一定是以下两个人群中的一员,要么是检查结果正确的患者要么是被误诊的健康人士,其中一个人群有9,999 人,而另外一个人群仅有99 人,所以更大的可能性是你是那9,999 人中的一员,事实上你属于那九十九分之一的概率是99 除以 99 与 9,999 的和就是0.0098 不到百分之一,这就是你患有这种疾病而检查结果恰好正确的概率。

为什么检查结果呈阳性的健康人远远多于检查结果呈阳性的患者呢?因为尽管这项检查的失误率只有百分之一,但百分之一比万分之一的患病率要高的多,换句话说在一万名健康人中,百分之一也就是100 人会被误诊为患病,同时在一万人中,大约有一人是患病的人数少得多,所以如果你的检查结果呈阳性,那么你被误诊为患病的可能性仍然远远超过你实际患病的可能性大约一百倍,所以患病又被正确诊断的概率只有百分之一,这种现象叫做“假阳性”。

垃圾邮件过滤器举例,比如说我们有一些电子邮件形式的数据,

有些是垃圾邮件有些是非垃圾邮件,垃圾邮件写的是“快来赢钱”,“轻轻松松赚钱” 等等,非垃圾邮件写的是“最近好吗?”,“找到你了” 等等。

我们现在要做的就是,当收到一封新邮件上面写的是“Easy money” 时,要检查这是一封垃圾邮件还是非垃圾邮件,所以我们逐字分析,当然我们可以采取更有效率的方法,比如分析单词的顺序,但在这个例子中我们不这样做,即便不分析单词的顺序,效果也很好,我们首先来看第一个单词“easy”,这个单词在三封垃圾邮件中出现过一次,在五封非垃圾邮件中出现过一次。我们首先来计算一下初步概率,结合我们现有的数据,含有“easy” 这个单词的邮件是垃圾邮件的概率是多少?同样算一下“money” 这种情况。有三封垃圾邮件其中一封包含单词“easy”,因此含有“easy” 这个单词的邮件是垃圾邮件的概率是三分之一,因为这三封垃圾邮件中有两封包含单词“money”,所以包含“money” 这个单词的邮件是垃圾邮件的概率是三分之二,同样现在有五封非垃圾邮件其中一封包含单词“easy”,所以包含“easy” 这个单词的邮件是非垃圾邮件的概率是五分之一,“money” 这个单词也是同样

贝叶斯学习的要旨就是,从已知出发即含有“easy” 的邮件是垃圾邮件的概率 P('easy'|spam),含有“money” 的邮件是垃圾邮件的概率 P('money'|spam),推断结果即垃圾邮件含有“easy” 的概率 P(spam|'easy') 是二分之一,因为两封邮件中含有“easy” 而其中只有一封是垃圾邮件和含有‘money’单词的邮件是垃圾邮件的概率P(spam|'money')是三分之二因为三份邮件含有“money”。

朴素贝叶斯理论朴素的地方就在于,假设事件是彼此独立的然后把它们相乘,得到的结果就是如果邮件中含有“easy” 和 “money”,那么这封邮件是垃圾邮件,当然这并不是完全正确的,但是这样的假设通常能帮我们得到理想的结果。毕竟它还是有一定道理的。

下面进行详细的计算,我们共有8 封邮件,3 封是垃圾邮件 5 封是非垃圾邮件,所以我们的先验概率为垃圾邮件八分之三,非垃圾邮件八分之五,我们继续算后验概率,假如现在有一封垃圾邮件,因为三封垃圾邮件中,一封含有“easy” 两封没有,所以这封垃圾邮件含有“easy” 的概率是三分之一,不含“easy” 的概率是三分之二,跟之前计算的一样,非垃圾邮件含有“easy” 的概率是五分之一,不含“easy” 的概率是五分之四,根据条件概率,一封邮件是垃圾邮件并且它包含“easy” 的概率是两个事件的乘积,八分之三乘以三分之一即八分之一,同样我们计算一下,一封邮件是垃圾邮件但它不包含“easy” 的概率 即四分之一,非垃圾邮件包含“easy” 的概率是八分之一,非垃圾邮件不包含“easy” 的概率是二分之一。

 

在这里使用贝叶斯定理,我们知道这封邮件中包含“easy”,所以我们只考虑两种情况,邮件是垃圾邮件还是非垃圾邮件,这两种情况发生的概率相同都是八分之一,我们把这两个概率归一化,它们都是50%,所以我们的后验概率都是50%。

对非垃圾邮件可以采取同样的流程,我们的先验概率分别是八分之三和八分之五,包含“money” 的概率和不包含“money” 的概率,垃圾邮件分别是三分之二和三分之一,而非垃圾邮件分别是五分之一和五分之四,乘积分别是四分之一四分之一八分之一二分之一,由于邮件中包含“money”,由于邮件中包含“money”,所以我们只考虑两种情况,由于四分之一是八分之一的两倍,我们在归一化处理时垃圾邮件的概率是三分之二,即66.7%,非垃圾邮件的概率是三分之一即33.3%,这就是后验概率。

现在我们将了解朴素贝叶斯中的朴素一词的含义,我们将做出一个非常朴素的假设,我们看看两个事件同时发生的概率。

还可以写成P(A ∩ B)

等于P(A) 和 P(B) 的积,只有这两个事件相互独立时才会发生,如果不相互独立则不成立。

例如如果A 是外面很热的概率,B 是外面很冷的概率,它们的概率都为正,两个事件同时发生的概率是多少?将为0 因为不可能同时很热又很冷,这个公式不成立,因为很冷和很热是相互依赖的,但是在朴素贝叶斯定理中我们假设概率是相互独立的,这种假设是天真、不成立的假设,但在实践中效果很好使算法速度很快。

我将使用的另一个公式是条件概率公式,这是A 交 B 的概率的两种写法,这是贝叶斯定理的基础。

进行转换,P(A | B) 与 P(B | A)P(A) 成比例

现在我们要解决的问题是,有一封包含单词“easy”和“money”的电子邮件,我们想知道它是否为垃圾邮件,我们要计算的是包含单词“easy”和“money”时,电子邮件为垃圾邮件的概率,首先将使用刚刚提到的条件概率规则,写成电子邮件是垃圾邮件时包含单词“easy”和“money”的概率乘以电子邮件是垃圾邮件的概率。A 表示垃圾邮件 ,B 表示包含单词“easy”和“money”。

第一个因子是邮件是垃圾邮件时,包含单词“easy”和“money”的概率,可以写成邮件是垃圾邮件时,包含包含单词“easy”的概率乘以邮件是垃圾邮件时包含单词“money”的概率,同样是很天真的假设因为这些项可能相互依赖,可能包含单词“easy”后更有可能,包含单词“money” 不过也没关系,在很多情况下这种假设不会影响到结果,并且使计算更轻松,这就是朴素贝叶斯算法的核心。

P42现在我们对非垃圾邮件执行相同的操作

我们将两个概率都写成因子的积

 

我们之前根据数据进行了计算,第一个因子即邮件为垃圾邮件时包含单词“easy”的概率是 1/3,因为有3 封垃圾邮件 其中一封包含单词“easy”,邮件为垃圾邮件时,包含单词“money”的概率为 2/3,因为有3 封垃圾邮件,其中两封包含单词“money”,垃圾邮件的概率很简单为3/8,因为有8 封电子邮件,只有 3 封是垃圾邮件,对底下的进行类似的计算,结果分别为1/5 、1/5 、5/8将它们相乘得出包含单词“easy”和“money”时,邮件为垃圾邮件的概率与1/12 成比例,对于非垃圾邮件与1/40 成比例。

注意这些值不是实际概率,它们与实际概率成比例,那么如何获取实际概率呢?我们知道电子邮件要么是垃圾邮件要么是非垃圾邮件,这两个应该加起来为1,我们需要标准化它们,即乘以相同的因子,依然与1/12 和 1/40 成比例 但是加起来是 1,计算方法是将每个概率除以二者之和确保它们加起来为1,第一个概率为1/12 除以 1/12+1/40等于10/13,第二个概率为 1/40 除以 1/12+1/40等于3/13,答案是垃圾邮件的概率为10/13 非垃圾邮件的概率为 3/13。

 

对于这封电子邮件

我们的结论是它很有可能是垃圾邮件

一般情况会怎样呢?假设有大量单词作为特征,可以告诉我们电子邮件是否为垃圾邮件,例如“easy” “money” “cheap”等

第一步是颠倒条件并获得此结果?

然后做出朴素假设将其拆分为多个简单因子的积,我们可以通过查看数据快速计算这些因子

对垃圾邮件和非垃圾邮件都执行此操作,获得一些和不等于1 的值,最后标准化数据,获得邮件是否为垃圾邮件的最终概率

这就是朴素贝叶斯算法的原理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诡刺001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值