每天五分钟机器学习:朴素贝叶斯算法中有哪些工程技巧?
作者头像
  • 看航空
  • 2020-05-11 13:00:55 8

本文重点

在多次课程的学习中,我们已经掌握了贝叶斯算法。本节课程将介绍一些应用贝叶斯算法的工程技巧,探讨如何使该算法运行得更加高效。

取对数

假设在垃圾邮件中出现某些词语的概率为:

  • C渣滓 = p(恭喜|渣滓邮件)p(您|渣滓邮件)p(的|渣滓邮件)p(条件|渣滓邮件)p(已|渣滓邮件)p(达标|邮件)p(特|渣滓邮件)p(告诉|渣滓邮件)p(您|渣滓邮件)p(央求|渣滓邮件)p(金卡|渣滓邮件)p(资历|渣滓邮件)

而在正常邮件中的概率为:

  • C正常 = p(恭喜|正常邮件)p(您|正常邮件)p(的|正常邮件)p(条件|正常邮件)p(已|正常邮件)p(达标|正常邮件)p(特|正常邮件)p(告诉|正常邮件)p(您|正常邮件)p(央求|正常邮件)p(金卡|正常邮件)p(资历|正常邮件)

当多个概率相乘时,计算效率较低。因此,我们可以采用对数转换,将乘法转换为加法,从而提高效率。

  • logC渣滓 = logp(恭喜|渣滓邮件) + 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正常 = logp(恭喜|正常邮件) + logp(您|正常邮件) + logp(的|正常邮件) + logp(条件|正常邮件) + logp(已|正常邮件) + logp(达标|正常邮件) + logp(特|正常邮件) + logp(告诉|正常邮件) + logp(您|正常邮件) + logp(央求|正常邮件) + logp(金卡|正常邮件) + logp(资历|正常邮件)

通过比较logC渣滓与logC正常,可以确定邮件的类别。具体来说,可以计算logC渣滓与logC正常之间的比值,从而判断邮件是否为垃圾邮件。

  • logC渣滓 / logC正常 = logp(恭喜|渣滓邮件) / p(恭喜|正常邮件) + ...

同样地,可以提前计算出logp(恭喜|渣滓邮件) / p(恭喜|正常邮件)等值,以便在分类时直接使用。

    本文来源:图灵汇
责任编辑: : 看航空
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
叶斯朴素算法机器哪些分钟每天技巧工程学习
    下一篇