根据条件概率的定义 , 可以推导出贝叶斯公式 , 推导过程在百科里面如下:

文章插图
说明: 1)P(A|B) = A和B同时发生的概率/B发生的概率 , 直观想下 , B发生的概率一定大于A和B同时发生的概率 , 相除的含义就是在B发生的概率情况下 , 有多少A也同时发生的概率 , 也就符合了条件概率的定义 。 2)把除法变乘法就得到了合并后的式子 , 再变化下 , 就得到了贝叶斯公式 。
可能还比较抽象,举个wiki上的例子:
一所学校里面有 60% 的男生 , 40% 的女生 。 男生总是穿长裤 , 女生则一半穿长裤一半穿裙子 。 有了这些信息之后我们可以容易地计算“随机选取一个学生 , 他(她)穿长裤的概率和穿裙子的概率是多大” , 这个就是前面说的“正向概率”的计算 。 然而 , 假设你走在校园中 , 迎面走来一个穿长裤的学生(很不幸的是你高度近似 , 你只看得见他(她)穿的是否长裤 , 而无法确定他(她)的性别) , 你能够推断出他(她)是女生的概率是多大吗?
我们用两种算法进行计算 , 一是自己直观想 , 二是用朴素贝叶斯 。 假设学校一共有U个人 , 直观想法计算: P(是女生|穿裤子) = 所有穿裤子的女生数量/所有穿裤子的人数 = U*0.4(女生数量)*0.5(一半穿裤子) / (U*0.4*0.5 +U*0.6*1) = 0.2*U /0.8*U = 25%
如果用朴素贝叶斯算法: P(是女生|穿裤子) = P(穿裤子|是女生) *P(是女生)/P(穿裤子) = 0.5*0.4/[(0.6*1 +0.4*0.5)/1] = 0.2 /0.8 = 25% 说明: P(穿裤子) = 穿裤子人数/总人数= U*0.6*1 + U*0.4*0.5/U = 80% 这样看起来 , 朴素贝叶斯公式也不是很难 。
具体来看下垃圾邮件的分类问题:我们用D表示一封邮件 , D是由很多单词组成 。 用f+表示是垃圾邮件 , 用f-表示是正常邮件 , 根据贝叶斯公式 , 问题形式化:
P(f+|D) = P(D|f+)*P(f+)/P(D) p(f-|D) = P(D|f-)*P(f-)/P(D)
其中P(f+)和P(f-)比较容易得到 , 算下一个邮箱里面有多少个是垃圾邮件 , 多少个是正常邮件即可 , 不过最好多找几个 , 算下平均值 , 这就是所谓的先验概率 。 P(D|f+) 表示是垃圾邮件 , 单词出现的概率 , 把D展开成N个单词就是: P(d1,d2,d3…dn|f+) 即垃圾邮件中 , 同时出现这些单词的概率 , 这个没办法求 , 假设这些单词之间是独立的 , 没有什么关联关系 , 那么P(d1,d2,d3…dn|f+) 就可以扩展为P(d1|f+)* P(d2|f+)*P(d3|f+)….*P(dn|f+) 这个里面的独立假设 , 就是朴素贝叶斯的朴素来源 , 因为不是那么精确 , 所以叫朴素 。 计算一个单词在垃圾邮件中出现的概率就比较简单了 。
翻译一下: P(垃圾邮件|单词d1 , 单词d2…单词dn同时出现) =[ P(单词d1,单词d2…同时出现|是垃圾邮件)*P(是垃圾邮件)]/P(单词d1,单词d2…同时出现在一封邮件里面) 根据独立假设: P(垃圾邮件|单词d1 , 单词d2…单词dn同时出现) =[ P(单词d1出现|是垃圾邮件)*P(单词d2出现|是垃圾邮件)*P(单词d3出现|是垃圾邮件)…*P(是垃圾邮件)]/P(单词d1,单词d2…同时出现在一封邮件里面) 其实我们在判断是否是垃圾邮件的时候 , 并一定要计算出来P(单词d1,单词d2…同时出现在一封邮件里面) , 这个也无法精确计算 , 我们只需要比较垃圾邮件的概率和非垃圾邮件的概率 , 取大的那一个就可以了 , 那么久只要计算: P(垃圾邮件|单词d1 , 单词d2…单词dn同时出现) =[ P(单词d1出现|是垃圾邮件)*P(单词d2出现|是垃圾邮件)*P(单词d3出现|是垃圾邮件)…*P(是垃圾邮件)] P(正常邮件|单词d1 , 单词d2…单词dn同时出现) =[ P(单词d1出现|是正常邮件)*P(单词d2出现|是正常邮件)*P(单词d3出现|是正常邮件)…*P(是正常邮件)]
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
