动机:维度灾难#
对于 d 维特征向量 x=(x1,x2,…,xd)T,要直接估计联合条件概率 P(x1,x2,…,xd∣ωi),参数空间随 d 呈指数级增长:
- 若每个特征 xj 为二值变量(取值 {0,1}),d 个特征的联合分布有 2d−1 个独立参数需估计
- 若每个特征 xj 取 k 个离散值,则需估计 kd−1 个独立参数
- d=10,k=5 时,需约 510≈107 个参数——远超实际训练样本数
即使每个特征为二值,d=30 时已有 230≈109 种组合,需要指数级数量的样本才能可靠估计每种组合的概率,这在实际中根本不可能。这就是所谓的维度灾难(the curse of dimensionality)。
举个例子看懂怎么用#
先看贝叶斯公式:
P(ωi∣x)=P(x)P(x∣ωi)P(ωi) 假设要做一个垃圾邮件识别器,则类别为 ω1(垃圾邮件)和 ω2(非垃圾邮件),特征向量 x 为邮件中是否包含某些关键词的二值向量,例如:
x=[x1,x2,x3]T=(包含“免费”,包含“中奖”,包含“优惠”)T 现在有一封邮件,其中包含“免费”和“优惠”,但不包含“中奖”,则 x=[1,0,1]T。
假设同时我们有一批邮件样本数据集,经过统计得到以下数据:
- 先验概率(垃圾邮件和非垃圾邮件的占比)P(ω1)=0.4,P(ω2)=0.6
- 条件概率(垃圾邮件中出现各个词的占比)P(x1=1∣ω1)=0.8,P(x2=0∣ω1)=0.7,P(x3=1∣ω1)=0.9
- 条件概率(非垃圾邮件中出现各个词的占比)P(x1=1∣ω2)=0.2,P(x2=0∣ω2)=0.3,P(x3=1∣ω2)=0.1
现对其进行分类,计算其属于垃圾邮件的后验概率:
P(ω1∣x)=P(x)P(x∣ω1)P(ω1)=P(x)P(x1=1,x2=0,x3=1∣ω1)P(ω1) 因为朴素贝叶斯假设条件独立性,所以:
P(x1=1,x2=0,x3=1∣ω1)=P(x1=1∣ω1)P(x2=0∣ω1)P(x3=1∣ω1)=0.8×0.7×0.9=0.504 则其属于垃圾邮件的后验概率为:
P(ω1∣x)=P(x)0.504×0.4=P(x)0.2016 同理得到其属于非垃圾邮件的后验概率:
P(ω2∣x)=P(x)P(x∣ω2)P(ω2)=P(x)0.2×0.3×0.1×0.6=P(x)0.0036 P(x) 不需要计算,因为它是共用的,不影响比大小结果,除非需要计算具体概率:
P(x)=P(x∣ω1)P(ω1)+P(x∣ω2)P(ω2)=0.2016+0.0036=0.2052 则:
P(ω1∣x)=0.20520.2016≈0.9825,P(ω2∣x)=0.20520.0036≈0.0175 这封邮件属于垃圾邮件的概率为98.25%,属于非垃圾邮件的概率为1.75%,因此可以判定这封邮件是垃圾邮件。