• 网格搜索和交叉验证


    Grid Search 网格搜索

    网格搜索是一种常用的调参手段,是一种穷举方法。给定一系列超参,然后再所有超参组合中穷举遍历,从所有组合中选出最优的一组超参数,其实就是暴力方法在全部解中找最优解。从所有的参数中找到在验证集上精度最高的参数,这其实是一个训练和比较的过程。

    为什么叫网格搜索,因为假设有两个超参,每个超参都有一组候选参数。这两组候选参数可以两两组合,把所有组合列出来就是一个二维的网格(多个超参两两组合可以看作是岗高维空间的网格),遍历网格中的所有节点,选出最优解。所以叫网格搜索。

    当超参数的数量增长时,网格搜索的计算复杂度会呈现指数增长,这时候则使用**随机搜索**RandomizedSearch ### sklearn里的两个调参函数 GridSearchCV 与 RandomizedSearchCV 前者是网格搜索,后者是随机搜索(其实两个后边跟的CV就是下边要说的交叉验证),这里我们看下GridSearchCV函数:

    sklearn.model_selection.GridSearchCV(estimator,param_grid,cv)

    estimator:估计器对象
    param_grid:估计器参数,参数名称(字符串)作为key,要测试的参数列表作为value的字典,或这样的字典构成的列表
    cv:整型,指定K折交叉验证
    方法
    fit:输入训练数据
    score:准确率
    best_score_:交叉验证中测试的最好的结果
    best_estimator_:交叉验证中测试的最好的参数模型
    best_params_:交叉验证中测试的最好的参数
    cv_results_:每次交叉验证的结果

    交叉验证cross validation

    如果给定的样本数据充足,进行模型选择的 种简单方法是随机地将数据集切分成三部分,分别为训练集(training set )、验证集(validation set )和测试集 (tesset )。训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对学习方法的评估。在学习到的不同复杂度的模型中 选择对验证集有最小预测误差的模型由于验证集有足够多 的数据,用它对模型进行选择也是有效的。
    但是,在许多实际应用中数据是不充足的。为了选择好的模型,可以采用 交叉验证方法 交叉验证的基本想法是重复地使用数据:把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。

    1. 简单交叉验证
      简单交叉验证方法是 首先随机地将己给数据分为两部分,一部分作为训练集,另一部分作为测试集(例如, 70% 的数据为训练集, 30% 的数据为测试集〉;然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型:在测试集上评价各个模型的测试误差,选山测试误差最小的模型。
    2. S折交叉验证
      应用最多的是S折交叉验证 (S-fold cross validation) 方法如下:首先随机地将已给数据切分为S个互不相交、大小相同的子集:然后利用 S-1个子集的数据训练模型,利用余下的子集测试模型:将这一过程对可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型。
      以10折交叉验证为例,如下图所示。
    步骤如下: a. 将数据集平均分成不相交的10个子集 b. 每一次挑选其中的1份作为测试集,其余的9份作为训练集进行模型训练,得到模型的指标 c. 重复第2步10次,使每个子集都作为1次测试集,得到10个模型的指标 d. 将10个模型指标取平均值,作为10折交叉验证的模型的指标 3. **留一交叉验证** S折交叉验证的特殊情形是 S=N,称为留一交叉验证 (leave-one-out cro validation ),往往在数据缺乏的情况下使用。这里,N是给定数据集的容量

    交叉验证的好处在于:

    1.可以保证所有数据都有被训练和验证的机会,也尽最大可能让优化的模型性能表现的更加可信;
    2.从有限的学习数据获取尽可能多的有效信息;
    3.可以在一定程度上避免过拟合的问题。

    参考:https://www.cnblogs.com/wj-1314/p/10422159.html

  • 相关阅读:
    Activiti简单介绍
    SRS视频服务器-docker部署srs4.0:带SRT功能
    CorelDRAW2022最新版本号V24.0.0.301订阅版
    07【C语言 & 趣味算法】最佳存款方案(采用 从后往前 递推解决)
    Java 如何让HashMap集合按照value进行排序呢?
    vue插槽slot
    反射&注释API
    2024年度“阳江市惠民保”正式发布!阳江市专属补充医疗保险全新升级
    「C++系列」C++简介、应用领域
    如何修复-谷歌浏览器-打开任何一个网页都显示崩溃
  • 原文地址:https://blog.csdn.net/RayChiu757374816/article/details/126523978