CrossValidated中有许多关于模型选择和交叉验证的主题。这里有一些:
- 内部与外部交叉验证和模型选择
- @DikranMarsupial 对特征选择和交叉验证的最佳答案
但是,这些线程的答案是相当通用的,并且大多突出了交叉验证和模型选择的特定方法的问题。
为了使事情尽可能具体,例如,假设我们正在使用带有RBF内核的SVM: ,并且我有一个特征X和标签y的数据集,我想
- 找到我的模型的最佳值(和ç)
- 用我的数据集训练SVM(用于最终部署)
- 估计泛化误差和该误差周围的不确定性(方差)
为此,我将亲自进行网格搜索,例如,尝试和每种可能组合 。为简单起见,我们可以假设以下范围:γ
更具体地说,使用我的完整数据集,我可以执行以下操作:
- 对于每对(,),我在我的数据集上进行倍交叉验证(例如)的重复迭代(例如100次随机重复),即我在倍上训练我的SVM 并评估左折上的错误,遍历所有折。总体而言,我收集了100 x 10 = 1000个测试错误。γ ķ ķ = 10 ķ - 1 ķ
- 对于每个这样的(,)对,我计算这1000个测试错误的均值和方差。γ μ 中号,σ 中号
现在,我想选择用于在完整数据集上训练最终SVM的最佳模型(最佳内核参数)。我的理解是,选择误差均值和方差为 和最低的模型是正确的选择,并且该模型的为是我对模型的泛化误差偏差和方差的最佳估计。完整的数据集。σ 中号μ 中号σ 中号
但是,在阅读了上面线程中的答案之后,我得到的印象是,这种用于选择最佳SVM进行部署和/或估计其错误(通用性能)的方法存在缺陷,并且有更好的选择方法。最佳SVM并报告其错误。如果是这样,它们是什么?我正在寻找一个具体的答案。
坚持这个问题,我该如何特别地选择最佳模型并正确估计其泛化误差?