机器学习(吴恩达)第六周-课程笔记&课后作业&编程作业

评估学习算法Evaluating a learning algorithm

搭建完算法后下一步做什么?

需要用机器学习诊断法,排除掉list上的,至少一半的方法,留下那些确实有用的方法

评估Evaluating a Hypothesis

比如线性回归算法 

首先 你需要对训练集进行学习得到参数θ ,具体来讲就是最小化训练误差J(θ),这里的J(θ)是使用那70%数据 

我将用J下标test来表示测试误差,取出你之前从训练集中学习得到的参数θ放在这里 ,来计算你的测试误差 ,我们使用包含参数θ的假设函数对每一个测试样本进行测试 

然后通过假设函数和测试样本 

 

比如逻辑回归(和线性回归类似)

模型选择及train/validation/test sets

要评价某个假设 我们通常采用以下的方法 ,给定某个数据集 ,与之前分为训练和测试集不同的是 我们要将其数据分为三段 ,第一部分还是叫训练集 ,所以 我们还是称这部分为训练集 ,第二部分我把它叫做交叉验证集

原因:

左图是只对数据集进行训练和测试的分类,1-10是都拟合训练集的多项式,现在要选择能最好地拟合你数据的模型,换句话说 你应该选择一次函数 二次函数 还是三次函数呢 ....等等一直到十次函数 ,所以d表示的就是你应该选择的多项式次数

这样对于训练得出的theta5最拟合测试集的参数,但是不能说明推广到一般时的效果,因为我是找了一个最能拟合测试集的参数d ,因此我再用测试集 来评价我的假设就显得不公平了 ,因为我已经选了一个能够最拟合测试集的参数

右图插入验证集,我们刚才做的是拟合出最好的系数d等于4,并且我们是通过交叉验证集来完成的,因此 这样一来这个参数d ,这个多项式的次数 就没有跟测试集进行拟合 ,这样我们就回避了测试集的嫌疑,我们可以光明正大地使用测试集,来估计所选模型的泛化误差了

 

诊断:variance方差 vs bias偏差

在这一节中,我们将检验多项式d的次数与我们的假设的欠拟合或过拟合之间的关系。
——我们需要区分偏差还是方差是导致错误预测的原因。
——高偏差是欠拟合,高方差是过拟合。理想情况下,我们需要在这两者之间找到一个黄金分割线。
随着多项式阶数d的增加,训练误差趋于减小。同时,交叉验证误差会随着d的增大而减小,然后随着d的增大而增大,形成一条凸曲线。

 

正则化和偏差/方差

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。但是我们可能
会正则化的程度太高或太小了,即我们在选择λ 的值时也需要思考与刚才选择多项式模型次
数类似的问题。

我们选择一系列的想要测试的 𝜆 值,通常是 0-10 之间的呈现2 倍关系的值(如:
0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12 个)。我们同样把数据分为训练
集、交叉验证集和测试集。

选择𝜆的方法为:
1.使用训练集训练出12 个不同程度正则化的模型
2.用12 个模型分别对交叉验证集计算的出交叉验证误差(交叉验证不需要正则化或者lambda=0)
3.选择得出交叉验证误差最小的模型
4.运用步骤3 中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与λ 的值绘制在一张图表上:

 

当 𝜆 较小时,训练集误差较小(过拟合)而交叉验证集误差较大
随着 𝜆 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后
增加

 

learning curves

m表示训练集个数,随着数量越来越高,Jt和Jcv会越来越接近

高偏差:如果一个学习算法正在经历高偏差,增加训练个数,也不会有好的缓解,依然有高的错误率

如果经历高方差,增加训练的数据可能会有所帮助

下一步如何做

 

课后测试:

 

课后编程:

参考链接

建一个垃圾邮件的分类器

设置一些单词,邮件中有此单词的设置为1,无设为0;

提高准确性:

  • Collect lots of data (for example "honeypot" project but doesn't always work)
  • Develop sophisticated features (for example: using email header data in spam emails)
  • Develop algorithms to process your input in different ways (recognizing misspellings in spam).

It is difficult to tell which of the options will be most helpful.

错误分析

把误差结果作为一个单一的数值来计算是非常重要的。否则很难评估算法的性能。例如,如果我们使用词干分析,这是将同一个不同形式的单词(fail/failing/failed)作为一个单词(fail)处理的过程,并且得到3%的错误率而不是5%,那么我们肯定应该将其添加到我们的模型中。然而,如果我们试图区分大写和小写字母,最终得到的错误率是3.2%,而不是3%,那么我们应该避免使用这个新特性。因此,我们应该尝试新的东西,得到一个错误率的数值,并根据我们的结果决定是否要保留新的特征。

 

偏斜类(skewed classes)

倾斜类的错误度量

查准率(precision)和召回率(recall)

actual=1&predicted=1表示真阳性,也就是预测是1,真实的也是1,预测病人得了癌症,实际上客户也得了癌症

 

权衡查准率(precision)和召回率(recall)

可以设置threshold临界值的大小来调整查准率和召回率,如果希望非常精准的预测那么h必须要大于0.9才能设置predict为1

使用f1 score来评估算法,对于一个最完美的F值,如果查准率等于1 ,同时召回率,也等于1 ,那你得到的F值,等于1乘以1,除以2再乘以2,那么F值,就等于1

测试

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值