机器学习算法中,超参数是一个非常重要的问题;
超参数,即:模型开始训练之前,设置好的参数
根据模型评估值,对超参数进行优化,选择最佳超参数值,以提高学习的性能和效果
对于超参数值的设置,我们有两种方式:1. 人工试数2. 交叉验证
目录
- 一. 交叉验证
- 1. Holdout交叉验证
- 1.1 Holdout交叉验证流程
- 1.2 Holdout交叉验证特点
- 2. K折交叉验证
- 2.1 K折交叉验证流程
- 2.2 K折交叉验证特点
- 3. 留一验证
- 3.1 留一验证流程
- 3.2 留一验证特点
一. 交叉验证
1. Holdout交叉验证
1.1 Holdout交叉验证流程
1. 将数据集划分为:训练集、验证集、测试集2. 将所有可能的超参数放在训练集上做训练,得到多个模型3. 用验证集对得到的所有模型做评估,找出性能最佳的模型,也就相当于找到最优的超参数值4. 用得到的超参数在 【训练集+验证集】 上做模型训练,得到一个新的模型5. 用测试集对新模型做评估6. 用已确定的超参数在所有数据上重新训练,得到最终模型
即:验证集的作用为确定超参数
测试集的作用为评估模型性能
1.2 Holdout交叉验证特点
处理简单,适用于样本较多的情况
2. K折交叉验证
K折交叉验证(K-fold cross-validation),其中K为超参数,常用K=10
2.1 K折交叉验证流程
1. 将待测的超参数据集等分为K份,其中1份为验证数据,其余K-1份为训练数据2. 对该数据集重复K次(训练+验证)3. 对K个结果进行平均或其他操作以获得综合结果,最终得到该超参数集的性能指标
2.2 K折交叉验证特点
训练集与测试集不重合,测试结果是绝对有效的,常用10折交叉验证
3. 留一验证
留一验证(LOOCV),与K折相似,但此时K的值等于样本的数量
3.1 留一验证流程
1. 对于K个样本的超参数集,每次训练使用K-1个样本,剩下的1个为验证数据2. 对所有数据进行K次(训练+验证)3. 对K个结果进行平均或其他操作以获得综合结果,最终得到该超参数集的性能指标
3.2 留一验证特点
常用于样本量非常小的情况
本篇文章仅涵盖了目前已讨论过的知识点,未来将持续更新
PS:本文相关代码存放位置
波士顿房价预测 交叉验证代码实现:寻找最优超参数
感谢阅读~