1.案例:一个简单的垃圾邮件过滤器
①朴素贝叶斯算法假设
给定邮件不是垃圾邮件的条件下,其中的每个单词存在与否与其它单词无关。
②解决办法
③解决下溢出问题
概率相乘,多浮点数,需要转换。
④解决单词缺失问题
</br>
2.算法的实现
①将邮件解析为不同的单词:
lower => findall([a-z0-9']) => set
②计算单词出现在已做标记都的邮件训练中的次数:
返回一个字典,键为单词,值为列表[单词出现在垃圾邮件中的次数,单词出现在非垃圾邮件中的次数]
③利用平滑技术(解决单词缺失问题)将计数转换为估计概率。包含:
单词,单词出现在垃圾邮件中的概率,单词出现在非垃圾邮件中的概率
④利用假设和概率给邮件赋予概率:
解决下溢出问题内容
3.测试模型及改进
①测试结果(基于一个小测试)
查准率约为75%
查全率约为73%
②改进
1)更多考察邮件内容,而不只是主题
2)修改分类器,让其接受可选阈值,低于阈值不考虑
3)修改分类器,使其接受一个词干分析器查找同类词
4)添加其它特征值,比如数字
网友评论