朴素贝叶斯算法是一种简单有效的分类算法,被广泛运用在文本分类与垃圾邮件、信息过滤中。
朴素贝叶斯算法基于贝叶斯定理与条件独立的假设,其中“朴素”指的就是条件独立假设。
贝叶斯定理简单来说就是这样一条概率公式:
为了更好理解,我们代入特征与分类的概念到这个公式中,假设B指的是样本的某个类别C, A指的是样本某个特征 ,那么这个概率公式就变成了
对式子做以下解释:
接下来,我们把样本的特征展开来,由 变成 ,变成多个特征,那么公式就演化成了:
如果我们想求某个特征下的样本属于类别C的条件概率,那将上述式子变换一下就变成了:
这时,我们假设每个特征都是条件独立的,那么式子就变成了
实际中,我们只关心分式中分子的部分,由于分母所代表的特征在样本的概率,并不依赖于类别C,对于其他类别这个概率都是一样的,所以我们可以忽略掉它。
所以求某个样本属于C的概率,最终趋向于:
我们通过以下步骤来实现一个现实可用的垃圾邮件过滤器
- 根据数据集产生训练集与测试集
- 提取文本数据,对文本进行分词,过滤停用词、数字、特殊符号。
- 统计词汇,产生词典
- 训练分类器
我们使用 滑铁卢大学 提供的中文邮件数据集,数据集共有超过60000封中文邮件,并且已经做好了标注。 停用词列表使用 github 上整理的停用词库,中文停用词 。 我们选用其中30000封中文邮件,29400封用作训练集,600用作测试集。
最后统计得出对测试集的预测准确率高达0.9766666666666667。