机械学习诊断算法

        

目录

1、如何评价你的算法?

2、模型选择

3、模型有关的偏差问题和方差问题

4、正则化有关的偏差问题和方差问题

 5、学习曲线


        今天跟大家分享下如和评价自己的算法,如何防止过度拟合和欠拟合问题。以及机械学习中的诊断法。

1、如何评价你的算法?

        为了可以确保评价我们的假设函数,我们要做的是,把原有的训练样本分成两分,把原有的训练样本的70%作为新的训练样本,把剩下的30%作为算法的测试样本。但是要注意的是,如果我们的训练样本本身是有规律的,那么我们将采用随机的方式选取70%作为新的训练样本,将剩下的作为测试样本。

        

        误差计算error:

        ①对于线性回归模型的话,我们可以通过新的训练样本计算出θ的值,然后计算出在测试样本中的代价函数J(θ),注意代价函数中的m是测试样本的个数。

 

        ②对于逻辑回归模型的话,我们通常对于error的定义为,当我们计算出该样本可能为1时(h(x)>=0.5),但是实际结果为0。最后都是对计算出的error误差求平均值,我们能大概知道这组结果的拟合水平。

 

2、模型选择

        当我们采用上述方法,将样本只分为training set(训练集) 和testing set(测试集)时,我们首先利用training set 计算出θ和几个模型。然后利用testing set来选择出代价函数最小的模型。这时就有一个问题了,如果我们继续使用testing set来计算泛化误差是不是不能很好的说明模型的泛化程度呢?(相当于我是出卷人又是判卷人)其实testing set不能用来确定模型的同时又来评估模型的泛化能力。

 

        这时我们采用一种新的分类方法,将我们的样本分为训练集(training set)、交叉验证集(cross validation)、测试集(testing set),通常我们采用的比例是训练集:交叉验证集:测试集=6 : 2 : 2 。交叉训练集又简称为cv。

               这时我们就解决了上述的问题,我们可以采用交叉验证集来选择代价函数最小的模型,然后用测试集来评价模型的泛化程度。

3、模型有关的偏差问题和方差问题

        如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差(欠拟合)比较大,要么是方差(过度拟合)比较大。其中training error指训练集误差,cross validation error指交叉验证集误差。我们可以观察到随着d上涨,交叉验证集误差先降后升。

        ①当为高偏差(欠拟合)的时候:训练误差会很高,而且训练误差≈交叉验证误差

        ②当为高方差(过度拟合)的时候:训练误差会很小,而且训练误差<<交叉验证误差

4、正则化有关的偏差问题和方差问题

        首先,我们需要明确的是,正则化和验证集是两种训练模型的方法,我们应该先进行正则化的选择,在采用训练集的方法。

        ①当λ的值过大,也就是惩罚度过高时,θ的值几乎接近于0,我们的模型就约等于h(x)≈θo,模型几乎为一条直线,就产生了欠拟合的问题。

        ②当λ的值过小,θ几乎没有什么约束条件,那么就容易出现过度拟合的问题。

         这时我们就应该选择合适的λ值,我们可以用训练集计算出θ和模型,然后利用交叉验证集选择一个使代价函数最小的λ的值。

         我们从图中易观察到,λ的值越大时,就产生了高偏差(欠拟合)问题;λ的值过小就产生了高方差(过度拟合)问题。

 5、学习曲线

        当已有一个训练模型,希望得到改进时首先应当明确现在是过拟合还是欠拟合,方法就是使用不同的样本数量来对当前模型。简单来说是以m(训练集样本数)为横轴,训练集误差和交叉验证集误差为纵轴的曲线 。      

        ①高偏差(欠拟合)当m很小时,训练误差很小,交叉验证集误差很大,随着m逐渐在增大,两者逐渐逼近且相等。这时说明增加训练集的数量并不会有帮助

        ②高方差(过度拟合)当m很小时,训练误差很小,交叉验证集误差很大,随着m逐渐在增大,两者逐渐逼近,但仍会有十分明显的差别,则说明模型还有学习的潜能。这时增加训练集的数量会有帮助。

          在需要改进现有模型时,可通过画学习曲线,划分数据集等方式来诊断模型情况,由此制定合适的改进方案。解决方法如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值