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

目录

一.模型评估

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

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

四.正则化&偏差&方差


一.模型评估

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第1张图片

以预测房价

 向毕业妥协系列之机器学习笔记:构建ML系统(一)_第2张图片

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第3张图片

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第4张图片

对于分类问题:

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第5张图片

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

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

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

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

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

  向毕业妥协系列之机器学习笔记:构建ML系统(一)_第6张图片

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

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第7张图片

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第8张图片

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

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第9张图片

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第10张图片

bias:偏差;variance:方差

 向毕业妥协系列之机器学习笔记:构建ML系统(一)_第11张图片左侧这个函数图像就是一部分出现了过拟合,另一部分出现了欠拟合。

四.正则化&偏差&方差

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第12张图片

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

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第13张图片

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

向毕业妥协系列之机器学习笔记:构建ML系统(一)_第14张图片

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

你可能感兴趣的:(#,机器学习,模型评估与选择,交叉验证集,偏差和方差,正则化)