本节书摘来异步社区《机器学习项目开发实战》一书中的第2章,作者:【美】Mathias Brandewinder(马蒂亚斯·布兰德温德尔),更多章节内容可以访问云栖社区“异步社区”公众号查看
第2章 垃圾邮件还是非垃圾邮件?
机器学习项目开发实战
用贝叶斯定理自动检查垃圾邮件
如果你使用电子邮件(我想你一定用),有可能每天都在工作中看到机器学习。你的电子邮件客户端可能包含某种垃圾邮件过滤机制,从收到的邮件中自动识别令人厌烦的推销材料,然后小心地将它们发送到“垃圾邮件文件夹”。这个功能免去了人工逐个删除这些邮件的麻烦,还可以防止你不小心点击有害链接,是机器学习实施得当令生活更美好的典型范例。计算机擅长执行重复性任务,并且做得很彻底。通过自动进行乏味的活动,避免我们犯错,使人们可以专注于更有趣、更值得深思的活动。
垃圾邮件检测是机器学习的极好例证,也是分类概念的权威示例。我们必须将给定的一组电子邮件分为两类:垃圾邮件(应该直接进入垃圾箱的有害信息)或者非垃圾邮件(我们希望阅读的有效信息)。这一工作还有另一个有趣之处:和第1章处理的数字识别问题不同,垃圾邮件检测所用的数据都是文本,而不是数字形式。在数字世界中,大部分可用材料是文本而不是结构清晰的数字表格,因此理解处理方式十分重要。
在本章中,我们将从头开始构建一个垃圾邮件检测引擎,然后用这个例子说明几种有用的技术和思路,我们将:
确定处理文本的方法。从计算机的角度看,原始文本文档就是字符的随机组合。我们将看到如何将一个文本块转换为计算机所能处理的标记(Token),从中提取特征(也就是将原始数据转换为信息量更大、更有用的新属性——“特征”)。
了解贝叶斯定理——这个简单而强大的数学公式可以量化所包含的新信息,以更新我们对不确定事件的评估。作为直接的应用,我们将实现一个简单贝叶斯分类器——使用词汇频度确定文档类型的算法。
讨论理解数据以正确解读结果及其质量的重要性,并阐述即使不修改算法本身,仅从数据集提取新特征就能给模型的预测能力带来多么显著的提高。
我们将首先专注于实现一个分析文本文档,确定其所属类别的算法。一旦有了这个工具,我们将把注意力转向数据集,看看仔细检查所拥有的数据如何帮助我们找出新特征,显著改善预测的质量。