Programming Collective Intelligence笔记 - Document Filtering

1.1.       Filtering Spam

过滤广告的时候,我们第一步就是把文档进行分类,然后就是把文档进行分词,每个词都直接继承文档的分类。这样通过一些初始的训练之后,每个词都会出现在某一个或某几个分类当中。

这样我们就得到了某一个词出现在某一个分类当中的概率P(W/C) = WC中出现的次数/C中包含的文档数,W为词,C是分类。这个算法的一个缺点就是,当我们的初始训练文档比较少的时候,很容易就把一个词划分到某个分类当中。

一个改进的方法就是,加入一个初始估计值,和基于文档数的权值进行加权。

(weight*assumedprob + count*fprob)/(count+weight)

Assumeprob:初始估算值

Weight:初始估算值的权重

Count:该词在各个分类当中的总出现数。

FprobP(W/C)

 

1.2.       文档分类(Bayesian Classification

要进行文档分类,也就是要计算P(C/D)C是分类,D是文档,该概率的含义是,给定一个文档D,它属于某个分类C的概率是多少。通过贝叶斯公式,P(C/D) = P(D/C)*P(C)/P(D)。由于P(D)C无关,即在计算P(C1/D)P(C2/D)时,P(D)的值均一样,所以我们可以把P(D)省略。因此P(C/D) = P(D/C)*P(C)

P(D/C) = P(K1 & K2 & … KN / C)

如果D中的关键字(Kx)是互不相关的,那么P(K1 & K2 & … Kn / C) = P(K1/C)*P(K2/C)*…*P(Kn/C)。其中,每个P(Kx/C)的值上文已求出。P(C)表示随机选一个文本D,它属于C的概率,该值等于C中的文档数除以总的文档数。

 

1.3.       Filtering

在过滤文档时,我们可以分别计算P(Cx/D)的值,然后把最大的值作为文档的分类。但是,这样带来的一个问题是所有的分类都是等权重的。很多时候,过滤的原则是宁可放过一万也不能多删一个,为此,我们可以通过增加一个基于类别的权值实现。

假定P(C1/D)是最大值,我们可以为C1设定一个权值M,那么我们把D划分为C1的条件是,对于任意的Cx(Cx != C1),均有P(C1/D) > M * P(Cx/D)。通过增大M值,我们可以减少某个文档D被划为C1的概率。

 

1.4.       R.A.Fisher方法

该方法在计算P(K/C)时采用了与之前不一样的计算方式,P(K/C1) = P(K/C1) / [P(K/C1) + P(K/C2) + … + P(K/Cn)]。在计算P(D/C)时考虑到关键字之间的相关性,Fisher方法有一套另外的算法,具体可参考书。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值