这一章应该算是比价了理论的一章,我有些概率论基础,不过起初有些地方还是没看多大懂。其中有些公式的定义和模型误差的推导应该还是很眼熟的,就是之前在概率论课上提过的,不过有些模糊了,当时课上学得比较浅。

Day2 第二章 模型评估与选择

2.1 经验误差与过拟合

  通常我们把分类错误的样本数占样本总数的比例称为“错误率(error rate)”,即错误率E=a/m,m个样本中a个错误,1-a/m称为“精度(accuracy)”,我们把学习器的实际输出与样本的真实输出之间的差异称为“误差(error)”,学习期在训练机上的误差称为“训练误差(training error)”或“经验误差(empirical error)”,在新样本上的误差叫做“泛化误差(generation error)”,显然,我们做机器学习,就是希望得到泛化误差小的学习器。

  一个好的学习器,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,注意,这里说的“普遍规律”。这里就涉及到学习器的两个概念:“过拟合(overfitting)”和“欠拟合(underfitting)”。过拟合:就是学习器把本学得太好了,把训练样本自身的一些特点当做了潜在样本都会有的一般性质了,欠拟合:顾名思义,就是对训练样本的一般性质还没学好。导致过拟合的因数很多,最常见的是由于学习能力过于强大,把样本不太一般的特性都学会了,而欠拟合是由于学习能力低下造成的。欠拟合容易克服,过拟合不好克服(要构造性地证明 “P=NP”,只要相信“P≠NP”,过拟合就不可避免),比较麻烦。

2.2 评估方法

  通常,我们可通过实验测试来对学习器的泛化误差进行评估进而做出选择。

  为此,我们需要使用一个“测试集(testing set)”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差(testing error)”作为泛化误差的近似。这里说到的测试集,来自于数据集,应该尽可能与训练集排斥,即测试样本尽量不在训练集中出现,未在训练集中使用过,这很好理解:学完一门课,老师出了10道习题用作课后练习,如果老师想要考察同学们对着门课的学习情况,如果用这10道习题用作考题,显然得不到正确的考察结果。但是,我们如果只有一个包含m个样本的数据集D={(x1, y1),(x2, y2),…,(xm, ym)},既要训练,又要测试,我们就要对D做适当的处理,从中产生训练集S和测试集T,有以下常见做法:

  2.2.1 留出法

“留出法(hold-out)”直接将数据集D划分为两个互斥的集合,训练集S和测试集T,即D=S∪T,S∩T=∅。我们通常将数据集的大约2/3~4/5的样本用作训练,剩余样本用作测试。

  2.2.2 交叉验证法

“交叉验证法(cross validation)”先将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk, Di∪Dj=∅(i≠j),且每个子集Di都尽可能保持原数据分布的一致性。然后,每次用k-1个子集的并集作为训练集,余下的一个子集做测试集,这样就可以获得k组训练/测试集,从而进行k次训练和测试,最终返回的是k个测试结果的平均值,因此,我们通常把交叉验证法称为“k折交叉验证法(k-fold cross validation)”。其中的一个特例是k=m:留一法(Leave-One-Out,简称LOO)。

  2.2.3 自助法

我们希望评估的是用D训练出的模型,但留出法和交叉验证法中,由于保留了一部分样本用作测试,因此实际评估的模型使用的训练集比D小,这必然会引入一些因训练集规模不同而导致的估计偏差。“自助法(bootstrapping)”是一个比较好的解决方案,它直接以自助采样法(bootstrap sampling)为基础。用自助法通过一些列处理,达到的效果是:实际评估的模型和期望评估的模型都使用m个训练样本,而仍有数据总量约1/3的、没在训练集中出现的样本用于测试,这样的测试结果,也叫“包外估计(out-of-bag estimate)”。自助法在数据集较小。难以有效划分训练/训练集时很有用。

  2.2.4 调参和最终模型

大多数的学习算法都有些参数(parameter)需要设定,参数配置不同,学得的模型的性能有显著差别。

2.3 性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量泛化能力的评价标准,这就是性能度量(performance measure)

  2.3.1 错误率和精度

  2.3.2 查准率、查全率和F1

  2.3.3 ROC和AUC

ROC全称“受试者工作特征(Receiver Operating Characteristic)”曲线,源自于“二战”中用于敌机检测的雷达信号分析技术,二十世纪六七十年代开始别用于一些心理学、医学检测应用中,此后别引入机器学习领域。AUC(Area Under ROC Curve),AUC可通过对ROC曲线下各部分的面积求和而得。

  2.3.4 代价敏感错误率和代价曲线

