2-如何选择模型?-机器学习
由模型可以得到预测值,而预测值和真实值之间是存在差异的。接下来,我们需要回答以下问题:
当可用的模型有多个时,应该选哪一个?
这称之为模型选择(model selection)问题。答案是,当然选择最优秀的那个模型。
那问题来了,模型的优秀程度具体指什么?
优秀程度指的是模型对数据集的预测准确程度,亦称为泛化能力(generalization ability)。也就是,在给定数据集上,真实值和预测值之间的差异越小,模型越优秀。
泛化误差(generalization error):学习到的模型对未知数据预测的误差。
泛化误差的上界(generalization error bound):假设空间所包含函数越多,要确定具体的模型就越困难,泛化误差的上界就越大。
数据集可以划分训练数据集和测试数据集,但当选择的模型对训练数据集预测得很好,但对测试数据集预测得很差,则产生过拟合(over-fitting)问题。模型越复杂,越有可能产生过拟合(如下图所示)。
因此选择模型时,若鱼与熊掌不可兼得,则应该优先考虑对测试数据集的预测准确程度。对预测数据集预测越准确,则模型的泛化能力越强,模型越优秀。
那如果对预测数据集的准确程度不相上下呢?这时候,该如何选择?
这时候,我们可以遵循奥卡姆剃刀原理(Occam's razor):在所有可选择的模型中,对于同样好的模型,应该尽量选择简单的。
那如何量化模型的优秀程度?
我们可以用损失函数去量化模型的优秀程度。
损失函数(loss function)/代价函数(cost function):用来量化真实值和预测值之间的差异的一个函数,记做L(Y,f(X))。影响因子是预测值f(X)和真实值Y,且它是一个非负实数值。
有了损失函数后,我们可以构建起以下的概念体系。
训练误差(training error)
基于训练数据集,预测值跟真实值之间的差异,可用损失函数来量化差异。
测试误差(test error)
基于测试数据集,预测值与真实值之间的差异,可用损失函数来量化差异。
误差率(error rate)
选择0-1函数作为损失函数,当预测值=真实值,则损失函数值为1,当预测值≠真实值,则损失函数值为0。可计算出预测值≠真实值的概率。
准确率(accuracy rate)
误差率的反面,预测值=真实值的概率。
风险函数(risk function)/期望损失(expected loss)
总体数据集在应用损失函数f(X)后,所计算出来的预测值和真实值的差异的期望值。
经验风险(empirical risk)/经验损失(empirical loss)
训练数据集在应用损失函数f(X)后,所计算出来的预测值和真实值的差异的期望值。实质就是训练误差。
参考:李航《统计学习方法》