电子常识
贝叶斯算法描述及实现根据朴素贝叶斯公式,每个测试样例属于某个类别的概率= 所有测试样例包含特征词类条件概率P(tk|c)之积* 先验概率P(c) 在具体计算类条件概率和先验概率时,朴素贝叶斯分类器有两种模型:
(1) 多项式模型( multinomial model ) –以单词为粒度类条件概率P(tk|c)=(类c下单词tk在各个文档中出现过的次数之和+1)/(类c下单词总数+训练样本中不重复特征词总数)先验概率P(c)=类c下的单词总数/整个训练样本的单词总数
(2) 伯努利模型(Bernoulli model) –以文件为粒度类条件概率P(tk|c)=(类c下包含单词tk的文件数+1)/(类c下文件总数+2) 先验概率P(c)=类c下文件总数/整个训练样本的文件总数本分类器选用多项式模型计算,根据斯坦福的《Introduction to Information Retrieval 》课件上所说,多项式模型计算准确率更高。
贝叶斯算法的实现有以下注意点:
1.计算概率用到了BigDecimal类实现任意精度计算;
2.用交叉验证法做十次分类实验,对准确率取平均值;
3.根据正确类目文件和分类结果文计算混淆矩阵并且输出;
4. Map《String,Double》 cateWordsProb key为“类目_单词”, value为该类目下该单词的出现次数,避免重复计算。
贝叶斯算法实现类如下
测试结果显示14个测试实例中有13个分类是正确的,正确率为93%,说明算法能够给出一个准确的预测与分类,但是算法还需改进以提高正确率。
改进的可选方法之一:为避免单个属性值对分类结果的权重过大,例如当某属性值在某一类中出现0次时,该属性值就决定了测试实例已经不可能属于该类了,这就可能会造成误差,因此在计算概率时可能进行如下改进:将原先的P(Xk|Ci)=|Xk| / |Ci| 改为P(Xk|Ci)=(|Xk|+mp) / (|Ci|+m),其中m可设定为训练元组的个数,p为等可能假设的先验概率
全部0条评论
快来发表一下你的评论吧 !