机器学习:验证数据集与交叉验证

# 问题:如果将所有的数据集都作为训练数据集,则对于训练出的模型是否发生了过拟合会不自知,因为过拟合情况下,模型在训练数据集上的误差非常的小,使人觉得模型效果很好,但实际上可能泛化能力不足;

# 方案:将数据集分割为训练数据集和测试数据集,通过测试数据集判断模型的好坏——如果通过学习曲线发现,模型在训练数据集上效果较好,在测试数据集上效果不好,模型出现过拟合,需要调整参数来重新得到模型,然后再次进行测试;以此类推循环此过程,最终得到最佳模型。

  # 最佳模型:也就是在测试数据集上表现的比较好的模型,因为这种模型的泛化能力强,放在生成环境中面对未知的环境时有更好的表现。

  # 调整的参数通常就是超参数:kNN 中的 k 和 P 、多项式回归中的 degree 等;

# 方案缺陷:此方案得到的最佳模型,有可能会过拟合了测试数据集;

  # 解释:虽然使用训练数据获得模型,但每次通过测试数据集验证模型的好坏,一旦发现模型不好就重新调整参数再次训练新的模型,这个过程一定程度上是模型在围绕着测试数据集进行刷选,也就是说,我们在想办法找到一组参数,这组参数使得我们在训练数据集上获得的模型在测试数据集上效果最好,但是由于测试数据集是已知的,我们相当于在针对这组测试数据集进行调参,那么也有可能出现过拟合的现象,也就是说我们得到的模型针对这组测试数据集过拟合了;

扫描二维码关注公众号,回复: 2062449 查看本文章

# 解决方案的缺陷:将数据集分割为 3 部分——训练数据集、验证数据集、测试数据集;

  # 训练数据集:训练模型;

  # 验证数据集:验证模型的效果,如果模型的效果不好,则重新调整参数再次训练新的模型,知道找到了一组参数,使得模型针对验证数据集来说已经达到最优了;(调整超参数使用的数据集)

  # 测试数据集:将此数据集传入由验证数据集得到的最佳模型,得到模型最终的性能;(作为衡量最终模型性能的数据集)

  # 训练数据集和验证数据集参与了模型的创建:训练数据集用来训练,验证数据集用来评判,一旦评判不好则重新训练,这两种形式都叫参与了模型的创建;

  # 测试数据集不参与模型的创建,其相对模型是完全不可知的,相当于是我们在模拟真正的真实环境中我们的模型完全不知道的数据;

# 分割成 3 部分数据的方案的缺陷:分割方式是随机的;

  # 解释:由于验证数据集是从原始数据集中随机分割出来的,模型有可能过拟合验证数据集,但是只有一份验证数据集,一旦验证数据集中有极端的数据就可能导致模型相应的不准确;

# 解决分割成 3 部分数据的方案的缺陷的方案:交叉验证(Cross Validation);

  # 交叉验证相对(数据分割)是比较正规和标准的在调整模型参数时使用的查看模型性能的方式;

  # 交叉验证:

猜你喜欢

转载自www.cnblogs.com/volcao/p/9291831.html