前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用朴素贝叶斯进行文档分类(一)

使用朴素贝叶斯进行文档分类(一)

作者头像
用户6021899
发布2019-08-14 16:58:48
5860
发布2019-08-14 16:58:48
举报
  • 条件概率(conditional probability)

假设现在有7个小球,其中3个是红色的,4个是绿色的,如图所示。如果从7个小球中随机取出一个小球,且假设每个小球被选中的概率相等,那么取到红色小球的概率是多少?

由于取小球有7种可能,其中3种为红色,所以取到红色小球的概率为 3/7。我们是用 P(red)来表示取到红色小球的概率,其值可以通过红色小球的数目除以总的小球数目来得到。P(red) = 3/7。

类似地,取到绿色小球的概率 P(green)= 4/7 。

如果这7个小球放在A和B两个桶中,那么上述概率该如何计算?

要计算 P(red) 或者 P(green),事先知道小球在哪个桶中会不会改变结果?你应该已经想到计算从B桶中取到红色小球的概率的方法,这就是所谓的条件概率。假定计算的是从B桶中取到红色小球的概率,这个条件概率可以记作 P(red | bucketB) 。我们称之为”在已知小球出自B桶的条件下,取出红色小球的概率“。很显然, P(red | bucketB) = 1/3 。同理,

P(red | bucketA) = 2/4。

条件概率的计算公式如下:

P(red | bucketB) * P(bucketB) = P(red and bucketB) 式1

=> P(red | bucketB) = P(red and bucketB) / P(bucketB) 式2

我们来验证一下公式是否正确。首先,用桶B中红色石头的个数除以两个桶中小球总的个数,得到P(red and bucketB) = 1/7。其次,由于B桶中有3个石头,而总石头个数为7,于是 P(bucketB)=3/7。于是有:

P(red | bucketB) = P(red and bucketB) / P(bucketB)

=(1/7) / (3/7) =1/3 ,正确。虽然这个公式对应这个简单的例子来说有点舍近求远,但当存在更多特征时是非常有效的。用代数方法计算条件概率时,该公式也很有用。

  • 贝叶斯准则(Bayesian rule)

另一种有效计算条件概率的方法称为贝叶斯(Bayes)准则。贝叶斯准则告诉我们如果交换条件概率中的条件和结果(对于小球例子有

P(red|bucketB)*P(bucketB)=P(red and bucketB)

=P(bucketB|red)*P(red) ),

即已知P(w | c) =, 要求 P(c | w), 因为有 P(c | w)*P(w) = P(w | c)*P(c) ,

所以两边除以P(w)得: P(c | w) = P(w | c)*P(c) / P(w)。

其中P(c | w) 表示样本在特征向量为w的前提下属于类别c的概率, P(c)表示 分类c发生的概率,P(w)表示 特征向量为w的概率,P(w | c)表示类别c中特征向量为w的概率。

使用贝叶斯准则,可以通过已知的三个概率值来计算未知的概率值。

假设只有两个类别c1和c2,

如果 P(c1 | w) >P(c2 | w), 那么样本属于类别c1。

如果 P(c2 | w) >P(c1 | w), 那么样本属于类别c2。

后续会给出利用贝叶斯准则来计算概率并对数据进行分类的代码。

  • 朴素贝叶斯假设

由统计学知,如果每个特征需要N个样本才能得到好的分类概率,那么对于10个特征将需要N^10,对于包含1000个特征的词汇表(文档分类问题)将需要N^1000个样本。可以看到,所需要的样本数量会随着特征数据增大而迅速增长。

如果特征之间相互独立,那么样本数量就可以从 N^1000 减少到 1000*N 。所谓独立(independence) , 指的是统计学意义上的独立,即一个特征(文档分类问题中的单词)出现的可能性与其它任何特征(其它单词)的出现无关。

当然我们知道这种假设并不正确。例如,我们可以说“可爱的姑娘”,但基本不可能说“可爱的歹徒”,所以各个特征(单词)出现的概率并不相互独立。这个假设正是朴素贝叶斯分类器中朴素(naive)一词的含义。

如果将 P(w | c) 中的特征向量w 展开为一个个特征,P(w | c)展开为:P(w1,w2,w3...wn | c)。在朴素贝叶斯假设下有,

P(w1,w2,w3...wn | c) = P(w1 | c)*P(w2 | c)*P(w3 | c)*...*P(wn | c), 此展开式可以极大地简化计算过程。

朴素贝叶斯分类器中的另一个假设是,每个特征同等重要。其实这个假设也有问题。如果要判断留言板的留言是否得当,那么可能不需要看完1000个单词,而只需要看10~20个单词就足以做出判断了。尽管上述假设存在一些瑕疵,但朴素贝叶斯的实际分类效果却很好。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档