本文重点
在多次课程的学习中,我们已经掌握了贝叶斯算法。本节课程将介绍一些应用贝叶斯算法的工程技巧,探讨如何使该算法运行得更加高效。
假设在垃圾邮件中出现某些词语的概率为:
而在正常邮件中的概率为:
当多个概率相乘时,计算效率较低。因此,我们可以采用对数转换,将乘法转换为加法,从而提高效率。
在训练阶段,可以预先计算出所有logP值,并将其存储在一个大型哈希表中。在实际分类时,可以直接从哈希表中提取所需的对数值,然后进行加法运算。这种方法将分类所需的时间转移到了训练阶段,从而大大提高了实时处理的速度。
logC渣滓 = logp(恭喜|渣滓邮件) + logp(您|渣滓邮件) + logp(的|渣滓邮件) + logp(条件|渣滓邮件) + logp(已|渣滓邮件) + logp(达标|邮件) + logp(特|渣滓邮件) + logp(告诉|渣滓邮件) + logp(您|渣滓邮件) + logp(央求|渣滓邮件) + logp(金卡|渣滓邮件) + logp(资历|渣滓邮件)
logC正常 = logp(恭喜|正常邮件) + logp(您|正常邮件) + logp(的|正常邮件) + logp(条件|正常邮件) + logp(已|正常邮件) + logp(达标|正常邮件) + logp(特|正常邮件) + logp(告诉|正常邮件) + logp(您|正常邮件) + logp(央求|正常邮件) + logp(金卡|正常邮件) + logp(资历|正常邮件)
通过比较logC渣滓与logC正常,可以确定邮件的类别。具体来说,可以计算logC渣滓与logC正常之间的比值,从而判断邮件是否为垃圾邮件。
同样地,可以提前计算出logp(恭喜|渣滓邮件) / p(恭喜|正常邮件)等值,以便在分类时直接使用。