设计一个机器学习系统之前有哪些工作要做?

2021-05-13 11:15:46 浏览数 (1)

本文是吴恩达《机器学习》视频笔记第66篇,对应第6周第8个视频。

“Machine Learning System Design:——Prioritizing what to work on: Spam classification example”

01 笔记

接下来的几个视频会讲到设计一个机器学习系统的注意事项,给出一些对于这样一个复杂系统的设计建议。接下来几个视频讲解的数学内容不多,主要是一些设计经验的分享,可以让我们少走一点弯路。

以一个垃圾邮件分类的系统为例展开讲解。

需求分析

假设我们要构建的是一个有监督学习系统。

如下图所示,左边是一封垃圾邮件,右边是一封正常邮件。

这是众多训练样本中的两个,已经被打好了标签:垃圾邮件(y=0),正常邮件(y=1)。

我们知道了,这是一个二分类系统,最后邮件的取值要么是0(表示垃圾邮件)要么是1(表示正常邮件),就是y=0 OR 1。如果再有邮件的特征向量x,我们就可以想办法构建一个二分类的学习器(比如一个逻辑回归算法的分类器)。那邮件的特征向量x是什么呢?

有一种选择特征向量的办法,我们可以建立一个有100个垃圾邮件(或正常邮件)常用词的词库,通过这些词来判断一封邮件是否为垃圾邮件。

找出这样100个常用词是否在邮件中出现,如果出现对应分量为1否则为0,那就可以用一个维度为100的分量取值可能为0或1的一个向量来表示一份邮件了。如下图:

当然在实际的工作中,这个常用词的词库的量要大得多,一般是10000~50000之间,而且这数万个词是根据出现的频率由计算机自动挑出来的。

这样一来,分类器的任务就清晰了,就是根据邮件的特征向量来判断这个邮件是不是垃圾邮件。

接下来做什么

对我们的分类器的前期预处理算法的优化,比如下面的这些工作:

第一,当然是构建监督学习器的训练样本集,训练样本是已经标记了是否为垃圾邮件的一系列邮件。一个例子,有一个叫做“honeypot”项目,这个项目创建了很多假的邮箱地址放出去,故意用来接收大量的垃圾邮件。

第二,继续优化邮件的特征向量,比如加入邮件的路由信息、邮件标题等作为邮件的特征值。

第三,对于邮件的主体部分,在进行特征提取的时候考虑一些复杂的情况,比如“deal”和“Dealer”是否该被当成同一个词?

第四,对一些垃圾邮件中故意使用的错误拼词进行处理,比如med1cine这样的词可能是medicine的伪装。

总结

在机器学习系统的前期预研阶段有很大的灵活性,需要根据实际应用场景进行分析。而且呢,这些方法(招数)具有很多随机性,可能是你们开发小组通过多次碰头会讨论出来的结果,可能是某个成员灵机一动想出来的招数。

那么,这些可能的处理方案里面哪些是靠谱的呢?应该用什么样的方法去验证这些“点子”呢?

还要接着往下学习。

02 视频

http://mpvideo.qpic.cn/0b78kuaaiaaakuaez25nsbpvavodarkqabaa.f10004.mp4?dis_k=d31410168cb90a659405ab4ed05f58cf&dis_t=1620875637&spec_id=MzAxMDYwMTc4Nw==1620875637&vid=wxv_1603891939265806337&format_id=10004

0 人点赞