programming collective intelligence读书笔记五

第六章讲的是document filtering技术
用于反垃圾邮件,自动给邮件分类,自动给文章分类等等
几个术语,document文章,feature特征,classifier分类
每个feature对于不同的classifier有不同的probability

naive bayesian classifier
这个算法很简单,计算量小,不过据说很实用
简单的认为word出现的概率是独立的,可以直接相乘,这样算出来的概率和真实的
概率是不一致的,不过基于这样同一个假定前提下算出来的feature概率之间可以进行比较
(我算不出词语B出现的真实概率,但是算得出B比A更多的出现在垃圾信中)
这个算法超级简单
P(B)*P(A/B)=P(AB)=P(B/A)*P(A)
两边除以P(B)=>P(A/B)=P(B/A)*P(A)/P(B)
令A=category,即分类,B=document,即文章,P(A/B)就是一个文章在某个分类的概率...

P(category/document)=P(document/category)*P(category)/P(document)

因为假设变量都是独立的,P(document/category)=∑P(word/category),就是简单的把一篇文章所有词语在那个分类里面的概率都相乘
P(category)就是那个分类在总分类里面的分量,P(document)可以无视,因为都一样,只是个系数
这样这个算法就ok了,笼统上来看,这个算法就是统计所有的垃圾邮件和好的邮件,然后看一篇文章和垃圾邮件的相似性
有一定的误判比例,但是threshold控制的好,应该能过滤掉绝大部分的垃圾邮件...只是个参数的问题

the fisher method
主要目的是算出:P(category/feature),就是 有feature的属于category的document/有feature的document
对于一个给定feature_v,category,normalize方法是P(category/feature_v)/∑P(category/feature_i)
然后算一个category所有独立feature的总概率
这里书上算法有点技巧...我不太明白,先相乘,再求log,然后用x平方分布逆函数来求这类category里面
出现这个特定feature的概率...看书上的示范代码结果是挺不错的















--------------
chenjinlai
2008-05-08

你可能感兴趣的:(算法,读书)