模型选择和交叉验证

模型选择

holdout方法

在典型的机器学习应用中,为进一步提高模型在预测未知数据的性能,还要对不同的参数设置进行调优和比较,该过程称为模型选择。指的是针对某一特定问题,调整参数以寻求最优超参数的过程。
假设要在10个不同次数的二项式模型之间进行选择:

1. h θ ( x ) = θ 0 + θ 1 x 2. h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 3. h θ ( x ) = θ 0 + θ 1 x + + θ 2 x 3 10. h θ ( x ) = θ 0 + θ 1 x + + θ 10 x 10

显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况。我们应该选择一个更能适应一般情况的模型。如果在模型选择过程中不断重复使用相同的测试数据,这样的话测试数据就变成了训练数据的一部分,模型更容易陷入过拟合。
于是我们将数据集分为训练集,验证集和测试集。训练数据集用于不同模型的拟合,模型在验证集上的性能表现作为模型选择的标准,测试集作为最终的性能评估。使用 60%的数据作为训练集, 使用 20%的数据作为交叉验证集, 使用 20%的数据
作为测试集.

具体的模型选择方法为:
1. 使用训练集训练出 10 个模型
Train error:

J t r a i n ( θ ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
Cross validation error:
J c v ( θ ) = 1 2 m c v i = 1 m c v ( h θ ( x c v ( i ) ) y c v ( i ) ) 2

3. 选取代价函数值最小的模型: min θ J c v ( θ )
4. 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)
Test error:
J t e s t ( θ ) = 1 2 m t e s t i = 1 m t e s t ( h θ ( x t e s t ( i ) ) y c v ( i ) ) 2

缺点:模型性能的皮评估对训练数据划分为训练及验证子集的方法是敏感的;评价的结果是敏感的;评价的结果会随样本的不同而发生变化。

k折交叉验证

K折交叉验证中,不重复地随机将训练数据集划分为K个,其中k-1个用于模型的训练,剩余的1个用于测试。重复此过程k次,就得到了k个模型及对模型性能的评价。

猜你喜欢

转载自blog.csdn.net/winycg/article/details/80335530