一、概述
根据邮件中各单词的出现情况,对邮件进行是否为垃圾邮件的预测。
二、数据
1、样本数量
| 标签 | 垃圾邮件(1类) | 非垃圾邮件(0类) |
| 训练集 | 1046 | 2574 |
| 测试集 | 454 | 1098 |
2、数据说明
| Email No | the | to | … | ect | Prediction |
| Email 1 | 0 | 0 | … | 1 | 0 |
| Email 2 | 8 | 13 | … | 24 | 1 |
每一行为邮件,“Email No”列为收件人编号;“Prediction”列为邮件标签;其余3000列为特征(所有电子邮件中3000个最常用的单词),每一列代表该单词在每个邮件中的出现次数。
三、模型
1、朴素贝叶斯
(1)选用朴素贝叶斯的原因
1)(数据角度)单词与单词的组合可能性众多,特征与特征之间的相关性较小。
2)(算法角度)朴素贝叶斯基于数据的先验概率和后验概率,使得模型较为稳定,常用于文本分类且效果普遍较好。
(2)测试集效果
由于数据集正负两类样本数量不均衡,因此使用回召率和F1分数来作为模型评价指标。
| 标签 | recall | f1-score | f1-score 综合 |
| 垃圾邮件 | 96% | 91% | 94.72% |
| 非垃圾邮件 | 94% | 96% |
2、TF-IDF + 朴素贝叶斯
(1)选用TF-IDF的原因
如果单单考虑到单词在单个邮件的出现情况、而不考虑到单词在整体中的出现情况,那么一些无意义单词(比如the、to等)容易对结果造成干扰,因此使用TF-IDF进行特征转换。
(2)测试集效果
| 标签 | recall | f1-score | f1-score 综合 |
| 垃圾邮件 | 53% | 68% | 0.84% |
| 非垃圾邮件 | 99% | 91% |
由于正负两类的召回率差别较大,猜测可能是样本不均衡导致的。
3、欠采样
(1)欠采样
基于“2、TF-IDF + 朴素贝叶斯”的结果,调整后模型如下:
步骤1:确定要构造的分类器个数n(n大于0且为奇数);
步骤2:对训练集的“非垃圾邮件”类样本进行随机抽样,使得正负两类的样本一样多(欠采样),继而构造“TF-IDF + 朴素贝叶斯”分类器并对测试集进行预测;
步骤3:重复n次步骤2,因此测试集的每个样本有n个预测标签,对n个标签进行以下运算:
注:sⁱ为第i个分类器的预测标签;
1)label > 0.5:则最终预测结果为1(垃圾邮件);
2)label < 0.5:则最终预测结果为0(非垃圾邮件);
(2)测试集效果
| 分类器个数 | 标签 | recall | f1-score | f1-score 综合 |
| n = 1 | 垃圾邮件 | 100% | 86% | 0.91% |
| 非垃圾邮件 | 87% | 93% | ||
| n = 3 | 垃圾邮件 | 100% | 85% | 0.90% |
| 非垃圾邮件 | 85% | 92% | ||
| n = 5 | 垃圾邮件 | 100% | 85% | 0.90% |
| 非垃圾邮件 | 86% | 92% |
四、总结
1、测试集效果比较
对于TF-IDF特征转换,直接用朴素贝叶斯进行分类,效果更好。
对比没有对训练集进行欠采样的“TF-IDF + 朴素贝叶斯”模型,经过欠采样处理后效果更好。
2、问题
只考虑到单个单词的频次信息,忽略了单词与单词之间的联合信息。