首页 > 编程知识 正文

k折交叉验证的目的,knn算法的k值怎么确定

时间:2023-05-05 00:50:37 阅读:11652 作者:723

参数建模后,训练集用于训练参数。 准确地说,是用于坡度下降。 验证集基本上用于在每个epoch完成后测试当前模型的准确率。 该精度是可靠的,因为验证集不与训练集交叉。 那么为什么需要测试套呢?

这需要区分模型的各种参数。 实际上,在模型中,其参数可以分为常规参数和超级参数。 在不引入强化学习的前提下,常规参数可以通过梯度下降来更新,即通过训练集来更新参数。 另外,还有网络层数、网络节点数、反复次数、学习率等超级参数的概念,这些参数不在梯度下降的更新范围内。 目前有一些算法可以搜索模型的超级参数,但我们往往是自己根据验证集进行调整的。

因此,train、test、valid的区别也就是说,狭义上说,验证集与坡度下降的过程无关,也就是说没有经过训练; 但从广义上看,验证集涉及“人工参数调整”的过程,根据验证集的结果调整迭代次数和学习率等,使结果在验证集中最优。 因此,验证集也被认为是在参加训练。

那么很明显,我们需要一个完全没有训练过的集合。 那是测试套。 我们既不会降低测试集的坡度,也不会控制超级参数。 模型最终训练结束后,用于测试最后的准确率。

算法选择具有最小泛化误差的模型作为最终模型,在整个训练集中重新训练模型得到最终模型。

交叉验证首先在验证阶段起作用,因此k交叉验证的作用是选择模型的超参用,而不是参与训练来确定模型的权重阈值。 这是为了防止随意划分的验证集存在分布上的偏差而导致错误判定,选择了局部最优的超参考而不是全局最优。 为什么一些异常检测、CTR等不均衡问题使用这一手段,样本应该是不均衡的,随意划分则分布不均匀,如经过验证的集合中有正样本,其指标肯定是极端的。 k折断后,可以避免这种情况,便于我们更好地选择模特超参。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。