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)后,所计算出来的预测值和真实值的差异的期望值。实质就是训练误差。

参考:李航《统计学习方法》


猜你喜欢

转载自blog.csdn.net/yeziand01/article/details/80524677