
64
|
第
4
章
通过交叉验证最小化误差
在这个时候,我们需要衡量模型的工作情况。为此,我们需要采用之前下载的数据进
行一个交叉验证测试。在这个测试中,我们只需要测量误报率,然后根据它来决定我
们是否需要调整模型。
减少误报
到目前为止,我们建立模型的目标是最小化错误率。这个错误率可以简单表示为错误
分类的数量除以总分类数量。在大多数情况下,我们要的正是这个,但是在垃圾邮件
过滤器中它不是我们所要优化的。我们只是希望尽量减少误报率。误报,也被称为
I
类型误差,它是指模型错误地预测了一个正面的结果,但其实它应该是负面的。
在我们的案例中,如果模型判断一个邮件是垃圾邮件,但是事实上它不是,那么用户
将会丢失邮件。我们希望垃圾邮件过滤器尽量能减少误报。另外,如果我们的模型错
误地把垃圾邮件预测为正常邮件,我们不会太在意。
我们想要最小化的只是垃圾邮件误报数除以总分类。我们也会测量漏报,但是这个数
据没那么重要,因为我们是尽量减少垃圾邮件进入收件箱而不是要消除它。
为了实现这一点,我们首先需要从数据集中获取一些信息。接下来我们会进行详细介
绍。
构建两个折叠
在垃圾邮件训练数据中有一个叫作
keyfile.label
的文件。它包含了该文件是垃圾邮件
还是正常邮件的信息。使用它,我们可以构建交叉验证脚本。首先,我们从设置开始,
包括导入我们使用的包以及一些
IO
和正则表达式库。
classifications. In most cases, this is exactly what we want, but in a spam filter ...