本文是吴恩达《机器学习》视频笔记第67篇,对应第6周第9个视频。
“Machine Learning System Design:——Error analysis”
上一个视频讲到,在设计实现一个人工智能系统之前该做哪些准备。在那个阶段,我们会有很多的想法,包括使用样本的哪些特征啊、使用什么样的算法啊等等,那如何对这些想法进行快速验证呢?本节视频就告诉我们一个解决这个问题的办法,误差分析。
一个有经验的老手在拿到一个人工智能系统需求的时候,一般会这样做:
还是以垃圾邮件分拣系统为例。
假设交叉验证集中有500封邮件,而算法错分了其中的100封邮件。现在要做些什么工作呢?首先需要对错分的100分邮件进行归类,当然这个归类工作是要手工完成的。
怎样归类错分的邮件呢?可以基于这样两点:(1)邮件类型,比如垃圾邮件是由哪一类公司发出的啊,还有是广告邮件还是病毒邮件,还有发件人的特点啊等等;(2)看看邮件还有哪些被忽略的特征可以帮助我们的算法正确对邮件进行分拣,比如常用的拼写错误啊、邮件路由啊等等。当然也可以按其它一些你能想到的对这些错分的邮件进行归类。
快速动手做一下之后,你就可以对你要解决的问题、你可能采用的算法等等有个相对全面的认识。能把努力的重点快速聚焦到合适的点上。
如果你心中预想了一些针对你要解决的问题的可能算法,那你能快速得到这些算法的定量评价,会对你的下一步工作有重大帮助。
比如说,你不确定是否应该将“discount"\"discounts"\"discounted"\"discounting"当成同一个单词来处理,你可以去网上搜一些词干(stemming)提取软件来把这些词的词干提出来,然后决定是否把相同词干的单词当成同一个词来处理。
那怎样决定呢?这就需要我们对采用、不采用两种方案的表现进行定量的分析,分析这两种方案的错误分拣率,然后再来决定具体使用哪种方案。
具体数值评价采用什么样的方法,就要根据我们要解决的问题具体情况具体分析了。总之,如果有一些新的算法在我们脑海中闪过、或者在小组讨论会上被提出来,那最好有一个客观的评价指标来决定是否采用这种新的算法。这个可以在交叉验证集上实现。
相对于花大把时间设计新的算法,前期更应该先快速把整个流程跑通,能够快速地给出一些结果。
先不用担心用的算法简单或者实现的效果很差,只有先把流程跑通了,才能帮助我们快速地验证我们一些新的算法设想是否可行。