在机器学习中,按照Ng的说法,常见的做法是先使用一个简单的模型来进行计算,然后找到其中容易出现的问题和样本的一些特征,解决之后再使用较为复杂的模型,这样会比较节省时间,下面介绍一些常见对假设进行评价的方法。
首先在机器学习中常见的对样本的分类方式是60%的训练集(Training Set),20%的交叉验证集(Cross Validation Set),20%的测试集(Testing Set)。其中的训练集和交叉验证集用于对假设参数进行优化,比如 λ 和 θ 等,测试集仅用来求得假设的泛化误差。
1.关于偏差(bias)和方差(variance)
这是两个比较容易混淆的概念,由两幅图像来说明
以上这种情况属于欠拟合状态,在测试集的阶段就会有很大的误差(Error),这就是一种高偏差的状态,常见的解决方法也就是增加特征(Feature)的数目或者增加平方特征项等,以及减小正则项的系数
λ
,注意在这样的情况下增加样本数不会有作用,这在后面谈到学习曲线的地方会有详细说明。
以上这样的情况属于过拟合状态,测试集的误差很小,但是如果放到交叉验证集会产生很大的误差,这就是一种高方差的状态,要解决这样的问题,与上面欠拟合的方式相反,可以通过去掉一些不太起作用的特征项或者增大
λ
来解决,在这样的情况下,增加样本的数量也是有显著作用的。
2.学习曲线
学习曲线也就是将测试集和交叉验证集的误差对于样本个数的曲线,如下图表示,同样分为欠拟合与过拟合两种情况
以上便为欠拟合的状态,其显著特征为:随着训练集样本的增加,
Jtrain(θ)
迅速上升,
JCV(θ)
迅速下降,并且在样本集还不是太大的时候就已经差不多相等,在这样的情况下,当样本数超过某一个值的时候,学习曲线不会发生显著的改变,也就是说再增加样本个数并不能够改善欠拟合的状态。
以上为过拟合的状态,可以看到在样本个数较小的时候,
JCV(θ)
和
Jtrain(θ)
之间有较大的间隔,随着样本数目的增加,这个间隔在逐渐的减小并且
JCV(θ)
和
Jtrain(θ)
也趋近于一个稳定的误差值,也就是说增加样本个数对于当前过拟合的状态是有明显改善的。
至于学习曲线的绘制,可以在1~m之间取多个间隔点分别训练模型,然后分别求出它们的 JCV(θ) 和 Jtrain(θ) ,这里需要注意的是,在训练模型的时候是包含了正则项的,但是在求误差的时候是没有计算正则项的,这个误差被定义为 ||hθ(X)−y||22∗m ,也就是线性回归中除去代价函数的部分。
3.其他的评价指标
在分类问题中,我们常用准确率来评价一个模型的好坏,但是在某些情况下,单独用准确率来评价一个模型并不是合理的,尤其是在不同分类间的数目出现有较大偏差的时候,也就是出现skewed classes的时候。
举个例子,当我们需要根据肿瘤的大小,形状等参数来预测肿瘤是良性还是恶性的时候,由于大多数情况都会是良性,所以在假设全为0的时候会出现很高的准确率,但是这样做很明显是不合理的。
于是另外引入两个概念,分别是查准率(precision)和查全率(recall),查准率定义为预测为真,实际也为真的个数与预测为真的个数的比值,查全率定义为预测为真,实际也为真的个数与实际为真的个数的比值。通常准确与全面这二者不可兼得,我们可以通过调整Logistic函数的阈值来满足我们对这两者的要求。例如在需要较高准确性的时候,可以调高阈值从0.5到0.7或者更高,这样对于预测为真的条件就更为严格,也就会得到更高的查准率,相反的,如果需要预测地更加全面,可以调低相应的阈值。