垃圾邮件过滤成功,朴素贝叶斯算法科普,奥秘揭晓?
摘要:引子 你的邮箱是否经常遭遇一堆邮件的狂轰滥炸?看到未读邮件数量突破四位数大关是否有种无力感?要命的是其中很多都是垃圾邮件,毫无价值,可你又不得不一个个地点开确认,以免错过重要邮件。 那么你很幸运,今天我们将揭秘垃圾邮件过滤系统背后的数学原理
引子
你的邮箱是否经常遭遇一堆邮件的狂轰滥炸?看到未读邮件数量突破四位数大关是否有种无力感?要命的是其中很多都是垃圾邮件,毫无价值,可你又不得不一个个地点开确认,以免错过重要邮件。
那么你很幸运,今天我们将揭秘垃圾邮件过滤系统背后的数学原理,高中生就能学会,超简单的哦!(๑•̀ㅂ•́)و✧
良心知识点回顾
我们首先抬起右手与胸齐平(双手也不介意),摸摸对自己高中数学老师的良心 (如果有的话 ,问问自己还记不记得条件概率这玩意(贝叶斯就算了,难度过高 ´﹏`)
好吧这都无所谓,我们有良心的知识点回顾供我们良心地回顾知识点(
所谓条件概率,符号 \(P(B|A)\),表示在 \(A\) 发生的前提下 \(B\) 也发生的概率
想想我们直觉很容易接受的古典概型,\(N\) 表示所有事情的数量,\(n(A)\) 表示 \(A\) 事件的数量,那么 \(P(A)= \frac{n(A)}{N},P(A|B)= \frac{n(A \cap B)}{n(B)} = \frac{P(A \cap B)}{P(B)}\)
同样地我们看看 \(P(B|A)= \frac{n(A \cap B)}{n(A)} = \frac{P(A \cap B)}{P(A)}\)
注意到 \(P(A|B)\) 与 \(P(B|A)\) 的表达式都有一个共同的 \(P(A \cap B)\) !
那就连起来看
\[P(A\cap B) = P(A|B) \cdot P(B) = P(B|A) \cdot P(A)
\]
选定 \(P(A|B)\) 为我们研究的主体对象,\(P(B|A)\) 为得到的关键信息,写成
\[P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}
\]
这就是伟大的贝叶斯公式了!
๑•́ ₃ •̀๑
(通关 大捷 bushi
好吧也差不多了
想想这个公式要表达什么
举个栗子:天气预报告诉你今天有 \(50\%\) 的概率(对应 \(P(A)\))会下雨,然后你惊恐地发现地面是湿的 (对应 \(B\) 事件),而你又知道下雨的话地面多半是湿的(对应 \(P(B|A)\),上面这些都在右边式子),你观察到的这个新的情况 (事件 \(B\)) 强化了今天下雨的可能性,也就是说,在地面变湿的新情况下,今天会下雨的可能性变成了 \(P(A|B)\)。
一言以蔽之,新的信息可以更新旧的判断,让判断更接近真相
在这里说明一下严谨的概念定义,当然并不重要(科普嘛)
\(P(A)\) 叫做先验概率,就是没有新信息之前我们的判断
\(P(B)\) 是证据,观察到的新信息
\(P(B|A)\) 称为似然度,现实中的由因到果,即已经发生了A(下雨啦),然后 \(B\)(地面湿了)发生的概率
\(P(A|B)\) 就是后验概率,即我们要更新的判断
诶?这过程好像有点像我判断垃圾邮件:一开始不确定,然后看到 “免费” 二字,再看到 “中奖” ,甚至又看到 “点击链接” ,绷不住了再见了……
经验告诉我们,垃圾邮件中这些词极有可能会出现,出现这些词的极有可能是垃圾邮件
就这样我们看到的新信息逐步强化了我们对垃圾邮件判断的准确性
朴素贝叶斯算法
完整地梳理一遍
\[P(\text{垃圾|词})=\frac{P(\text{词|垃圾})\cdot P(\text{垃圾})}{P(\text{词})}
\]
首先我们得有一些经验,从以往的一堆邮件中得知 \(P(\text{垃圾 or 正常}) = \frac{n(\text{垃圾 or 正常})}{n(\text{总邮件数})}\),即先验概率
然后从当前邮件中扒拉出一堆词 \(w_1,...,w_n\),
算这两个玩意 \(P(\text{垃圾}|w_1,...,w_n),P(\text{正常}|w_1,...,w_n)\)
比比谁大作判断
当然 \(P(\text{词})\) 都一样,于是只要算 \(P(w_i|c)\),即如果邮件是 \(c\) 这种类型(正常或垃圾),那么出现 \(w_i\) 这个词的概率,这个怎么算我们稍后再说
朴素贝叶斯中,我们认为
\[P(c|w_1,...,w_n)=\frac{P(c)P(w_1,...,w_n|c)}{P(w)}=\frac{P(c)\prod_{i=1}^n P(w_i|c)}{P(w)}
\]
也就是说假设 \(w_i\) 相互独立。虽然这样的假设往往是错的,但最终判断的结果却很好。因为我们只要比比概率相对大小根本不关心概率究竟是多少,只要定性做出分类判断而已。
