① 运用一个词典,将邮件中所有可能出现的单词全部列举出来
② 将每封邮件表示成一个向量x,向量的长度就是词典的长度|V|,向量中的每个元素对应词典中的单词,元素取值非0即1,1表示该词在邮件中出现过,0表示没有出现过。
③ 垃圾邮件的分类目标是p(y|x),根据生成模型可以转换为计算先验概率p(y)和各个词汇的条件概率p(x|y),即
。
其中计算p(y)与p(x|y)具体过程如下:
假设、
和
,其中
。
先验概率:
正常邮件:
垃圾邮件:
④ 计算新样本x是垃圾邮件的概率p(y|x)
⑤将测试结果与实际结果进行比较,并记录下分类正确和分类错误的数目,最后计算得到准确率、精确率等。
例如:如下图有12封邮件,其中五封为垃圾邮件Spam 。其中七封为非垃圾邮件NSpam。
- 如上图所示,将所有邮件中出现'free'与'money'的标红。
- 计算先验概率:
- 各个词汇的条件概率p(x|y):
在垃圾邮件spam 邮件中,
出现'free'的概率为 、即;
根据条件概率,计算垃圾邮件中包含'free'单词的概率,
即
在非垃圾邮件Nspam 邮件中,
出现'free'的概率为 、 即
根据条件概率,计算垃圾邮件中包含‘free’单词的概率,
即
- 判断包含某个单词的邮件是否是垃圾邮件及其概率
包含'free'单词的邮件是垃圾邮件的概率:
包含'free'单词的邮件是非垃圾邮件的概率:
同理
包含'money'单词的邮件是垃圾邮件的概率:
包含'money'单词的邮件是非垃圾邮件的概率: