10.1 决定下一步做什么

参考视频: 10 - 1 - Deciding What to Try Next (6 min).mkv

到目前为止,我们已经介绍了许多不同的学习算法,如果你一直跟着这些视频的进度学 习,你会发现自己已经不知不觉地成为一个了解许多先进机器学习技术的专家了。

然而,在懂机器学习的人当中依然存在着很大的差距,一部分人确实掌握了怎样高效有 力地运用这些学习算法。而另一些人他们可能对我马上要讲的东西,就不是那么熟悉了。他 们可能没有完全理解怎样运用这些算法。因此总是把时间浪费在毫无意义的尝试上。我想做 的是确保你在设计机器学习的系统时,你能够明白怎样选择一条最合适、最正确的道路。因 此,在这节视频和之后的几段视频中,我将向你介绍一些实用的建议和指导,帮助你明白怎 样进行选择。具体来讲,我将重点关注的问题是假如你在开发一个机器学习系统,或者想试 着改进一个机器学习系统的性能,你应如何决定接下来应该选择哪条道路?为了解释这一问 题,我想仍然使用预测房价的学习例子,假如你已经完成了正则化线性回归,也就是最小化 代价函数 J 的值,假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组新

的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是 要 想改进这个算法,接下来应该怎么办?

实际上你可以想出很多种方法来改进这个算法的性能,其中一种办法是使用更多的训练 样本。具体来讲,也许你能想到通过电话调查或上门调查来获取更多的不同的房屋出售数据。 遗憾的是,我看到好多人花费了好多时间想收集更多的训练样本。他们总认为,要是我有两 倍甚至十倍数量的训练数据,那就一定会解决问题的是吧?但有时候获得更多的训练数据实 际上并没有作用。在接下来的几段视频中,我们将解释原因。

我们也将知道怎样避免把过多的时间浪费在收集更多的训练数据上,这实际上是于事无 补的。另一个方法,你也许能想到的是尝试选用更少的特征集。因此如果你有一系列特征比

如 x1x2 x3 等等。也许有很多特征,也许你可以花一点时间从这些特征中仔细挑选一小部分来 防止过拟合。或者也许你需要用更多的特征,也许目前的特征集,对你来讲并不是很有帮助。

你希望从获取更多特征的角度来收集更多的数据,同样地,你可以把这个问题扩展为一个很 大的项目,比如使用电话调查来得到更多的房屋案例,或者再进行土地测量来获得更多有关, 这块土地的信息等等,因此这是一个复杂的问题。同样的道理,我们非常希望在花费大量时 间完成这些工作之前,我们就能知道其效果如何。我们也可以尝试增加多项式特征的方法, 比如 x1 的平方,x2 的平方,x1x2 的乘积,我们可以花很多时间来考虑这一方法,我们也可以

考虑其他方法减小或增大正则化参数 lambda 的值。我们列出的这个单子,上面的很多方法

都可以扩展开来扩展成一个六个月或更长时间的项目。遗憾的是,大多数人用来选择这些方 法的标准是凭感觉的,也就是说,大多数人的选择方法是随便从这些方法中选择一种,比如 他们会说 “噢,我们来多找点数据吧”,然后花上六个月的时间收集了一大堆数据,然后 也许另一个人说:“好吧,让我们来从这些房子的数据中多找点特征吧”。我很遗憾不止一 次地看到很多人花了至少六个月时间来完成他们随便选择的一种方法,而在六个月或者更长 时间后,他们很遗憾地发现自己选择的是一条不归路。幸运的是,有一系列简单的方法能让 你事半功倍,排除掉单子上的至少一半的方法,留下那些确实有前途的方法,同时也有一种 很简单的方法,只要你使用,就能很轻松地排除掉很多选择,从而为你节省大量不必要花费 的时间。最终达到改进机器学习系统性能的目的假设我们需要用一个线性回归模型来预测房 价,当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以 做什么?

  1. 获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可 考虑先采用下面的几种方法。

  2. 尝试减少特征的数量

  3. 尝试获得更多的特征

  4. 尝试增加多项式特征

  5. 尝试减少归一化程度 λ

  6. 尝试增加归一化程度 λ

我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法 来帮助我们知道上面哪些方法对我们的算法是有效的。

在接下来的两段视频中,我首先介绍怎样评估机器学习算法的性能,然后在之后的几段

视频中,我将开始讨论这些方法,它们也被称为"机器学习诊断法"。“诊断法”的意思是:

这是一种测试法,你通过执行这种测试,能够深入了解某种算法到底是否有用。这通常也能 够告诉你,要想改进一种算法的效果,什么样的尝试,才是有意义的。在这一系列的视频中 我们将介绍具体的诊断法,但我要提前说明一点的是,这些诊断法的执行和实现,是需要花 些时间的,有时候确实需要花很多时间来理解和实现,但这样做的确是把时间用在了刀刃上, 因为这些方法让你在开发学习算法时,节省了几个月的时间,因此,在接下来几节课中,我 将先来介绍如何评价你的学习算法。在此之后,我将介绍一些诊断法,希望能让你更清楚。 在接下来的尝试中,如何选择更有意义的方法。