2.4 比较检验(对这一块知识没看太懂后续多看几遍)

有了实验评估方法和性能度量,可以使用某种实验评估方法测得学习器的某个性能度量,然后对这些结果进行比较,但问题是如何做这个“比较”。

统计假设检验“hypothesis test”为上面说的学习器性能比较提供了重要的依据。

  2.4.1 假设检验

  概率论和统计学上面的概念

  2.4.2 交叉验证t检验

  2.4.3 McNemar检验

  2.4.4 Friedman 检验和Nemenyi后续检验

2.5 偏差与方差

  自助采样法在机器学习中有重要用途。ROC曲线在二十世纪八十年代后期被引入机器学习,AUC则是从九十年代中期在机器学习领域广为使用。

  (第二章笔记到此,继续学习后续章节)

Day2 《机器学习》第二章学习笔记的更多相关文章

  1. AS开发实战第二章学习笔记——其他

    第二章学习笔记(1.19-1.22)像素Android支持的像素单位主要有px(像素).in(英寸).mm(毫米).pt(磅,1/72英寸).dp(与设备无关的显示单位).dip(就是dp).sp(用 ...

  2. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

  3. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

  4. 《Linux内核设计与实现》课本第一章&第二章学习笔记

    <Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...

  5. Linux第一章第二章学习笔记

    第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...

  6. Machine Learning In Action 第二章学习笔记: kNN算法

    本文主要记录<Machine Learning In Action>中第二章的内容.书中以两个具体实例来介绍kNN(k nearest neighbors),分别是: 约会对象预测 手写数 ...

  7. Thinking in Java 第二章学习笔记

    Java虽基于C++,但相比之下,Java是一种更加纯粹的面向对象程序设计语言. 在Java的世界里,几乎一切都是对象,而Java中的全部工作则是定义类,产生那些类的对象,以及发送消息给这些对象. 尽 ...

  8. Scala第二章学习笔记

    最基本的练习~: 使用伴生对象: object holder{ class Foo{ private var x = 5} object Foo{def im_in_yr_foo(f: Foo) = ...

  9. 《Python自然语言处理》第二章 学习笔记

    import nltk from nltk.book import * nltk.corpus.gutenberg.fileids() emma = nltk.corpus.gutenberg.wor ...

随机推荐

  1. 解决winform窗体闪烁问题

    如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码: 请在构造函数里面底下加上如下几行: SetStyle( ...

  2. Oracle ADF 开发必读

    MARK:http://www.oracle.com/technetwork/cn/articles/adf/index-086064-zhs.html 第 1 部分- 借助 Subversion 进 ...

  3. 链路层 - SLIP,PPP,

    最常使用的封装格式是RFC 894定义的格式.图2 - 1显示了两种不同形式的封装格式.图中每个方框下面的数字是它们的字节长度. 两种帧格式都采用48 bit(6字节)的目的地址和源地址( 8 0 2 ...

  4. 如何使用ZOL一键安装器下载中关村在线的源安装包

    如何使用ZOL一键安装器下载中关村在线的源安装包 马根峰               (广东联合电子服务股份有限公司, 广州 510300) 摘要    中关村在线最近开始推出ZOL一键安装器,用户直 ...

  5. LeetCode(26)-Binary Tree Level Order Traversal II

    题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...

  6. LeetCode(31)-Factorial Trailing Zeroes

    题目: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...

  7. ruby用来发送互联网邮件

    其实只要你任性的可以,用telnet也是可以发邮件的哦.不过本猫没那么任性,还是用KISS原则来发邮件吧.本篇博文只介绍了如何发邮件,但没涉及收邮件的事,以后如有机会会单独开一篇博文介绍. ruby通 ...

  8. 如何在Visual Studio 2017中使用C# 7+语法

    前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不喜勿喷,或许对您有帮助. 在Visual Studio 2017配置 ...

  9. IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗

    前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...

  10. VS2010断点调试技巧

    设置断点:在如下图中的红色圆点处设置断点,红色圆点表示已经在这行设置断点.快捷键F9.   启动调试:按F5或者点击左边红框中的按钮.右边框是开始执行(不调试)Ctrl+F5. 调试工具栏:下面是工具 ...