怎样评价我们的学习算法得到的假设以及如何防止过拟合和欠拟合的问题。

当我们确定学习算法的参数时,我们考虑的是选择参数来使训练误差最小化。有人认为,得到一个很小的训练误差一定是一件好事。但其实,仅仅是因为这个假设具有很小的训练误差,当将其样本量扩大时,会发现训练误差变大了,这说明它不是一个好的假设。比如下图,拟合的非常好,一旦样本量改变,其训练误差随之增大。

那么我们如何判断一个假设是否是过拟合的呢?我们可以画出假设函数h(x),然后观察。但对于更一般的情况,特征有很多个,比如下图。想要通过画出假设函数来观察,就变得很难甚至不可能了。因此,我们需要另一种评价假设函数的方法。

如下给出了一种评价假设的标准方法,假如我们有这样一组数据组,在这里只展示了10组训练样本,当然通常有成百上千组训练样本(下图)。为了确保我们可以评价我们的假设函数,我们要做的是将这些数据分成两部分。第一部分将成为我们的训练集,第二部分将成为我们的测试集。将所有数据分成训练集和测试集,其中一种典型的分割方法是按照7:3的比例,将70%的数据作为训练集,30%的数据作为测试集。这里的m表示训练样本的总数,而剩下的那部分数据将被用作测试集。下标test将表示这些样本是来自测试集,因此x(1)test,y(1)test将成为第一组测试样本。值得注意的是,在这里选择了前70%的数据作为训练集,后30%的数据作为测试集。但如果这组数据有某种规律或顺序的话,那么最好是随机选择70%作为训练集,剩下的30%作为测试集。当然如果数据已经随机分布了,那么可以选择前70%和后30%。但如果你的数据不是随机排列的,最好还是打乱顺序,或者使用一种随机的顺序来构建数据,然后再取出前70%作为训练集,后30%作为测试集。

下面展示了一种典型的训练和测试线性回归学习算法。首先,对训练集进行学习,得到参数θ。具体来讲就是最小化训练误差J(θ),这里的J(θ)是使用那70%数据来定义得到的,也就是仅仅是训练数据的。接下来,计算测试误差,J下标test来表示测试误差。取出之前从训练集中学习得到的参数θ放在这里,计算测试误差,可以写成如下图的形式(蓝色字迹),这实际上是测试集平方误差的平均值,也就是我们期望得到的值。因此,我们使用包含参数theta的假设函数对每一个测试样本进行测试,然后通过假设函数和测试样本计算出mtest个平方误差。这是当我们使用线性回归和平方误差标准时,测试误差的定义。

那么如果是分类问题,比如说使用逻辑回归的时候呢。

训练和测试逻辑回归的步骤,与之前所说的非常类似。首先我们要从训练数据,也就是所有数据的70%中学习得到参数theta,然后用如下的方式计算测试误差,目标函数和我们平常做逻辑回归的一样。唯一的区别是,现在我们使用的是mtest个测试样本,这里的测试误差Jtest(θ)其实叫误分类率,也被称为0/1错分率。0/1表示了我们预测到的正确或错误样本的情况。当假设函数h(x)的值大于等于0.5,并且y的值等于0,或者当h(x)小于0.5,并且y的值等于1,那么这个误差等于1。这两种情况都表明假设函数对样本进行了误判,这里定义阈值为0.5。也就是说,假设结果更趋向于1,但实际是0;或者说假设更趋向于0,但实际的标签却是1,这两种情况都表明误判。否则,我们将误差值定义为0,此时假设值能够正确对样本y进行分类。

然后,我们就能应用错分率误差来定义测试误差,也就是1/mtest乘以h(i)(xtest)和y(i)的错分率误差(从i=1到mtest的求和)。

斯坦福大学公开课机器学习: advice for applying machine learning - evaluatin a phpothesis(怎么评估学习算法得到的假设以及如何防止过拟合或欠拟合)的更多相关文章

  1. 斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)

    当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大.要么方差比较大.换句话说,要么是欠拟合.要么是过拟合.那么这两种情况,哪个和偏差有关.哪个和方差有关,或者是不是 ...

  2. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  3. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  4. 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)

    怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...

  5. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  6. 斯坦福大学公开课机器学习: machine learning system design | prioritizing what to work on : spam classification example(设计复杂机器学习系统的主要问题及构建复杂的机器学习系统的建议)

    当我们在进行机器学习时着重要考虑什么问题.以垃圾邮件分类为例子.假如你想建立一个垃圾邮件分类器,看这些垃圾邮件与非垃圾邮件的例子.左边这封邮件想向你推销东西.注意这封垃圾邮件有意的拼错一些单词,就像M ...

  7. 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)

    如上图所示,如果用逻辑回归来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数g(x).这里g仍是s型函数(即 ).我们能让函数包含很多像这的多项式,当多项式足够多时,那么你也许能够得到可以 ...

  8. 斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

    假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到 ...

  9. 斯坦福大学公开课机器学习: advice for applying machine learning | deciding what to try next(revisited)(针对高偏差、高方差问题的解决方法以及隐藏层数的选择)

    针对高偏差.高方差问题的解决方法: 1.解决高方差问题的方案:增大训练样本量.缩小特征量.增大lambda值 2.解决高偏差问题的方案:增大特征量.增加多项式特征(比如x1*x2,x1的平方等等).减 ...

随机推荐

  1. ssm框架整合配置,用maven配置依赖jar包

    1.创建maven project 首先在pom.xml中指定工程所依赖的jar包 <project xmlns="http://maven.apache.org/POM/4.0.0& ...

  2. git放弃修改,强制覆盖本地代码

    $ git fetch --all $ git reset --hard origin/master $ git pull

  3. 初识Anrdiod SDK

    概念 SDK:(software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. 因此,Android ...

  4. ABP实践学习

    一.

  5. 在Linq to sql 和 Entity framework 中使用lambda表达式实现left join

    在Linq to sql 和 Entity framework 中使用lambda表达式实现left join 我们知道lambda表达式在Linq to sql 和 Entity framework ...

  6. How to mount HFS EFI on macOS

    mount_hfs /dev/disk0s1 /volumes/efi

  7. webpack始出来

    一直想好好整理一下webpack,现在就整理吧. 总结自己的实际搭建的整理情况,我还是要先对自己说一句,以后给文件夹起名字的时候不要用一些特殊的关键字,比如我在做这个demo的时候,我用的文件夹名称叫 ...

  8. react 自我小计

    1.react中的方法调用,在onClick事件中不需要加小括号. <button onClick={this.show}>方法的调用</button> show(){ con ...

  9. poj-2752(拓展kmp)

    题意:求一个串所有的前后缀字串: 解题思路:kmp和拓展kmp都行,个人感觉拓展kmp更裸一点: 拓展kmp: #include<iostream> #include<algorit ...

  10. Spring 使用介绍(八)—— 零配置(一)

    一.概述 所谓零配置,并不是说一点配置都没有了,而是配置很少而已.通过约定来减少需要配置的数量,提高开发效率. 零配置实现主要有以下两种方式: 惯例优先原则:也称为约定大于配置(convention ...