跳至主要內容

模型评估

blacklad大约 2 分钟AIAI

模型评估

对于单一特征可以绘制图像观察模型是否出现过拟合现象,但是当特征增多时,难以通过图像直观的观察。通过模型评估,用系统的数据判断模型是否出现过拟合。

1 拆分训练集

为了衡量模型的泛化能力,我们将原始的训练集进行拆分,如:

  1. 70%作为新的训练集(train set)用于正常训练
  2. 30%作为测试集(test set)用于测试

训练完成后,计算测试集的误差,通过对比训练集的误差和测试集的误差,就可以衡量模型的泛化能力。

1.1 误差

在计算误差的时候,无需添加正则化项。

线性回归

Jtest(w,b)=12mtesti=1mtest(fw,b(xtest(i))ytest(i))2 J_{test}\left(\vec{w},b\right)=\frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}\left(f_{\vec{w},b}\left(\vec{x}_{test}^{(i)}\right)-y_{test}^{(i)}\right)^2

逻辑回归

Jtest(w,b)=1mtesti=1mtest[ytest(i)log(fw,b(xtest(i)))+(1ytest(i))log(1fw,b(xtest(i)))] J_{test}(\overrightarrow{\mathrm{w}},b)=-\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}\left[y_{test}^{(i)}\log\left(f_{\vec{\mathrm{w}},b}\left(\vec{\mathrm{x}}_{test}^{(i)}\right)\right)+\left(1-y_{test}^{(i)}\right)\log\left(1-f_{\vec{\mathrm{w}},b}\left(\vec{\mathrm{x}}_{test}^{(i)}\right)\right)\right]

也可以使用测试集中的预测错误样本占比作为误差。

2 模型选择

可以引入一个参数 d 表示多项式的阶数,可以得到不同的模型。先使用训练集的数据分别对每个模型训练,得到模型后,再用测试集计算出每个模型的误差。

选择误差最小的模型作为最终的模型。

3 交叉验证集

为了评估选择出来的模型的好坏。可以将数据集划分为3部分:训练集、验证集、测试集(可以为 6:2:2)。

  1. 使用训练集进行训练,在不同模型上拟合出每个模型的最优w、b
  2. 使用交叉验证集选择模型,从拟合好的模型中选择一个最优的模型
  3. 使用测试集评估模型,得到这个模型的泛化能力

神经网络的选择

对于神经网络也可以使用交叉验证集。分别得到每个网络的验证机的误差,选择合适的网络模型。

为了保证模型对新数据的泛化程度有公平的估计,在选择模型时,不能使用测试集对模型有任何评估。

上次编辑于:
贡献者: blacklad