机器学习概论(1):识别垃圾邮件

2018-03-28  本文已影响0人  wenj1997

机器学习概论作业一 Naïve Bayes classifier
中文邮件数据集来自https://plg.uwaterloo.ca/~gvcormac/treccorpus06/

实验目的

实现方法

约定

符号 含义
S 垃圾邮件
H 非垃圾邮件
w(或wi) 单词
P(S) 邮件是垃圾邮件的概率(在这里是先验概率)
P(H) 邮件不是垃圾邮件的概率(在这里是先验概率)
P(S|w1w2...wn) 邮件包含w1,w2,...,wn时,是垃圾邮件的概率
P(H|w1w2...wn) 邮件包含w1,w2,...,wn时,不是垃圾邮件的概率
P(w1w2...wn|S) 一封垃圾邮件包含w1,w2,...,wn的概率
P(H|w1w2...wn) 一封非垃圾邮件包含w1,w2,...,wn的概率
参数 含义
DIVIDER_P 如果P(S|w1w2...wn) > DIVIDER_P则认为是垃圾邮件
SPAM_P P(S),邮件是垃圾邮件的概率(在这里是先验概率)
HAM_P P(H),也即1-P(S),邮件是非垃圾邮件的概率(在这里是先验概率)
MAX_NUM 为了降低计算复杂度,在计算垃圾邮件的后验概率时,仅选取MAX_NUM个出现最多的词参与计算
ALPHA Smoothing参数

概述

根据朴素贝叶斯方法,我们知道,

在识别垃圾邮件这个问题中x就是单词,y代表垃圾邮件或非垃圾邮件。那么,我们可以把原始公式改写成,

利用这个公式,我们就可以得到一封含有w1,w2,...,wn这些单词的邮件是垃圾邮件的概率是多少。
如果假设每个单词的出现相互独立,那么上式可以进一步化简为便于运算的形式,

为了防止P(wi|S)=0的情况出现,将使用线性平滑,即

其中,M为单词数。

基本步骤

针对特殊情况的“优化”

Note:之所以加引号,是因为绝大多数还不如原始的情况好,不过不失为一种尝试。

实验结果

评价指标

真实类别 预测正类 预测反类
正类(垃圾邮件) TP FN
反类(非垃圾邮件) FP TN

测试结果

(测试集占全部数据的50%)

方法 Accuracy(%) Precision(%) Recall(%) F1(%)
无“优化” 98.44 98.16 99.51 98.83
识别教育邮箱 98.43 98.11 99.32 98.92
加入邮件Header中的分词内容 99.73 99.80 99.79 99.80
去除标点 98.43 98.26 99.38 98.82
仅使用高频词 96.57 95.77 99.22 97.46
最优 99.73 99.80 99.79 99.80

参数比较

实验总结

针对本次实验过程,做以下几点总结:

参考资料

上一篇 下一篇

猜你喜欢

热点阅读