• 三、Sklearn超参数与模型验证


    参考url:

     https://jakevdp.github.io/PythonDataScienceHandbook/05.03-hyperparameters-and-model-validation.html

    1、什么是模型验证

        模型验证(model validation),即在选择模型和超参数之后,通过对训练数据进行学习,对比模型对已知数据的预测值与实际值的差异。

        1、错误的模型验证方法

          

        2、模型验证正确方法:留出集

          先从训练模型的数据中留出一部分,然后用这部分留出来的数据来检验模型性能。

          

         3、交叉验证

          做一组拟合,让数据的每个子集既是训练集,又是验证集。

          

           每次只有一个样本做测试,其他样本全用于训练,这种交叉检验类型称为LOO(leave-one-out,只留一个)交叉验证,可以从model_selection模块导入LeaveOneOut

    2、选择最优模型

        1、偏差与方差的均衡

          '最优模型'的问题基本可以看成是找出偏差与方差平衡点的问题。

          

          分数R^2称为判定系数,用来衡量模型与目标值均值的对比结果。

          R^2=1表示模型与数据完全吻合,R^2=0表示模型不比简单取均值好,R^2为负表示模型性能很差。

          从这两个模型的得分可以得出两条一般性的结论:

            (1)对于高偏差模型,模型在验证集的表现与在训练集的表现类似。

            (2)对于高方差模型,模型在验证集的表现远远不如在训练集的表现。

          验证曲线:

              

           验证曲线具有的特征:

            (1)训练得分肯定高于验证得分。一般情况下,模型拟合自己接触过的数据,比拟合未接触过的数据效果要好。

            (2)使用复杂度较低的模型(高偏差)时,训练数据往往欠拟合,说明模型对训练数据和新数据都缺乏预测能力。

            (3)使用复杂度较高的模型(高方差)时,训练数据往往过拟合,说明模型对训练数据预测能力很强,但对新数据的预测能力很差。

            (4)但使用复杂度适中的模型时,验证曲线得分最高。说明在该模型复杂度条件下,偏差与方差达到均衡状态。

        2、Scikit-Learn验证曲线

          多项式回归模型是线性回归模型的一般形式,其多项式的次数是一个可调参数。

          在Scikit-Learn中,可以用一个带多项式预处理器的简单线性回归模型得到任意次数的多项式。

          

          

           

          训练得分总是比验证得分高,训练得分随着模型复杂度的提升而单调递增,验证得分增长到最高点后由于过拟合而开始骤降。

          从验证曲线可得出,偏差与方差均衡性最好的是三次多项式。

           

    3、学习曲线

        影响模型复杂度的另一个重要原因是最优模型往往受到训练数据量的影响。

        

         

        

        实线是大数据集的验证曲线,而虚线是前面小数据集的验证曲线。

        影响模型效果的因素:模型复杂度和训练数据集的规模。     

        通常将模型看成是与训练数据规模相关的函数,通过不断扩大数据集的规模来拟合模型,以此来观察模型的行为 。

        反映训练集规模的训练得分/验证得分曲线被称为学习曲线(learning curve)。

        

        学习曲线的特征包括以下三点:

        (1)特定复杂度的模型对较小的数据集容易过拟合:此时训练得分较高,验证得分较低。

        (2)特定复杂度的模型对较大的数据集容易欠拟合:随着数据的增大,训练得分会不断降低,而验证得分会不断升高。

        (3)模型的验证集得分永远不会高于训练集得分,两条曲线一直在靠近,但永远不会交叉。

        学习曲线随着训练样本数量的增加,分数会收敛到定值,此时改善模型性能的唯一方法就是换成复杂度更高的模型。    

        

        

    4、验证实践:网格搜索

        在实际工作中,模型通常会有多个得分转折点,此时验证曲线和学习曲线的图形会从二维曲线变成多维曲面。

        Scikit-Learn在grid_search模块中的GridSearchCV元评估器通过设置参数,来在模型特征的三维网格中寻找最优值——包括多项式的次数的搜索范围、回归模型是否拟合截距,以及回归模型是否需要进行标准化处理。

        

        

         

         

  • 相关阅读:
    POJ 1273:Drainage Ditches(EK 最大流)
    牛客假日团队赛6 H:Charm Bracelet (01背包)
    牛客假日团队赛6 F:Mud Puddles
    牛客假日团队赛6 E:对牛排序
    牛客假日团队赛6 D:迷路的牛
    牛客假日团队赛6 C:Bookshelf 2
    牛客假日团队赛6 B:Bookshelf
    牛客假日团队赛6 A:Card Stacking (模拟)
    UVA
    (转载)Mysql查找如何判断字段是否包含某个字符串
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12521033.html
Copyright © 2020-2023  润新知