十、机器学习系统的设计(Machine Learning System Design)
11.1 确定执行的优先级
在接下来的视频中,我将谈到机器学习系统的设计.这些视频将谈及在设计复杂的机器学习系统时,你将遇到的主要问题.同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议.
下面的课程的的数学性可能不是那么强,但是我认为我们将要讲到的这些东西是非常有用的,可能在构建大型的机器学习系统时,节省大量的时间.本周以一个垃圾邮件分类器算法为例进行讨论.
为了解决这样一个问题,我们首先要做的决定是如何选择并表达邮件特征向量\(x\).我们可以选择一个由100
个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量(出现为1
,不出现为0
),尺寸为100×1
.这里只是举例,实际用法最多的是采取训练集中出现频率最多的n
(10000 ~ 50000
)个单词,将其作为特征向量.
那么如何让分类器有高精准度和低错误率.
1.收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
2.基于邮件的路由信息开发一系列复杂的特征
3.基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
4.为探测刻意的拼写错误(把watch 写成w4tch)开发复杂的算法
在上面这些选项中,非常难决定应该在哪一项上花费时间和精力,作出明智的选择,比随着感觉走要更好.当我们使用机器学习时,总是可以"头脑风暴"一下,想出一堆方法来试试.实际上,当你需要通过头脑风暴来想出不同方法来尝试去提高精度的时候,你可能已经超越了很多人了.
我们将在随后的课程中讲误差分析,我会告诉你怎样用一个更加系统性的方法,从一堆不同的方法中,选取合适的那一个。因此,你更有可能选择一个真正的好方法,能让你花上几天几周,甚至是几个月去进行深入的研究.