朴素贝叶斯算法
我们继续为大家介绍解决分类任务的算法,本章介绍一种概率模型贝叶斯分类器。贝叶斯分类器是一类分类算法的总称,这类算法均以贝叶斯定理为基础,因而统称为贝叶斯分类器。在介绍贝叶斯定理之前,我们先讲一个故事:从 2015 年到 2020 年期间,某位李姓女士凭借自己对航班是否会延误的分析,购买了大约 900 次飞机延误险并获得延误赔偿,累计获得理赔金高达 300 多万元,真可谓“航班延误,发家致富”。当然,这套骚操作本身不是我们探讨的重点,我们的问题是:李女士是怎么决定要不要购买延误险的呢?航班延误最主要的原因就是天气(包括起飞地和降落地的天气)、机场(起飞机场和降落机场)和航司,由于李女士有过航空服务类工作的经历,有获得机场和航司相关数据的途径(天气数据相对更容易获取),集齐相关的数据再利用贝叶斯定理,她可以能够计算出当前航班延误的概率并决定是否购买延误险。接下来,李女士通过虚构不同身份购票并大量投保(每个身份购买 30 到 40 份延误险),这样一旦航班延误,她就可以向保险公司进行索赔。那么,我们要探讨的就是贝叶斯定理是如何利用现有数据计算出航班延误的概率。
贝叶斯定理
贝叶斯定理是概率论中的一个重要定理,它描述了如何从主观经验或已知事实出发,通过收集到的样本数据(证据)来更新对事件发生概率的认知(信念)。贝叶斯定理的数学表达式为:
P ( A ∣ B ) = P ( B ∣ A ) P ( B ) ⋅ P ( A ) P(A \vert B) = \frac{P(B \vert A)}{P(B)} \cdot P(A) P(A∣B)=P(B)P(B∣A)⋅P(A)
其中, P ( A ) \small{P(A)} P(A) 是事件 A \small{A} A 发生的先验概率,我们可以理解为已知事实或主观经验(主观概率); P ( B ∣ A ) \small{P(B \vert A)} P(B∣A) 是在事件 A \small{A} A 发生的条件下事件 B \small{B} B 发生的 条件概率,通常也称之为似然性(likelihood), P ( B ) \small{P(B)} P(B) 是事件 B \small{B} B 发生的(全)概率,这两个概率可以通过我们收集到的样本数据(证据)获得; P ( A ∣ B ) \small{P(A \vert B)} P(A∣B) 是在事件 B \small{B} B 发生的条件下事件 A \small{A} A 发生的条件概率,即收集到样本数据后对事件 A \small{A} A 发生概率的重新认知,称之为后验概率。贝叶斯定理告诉我们一个重要的事实:可以从已知的事实或主观经验出发,通过收集到的证据来更新我们对某个事件发生概率的认知,简单的说就是可以通过已知的事实和收集的证据来推断出未知的真相。
回到上面李女士购买飞机延误险的例子,假设本次航班是从成都双流国际机场飞往北京首都国际机场,执飞的航空公司是四川航空,起飞地天气为雨天(小雨),温度为8°C,东北风2级,降落地天气为晴天,温度4°C,西北风2级。为了更简单的让大家理解贝叶斯定理,我们对这里的条件稍作简化,只保留天气中的降水信息,暂不考虑温度和风速等其他因素,对应到上面的贝叶斯定理有:
P ( 延误 ∣ 起飞机场 = 双流 , 到达机场 = 首都 , 起飞天气 = 小雨 , 降落天气 = 晴天 , 执飞航司 = 川航 ) = P ( 起飞机场 = 双流 , 到达机场 = 首都 , 起飞天气 = 小雨 , 降落天气 = 晴天 , 执飞航司 = 川航 ∣ 延误 ) P ( 起飞机场 = 双流 , 到达机场 = 首都 , 起飞天气 = 小雨 , 降落天气 = 晴天 , 执飞航司 = 川航 ) ⋅ P ( 延误 ) P(延误 \vert 起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航) = \\\\ \frac{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航 \vert 延误)}{P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航)} \cdot P(延误) P(延误∣起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航)=P(起飞机场=双流,到达机场=首都,起飞天气=小雨,降落天气=晴天,执飞航司=川航)P(起飞机场=<