一.机器学习诊断
在设计机器学习系统或者进行改进时如果遇到问题,下一步应该怎么办呢?
除了掌握一些学习算法之外,我们还需要知道如何调试一个算法。
例如我们已经实现了一个正则化线性回归来预测房价, J(θ)=12m[∑mi=1(hθ(x(i))−y(i))2+λ∑mj=1θ2j]
然而在将假设函数测试一个新的数据集时,发现预测误差很大。接下来该怎么办?有以下一些方法可供选择。
★ 获取更多训练样本
★ 尝试使用更少的特征
★ 尝试增加特征
★ 尝试加入多项式特征
★ 尝试减小 λ
★ 尝试增大 λ
问题在于大多数人只是凭感觉选择其中的一种或几种方法,最后发现浪费了大量时间做了无用功。
使用机器学习诊断法可以帮我们评估算法,排除掉一些无用的方法,节省大量时间。
机器学习诊断(diagnostic):它本身是一种测试法,执行它可以深入了解某种算法是否有用,并可以从中获得信息,即如何才能最大化改进这种算法的效果。虽然它的执行和实现是需要时间的,但是使用它能让我们更高效地利用时间。
二.评估假设函数
首先我们要知道一个事实,仅仅因为假设函数具有较小的训练误差并不能说明它是一个好的假设函数。前面已经讲过了过拟合,它不能泛化到新的输入上。如何判断过拟合呢?前面提到过画图的方法,但是对于特征变量很多的情况,画图会变得十分困难。
<1>下面介绍一种评估假设函数的标准方法:把一个数据集按70%的训练集和30%的测试集的比例分为两个部分。(如果数据集的分布有规律,则要随机取70%作为训练集,剩下30%作为测试集;如果数据集已经是随机分布,则可以取前70%作为训练集,后30%作为测试集)
①评估线性回归假设函数:
—用那占70%的训练数据通过
—计算测试集的误差:
②评估逻辑回归假设函数:
—用那占70%的训练数据通过
—计算测试集的误差: