1.4 评价模型
建好模型之后,必须对它进行评价。我们经常会使用一些评价指标来比较模型的预测准确度。对于如何定义和惩罚不同类型的预测误差,不同的评价指标各不相同。
接下来,我们将探讨3种常用的评价指标:预测准确率、混淆矩阵和均方根误差。根据学习目标的要求,有时甚至会设计新的评价指标,以便针对特定类型的误差进行惩罚和规避。所以,本书讲解的评价指标并非面面俱到。有关评价指标的更多例子,请参考附录D。
1.4.1 分类指标
关于预测准确率,最简单的定义就是正确的预测所占的比例。回到表1-1的例子,对买鱼与否的预测准确率,可以这样表述:在预测某位顾客是否买鱼时,我们的模型在90%的时间里都是对的。虽然预测准确率这个指标很容易理解,但我们无法通过它得知预测误差是如何产生的。
混淆矩阵可以让我们进一步了解预测模型的优缺点。
从表1-4可知,虽然模型的总体分类准确率是90%,但相比于对顾客买鱼的预测,它对不买鱼的预测更准确。此外,假正类型和假负类型的预测错误一样多,分别有5个错误。
表1-4 混淆矩阵揭示了模型在预测买鱼与否时的准确度
在某些情况下,分辨预测错误的类型至关重要。以地震预测为例,假负类型的错误(即预测不会发生地震,实际上却发生了)所付出的代价要远高于假正类型的错误(即预测会发生地震,实际上却未发生)。
1.4.2 回归指标
由于回归预测使用连续值,因此误差一般被量化成预测值和实际值之差,惩罚随误差大小而不同。均方根误差是一个常用的回归指标,尤其可用于避免较大的误差:因为每个误差都取了平方,所以大误差就被放大了。这使得均方根误差对异常值极其敏感,对这些值的惩罚力度也更大。
1.4.3 验证
指标并不能完整地体现模型的性能。过拟合模型(有关内容请参考1.3节)在面对当前数据时表现良好,但是在面对新数据时可能表现得很糟糕。为了避免出现这种情况,必须使用合适的验证过程对模型进行评价。
验证是指评估模型对新数据的预测准确度。然而,在评估模型时,并不一定非要使用新数据,而是可以把当前的数据集划分成两部分:一部分是训练集,用来生成和调整预测模型;另一部分是测试集,用来充当新数据并评估模型的预测准确度。最好的模型,针对测试集所做的预测一定是最准确的。为了使验证过程行之有效,需要不带偏差地把数据点随机分派到训练集和测试集中。
然而,如果原始数据集很小,可能无法留出足够的数据来形成测试集,因为当用于训练模型的数据较少时,准确度无法得到保障。为了解决这个问题,有人提出了交叉验证这个方法:使用同一个数据集进行训练和测试。
交叉验证最大限度地利用了可用的数据,它把数据集划分成若干组,用来对模型进行反复测试。在单次迭代中,除了某一组以外,其他各组都被用来训练预测模型;然后,留下的那组被用来测试模型。这个过程重复进行,直到每一组都测试过模型,并且只测试过一次,如图1-3所示。
图1-3 数据集的交叉验证过程。数据集被划分成4组,模型最终的预测准确度是4个结果的平均值
由于每次迭代用来做预测的数据各不相同,因此每次得到的预测结果都不同。综合考虑这些差异,就可以对模型的实际预测能力做出更为可靠的评估。对所有评估结果取平均值,即为预测准确度的最终评估值。
如果交叉验证结果表明模型的预测准确度较低,可以重新调整模型的参数或者重新处理数据。