• 向毕业妥协系列之机器学习笔记:构建ML系统(一)


    目录

    一.模型评估

    二.模型选择&交叉验证测试集的训练方法

    三.通过偏差与方差进行诊断

    四.正则化&偏差&方差


    一.模型评估

    以预测房价

     

     现在有十个训练示例,我们取其中30%也就是3个作为测试集,剩余的7个就是训练集,当然也可以2:8开。

    也可以把训练集数据的成本和测试集的成本对比一下 ,比如过拟合的话,那么肯定训练集数据的成本会很低,但是测试集的成本就不会那么低了。

    对于分类问题:

    二.模型选择&交叉验证测试集的训练方法

    下面的例子是模型的选择,对于一个问题,这个问题的f可能有多种不同的选择,下面列出了10种,分别对应d=1~10,分别是一阶到10阶的多项式,这些放到训练集当中都能得到对应的参数,然后利用这些参数去进行测试集上的测试,然后比如发现当d为5的时候(即五阶多项式)Jtest最小,这就能说明我们这个问题应当选择d为5对应的式子作为模型公式吗???

    答:不能。因为训练集用来视练参数w和b。测试集用来选择多项式模型(即参数d)。训练集不能评值w和b的好坏。类似的测试集他不能用来评估参数d的好坏。

    现在我们对数据进行重新划分,可以看到与之前不同的是除了训练集和测试集,现在又多了个交叉验证集,又名验证集,开发集。

    显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型。我们需要使用交叉验证集来帮助选择模型。 即:使用60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用20%的数据作为测试集。

     

    这么乍一看验证集和测试集公式都一样,其实用途不一样

    引入validation set之后,training set生成w和b,validation set选择d(即选择一个模型),test set 没有参与w,b,d的生成,test set是用来检查最终的模型的泛化能力的,如下:

    即选Jcv最小的那个模型,然后用test set来测试。

    三.通过偏差与方差进行诊断

    下图中横轴是d,即多项式的阶数,可以看到Jcv和Jtrain随着d的变化,结合下图的英文可以看到什么时候欠拟合,什么时候过拟合。

    bias:偏差;variance:方差

     左侧这个函数图像就是一部分出现了过拟合,另一部分出现了欠拟合。

    四.正则化&偏差&方差

    因为模型会追求成本最小,所以当lambda很大的时候,那么相应的wj就会很小(≈0),带入f的式子里,f=WX+b,所以f的值就会接近于b。如下图(之前的课里也讲过):

    咱们现在假定模型的式子是几阶的已经定了,下面再来确定正则化参数lambda即可。

    下图和之前学过的模型选择是一个道理,多个lambda值,分别训练出对应的w,b的值,然用验证集计算出Jcv,选择最小的那个Jcv对应的lambda,然后再用测试集测试。

     然后Jtrain和Jcv根据lambda的值变化图像如下

    分析举例:当lambda很大时,模型曲线就像是一条水平线,所以欠拟合(偏差bias很大),Jtrain很大,Jcv也很大。自己分析一下吧,不难。和根据多项式次数变化的函数图像形成了一个镜像的感觉。

  • 相关阅读:
    解析java中的StringBuffer和StringBuilder
    17.12 事务处理(血干JAVA系类)
    Python 学习之路
    Spring Boot 面试热点(三)
    MAXScript - tyFlow for 3dsMax
    代码审计—PHP
    【Leetcode】2369. 检查数组是否存在有效划分
    爬取微博热榜并将其存储为csv文件
    27岁,准备转行做网络安全渗透,完全零基础,有前途吗?
    人工智能教程(一)
  • 原文地址:https://blog.csdn.net/weixin_44593822/article/details/127816152