构建垃圾邮件分类器
    优先处理什么
    系统设计实例:
    给定一组电子邮件数据,我们可以为每封电子邮件构建一个向量。 这个向量中的每个条目代表一个词。 该向量通常包含 10,000 到 50,000 个条目,这些条目是通过在我们的数据集中查找最常用的词而收集的。 如果要在电子邮件中找到一个词,我们会将其相应的条目分配为 1,否则如果找不到,该条目将为 0。一旦我们准备好所有的 x 向量,我们就训练我们的算法,最后, 我们可以用它来分类电子邮件是否是垃圾邮件。
    Part 11 机器学习系统设计 - 图1
    那么你如何花时间来提高这个分类器的准确性呢?
    收集大量数据(例如“蜜罐”项目但并不总是有效)
    开发复杂的功能(例如:在垃圾邮件中使用电子邮件标题数据)
    开发算法以不同的方式处理您的输入(识别垃圾邮件中的拼写错误)。
    很难说哪个选项最有帮助。

    误差分析
    解决机器学习问题的推荐方法是:
    从一个简单的算法开始,快速实现它,并尽早在您的交叉验证数据上对其进行测试。
    绘制学习曲线以确定更多数据、更多特征等是否有帮助。
    手动检查交叉验证集中示例的错误,并尝试发现大多数错误发生的趋势。
    例如,假设我们有 500 封电子邮件,而我们的算法错误分类了其中的 100 封。 我们可以手动分析这 100 封电子邮件,并根据它们的类型对它们进行分类。 然后,我们可以尝试提出新的线索和功能,以帮助我们正确地对这 100 封电子邮件进行分类。 因此,如果我们错误分类的大多数电子邮件都是试图窃取密码的电子邮件,那么我们可以找到这些电子邮件特有的一些特征并将它们添加到我们的模型中。 我们还可以看到根据词根对每个词进行分类如何改变我们的错误率:
    Part 11 机器学习系统设计 - 图2
    将错误结果作为单个数值获取非常重要。 否则很难评估算法的性能。 例如,如果我们使用词干提取,也就是将不同形式(fail/failing/failed)的同一个词当作一个词(fail)处理,得到3%的错误率而不是5%,那么我们肯定要加上 它到我们的模型。 但是,如果我们尝试区分大小写字母并最终得到 3.2% 的错误率而不是 3%,那么我们应该避免使用这个新功能。 因此,我们应该尝试新事物,获得错误率的数值,并根据我们的结果决定是否要保留新特征。

    https://www.yuque.com/preview/yuque/0/2020/pdf/1077334/1585647825289-3911a564-9c92-4842-86db-9ea60c3267ea.pdf?from=https%3A%2F%2Fwww.yuque.com%2Fbooks%2Fshare%2F691358c9-4a47-442f-b1c1-193bcf9cba04%2Fpki5gw