K-fold 交叉验证将数据分成 k 个 bin,每次使用 k-1 个 bin 进行训练,1 个 bin 进行测试。性能测量为所有 K 次运行的平均值,err ← err + (y[i] − y_out)^2 如 Wikipedia 和文献中所示
err ← 0
for i ← 1, ..., N do
// define the cross-validation subsets
x_in ← (x[1], ..., x[i − 1], x[i + 1], ..., x[N])
y_in ← (y[1], ..., y[i − 1], y[i + 1], ..., y[N])
x_out ← x[i]
y_out ← interpolate(x_in, y_in, x_out)
err ← err + (y[i] − y_out)^2
end for
err ← err/N
但是从训练中获得的参数呢?它是所有训练的平均值,还是从 k 折交叉验证中的最佳输出中挑选出来的?我们是否需要在 k-fold 交叉验证中运行相同的 ML 算法,或者每个折叠可以有不同的算法?我认为我们只需要为 k-fold 运行一种算法,并且对于每个单独的算法,我们需要运行 k-fold 交叉验证。