前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >朴素贝叶斯算法介绍及优化

朴素贝叶斯算法介绍及优化

作者头像
Awesome_Tang
发布2018-12-14 11:17:17
2.5K0
发布2018-12-14 11:17:17
举报
文章被收录于专栏:FSocietyFSociety

朴素贝叶斯(Naive Bayes

贝叶斯公式

朴素贝叶斯算法其实原理很简单,要理解朴素贝叶斯算法我们首先得知道贝叶斯公式:

P(B|A) = \frac{P(A|B)*P(B)} {P(A)}
P(B|A) = \frac{P(A|B)*P(B)} {P(A)}

其中

P(B|A)
P(B|A)

是在A发生的情况下B发生的可能性。

公式就不在这推导了,理解起来也很简单的,画个venn图就行,我们接下来通过例子来看贝叶斯公式是如何应用在分类问题中的。 假如我们现在有如下样本:

颜色

水果

水果A

水果B

水果A

水果B

水果B

水果B

现在我们已知一个水果颜色为红色,那么他是水果A还是水果B呢? 根据贝叶斯公式我们有如下:

P(水果A|红色) = \frac{P(红色|水果A)*P(水果A)} {P(红色)}
P(水果A|红色) = \frac{P(红色|水果A)*P(水果A)} {P(红色)}
P(水果B|红色) = \frac{P(红色|水果B)*P(水果B)} {P(红色)}
P(水果B|红色) = \frac{P(红色|水果B)*P(水果B)} {P(红色)}

我们需要判断的就是

P(水果A|红色)
P(水果A|红色)

P(水果B|红色)
P(水果B|红色)

谁大一些,谁的概率大我们预测谁。 由于分母都一样,我们只需计算:

P(红色|水果A)*P(水果A) = \frac{2}{2}*\frac{2}{6}=\frac{1}{3}
P(红色|水果A)*P(水果A) = \frac{2}{2}*\frac{2}{6}=\frac{1}{3}
P(红色|水果B)*P(水果B) = \frac{1}{4}*\frac{4}{6}=\frac{1}{6}
P(红色|水果B)*P(水果B) = \frac{1}{4}*\frac{4}{6}=\frac{1}{6}

那么我们判断这个红色的水果是水果A。 通俗点理解,当我们已知一个条件的时候,我们去看当这个条件发生的时候哪个类别的概率大,我们就预测为该类别。

何为朴素

我们刚刚的例子中只有一个特征条件,但当特征条件多的时候(一个简单的文本分类都会上万维),上述方法就行不通了,那该怎么办? Be Naive!!!

P(B|x_1,x_2) = \frac{P(x_1,x_2|B)*P(B)} {P(x_1,x_2)}
P(B|x_1,x_2) = \frac{P(x_1,x_2|B)*P(B)} {P(x_1,x_2)}

但当

x_1,x_2
x_1,x_2

是两个相互独立的条件的时候,我们就会有如下公式:

P(B|x_1,x_2) = \frac{P(x_1|B)*P(x_2|B)*P(B)} {P(x_1)*P(x_2)}
P(B|x_1,x_2) = \frac{P(x_1|B)*P(x_2|B)*P(B)} {P(x_1)*P(x_2)}

所以朴素贝叶斯算法的前提条件就是假设各个条件都是相互独立的,这也是朴素贝叶斯算法的朴素之处。 整个逻辑与上面的一致,分别计算当条件发生时各个类别的概率,哪个最大选哪个,在此就不赘述了。

优化

  • 平滑处理 当待预测样本中出现了训练集中未出现的特征的时候(文本分类中非常常见),应用上述公式,不管是哪个类别,最后结果都是0,So为了增加算法的泛化能力,我们会统一给每个特征值加上一个固定值
\alpha
\alpha

\alpha
\alpha

不宜过大,当

\alpha=1
\alpha=1

的时候我们称之为拉普拉斯平滑

针对文本分类

对于朴素贝叶斯算法,其实就是一个简简单单的公式,所以在算法上优化的空间几乎没有,为了提升准确率,更多的时候我们需要在特征处理上下功夫。

  • 关键字提取 对于一段文字,里面其实很多词语对结果是没有影响的,譬如‘的’,‘时候’,‘一个’等等,我们可以提前剔除掉这部分词语,通用的关键词提取方法有TF-IDF/TextRank等,当然你也可以建立自己的关键词库来提取。
  • 增加权重 譬如现在有三个词[a,b,c],很多时候这个三个词语是有区别的,但是单纯的统计词频是没办法做区分的,因此多数时候,我们会选择通过TF-IDF值来代替词频。
  • 词语组合 很多时候单个词语并不能确定一个问题,譬如我们现在需要判断一个文本是不是脏话,‘草’和‘你妹’这两个词单独出现的时候并不能说明问题,但是当两个词共同出现的时候,那就可以确定这个文本是脏话了。 So我们在处理特征时候可以增加各个词语之间的组合,二元或者三元就足够了,效果会好很多。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 朴素贝叶斯(Naive Bayes)
    • 贝叶斯公式
      • 何为朴素
      • 优化
        • 针对文本分类
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档