发现自己不写总结真是件很恶劣的事情,好多学的东西没有自己总结都忘记了。所以决定从今天开始,学东西的时候一定跟上总结。

我写的东西大多数是自己通俗的总结,不太喜欢写严格的定义或者证明,写了也记不住,欢迎指正。

1. High Bias vs. High Variance

High Bias:通常是因为模型过于简单,使得不能成功拟合数据。比如说一些有二次曲线特性的数据,如果用一次直线去拟合就会出现这个问题,所以它对应了Underfitting问题。另外,从泛化角度来说,这样的模型泛化程度更高。

High Variance:通常是因为模拟过于复杂,使得模型泛化到一般数据时效果很差,但是在训练数据上效果通常很好的问题,它对应了Overffiting的问题。从泛化角度来说,这样的模型泛化程度很低。

2. Cross Validation Set, Training Set, Test Set

Cross Validation Set: 测试模型以调整参数

Training Set:训练数据集

Test Set:最终测试数据集

其实我一直不太明白为什么要单独设置一个Cross Validation,后来做Review Question的时候做到这道题:为什么不能用测试数据集测试模型来调整模型参数?答案是测试数据集可能使得模型把参数调整到只适合测试数据集的范围,这样模型在遇到一个没见过的实例时,效果还是不好。所以我们单独设置一个Cross Validation集合来调整参数,如果这样最后在测试数据上的表现很好,那么就有信心这个模型是真的好了。

在这三个集合上的误差分别由如下公式计算:

Jtrain  = 1/2m ∑(hθ(x(i)-y(i))2

Jcv  = 1/2mcv ∑(hθ(x(i)-y(i))2

Jtest  = 1/2mtest ∑(hθ(x(i)-y(i))2

3. Learning Curves:有助于查看模型是High Bias还是High Variance,两者的图分别如下

High Bias:

当underfitting的时候,训练数据集越少,模型越容易拟合数据,所以训练集上误差越小,此时模型几乎不能描述数据集任何特征,所以在cross validation上误差很高;随着训练数据的增加,模型的不足逐渐暴露出来,在训练数据集上的误差逐渐增大,但能描述一些数据特征,所以在corss validation上的误差逐渐减小;最后,算法在cross validation和训练数据集的误差逐渐靠近,并且都很高,最后即使增加训练数据,二者也不会降低,因为模型的“描述能力”很低,即使有再多的数据也没有发展空间了。

High Variance:

当overfitting的时候,train error和cv error变化的原因跟上述一致,不同的在于此时模型具有模型更复杂特征的能力,cv error和 train error之间会有一个gap,我们可以认为这个gap会随着训练数据的增多而减少,因为过拟合在实际中效果差的原因是它有可能拟合了一些噪音点,而没有突出数据的整体特征,那么随着训练数据的增多,受单个噪音点的影响就会降低,cv error就会降低。

4.根据High Bias和High Variance使用不同的方法

Get  more  training  examples  High Variance
Try  smaller  sets  of  features High Variance
Try  getting  additional  features High Bias
Try  adding  polynomial  features High Bias
Try  decreasing λ High Bias
Try  increasing λ High Variance

5. Error Analysis

指手动查看数据以找出算法哪方面最弱,根据特定方向改进算法。

比如说一个文档分类器的效果很差,那么有两种error analysis的步骤:第一,查看算法是否在某一类特定的文本上效果差;第二,看算法是否在某一方面表现很差,比如是否在有拼写错误或者没有提取词干等。

Recommended approach:

Implement a simple and quick model->plotting learning curves->error analysis

6. Precision vs. Recall

Precision = #True Positive /#predicted positive = #True Positive / (#True Positive + # False Positive)

即在模型预测是正例中,实际也是正例的百分比。就好像我给人算命,准确率就是在我说有桃花运的人里面真的就有桃花运的人的百分比。

Recall = #True Positive / # actual positive = #True Positive/(#True Positive+#False Negative)

即在所有的正例中,模型预测也是正例的百分比。就好像检查一个人得没得癌症,召回率的意思就是在实际得癌症的人中我“召回”的人的百分比(得了癌症当然要召回来告诉人家了)。

试想一个模型只有1%的正例,如果只考虑准确率的话,那么我预测所有的模型都是负例,也可以得到99%的准确率,显然不是一个实用的模型。但是如果我同时考虑了召回率,就会发现此时的召回率是0,就可以断定这不是一个好模型。

7. F Score(F1 Score)

在准确率和召回率之间有一个tradoff,准确率越高,召回率越低;反之亦然。那么怎么衡量一个模型是“准确率和召回率都很高”呢?

一个指标就是F Score:2PR/(P+R),        P ,R分别表示准确率和召回率

我们可以这么看这个公式,它也等于2/(1/P + 1/R)(和初中计算平均速度的公式很像,不知道算不算一点理解F Score的启发)。在这个公式里,如果P和R任何一方降低,那么F Score就会降低。

8. Large Data Rationale

一个好的模型要求两点:

(1)人工可以从数据集准确预测。如果人都做不到的事情,就不要为难机器了。比如上次那个坑爹的表情识别,人都看不出sad和angry的区别,干嘛去折磨电脑呢。

(2)有很多数据训练一个有很多参数的模型。第一,一个复杂的模型保证Jtrain很小;第二,大量的训练数据保证Jtrain和Jtest 相近,这样我就可以认为Jtest 也很小了。

【coursera笔记】Machine Learning(Week6)的更多相关文章

  1. Coursera《machine learning》--(14)数据降维

    本笔记为Coursera在线课程<Machine Learning>中的数据降维章节的笔记. 十四.降维 (Dimensionality Reduction) 14.1 动机一:数据压缩 ...

  2. Coursera《machine learning》--(8)神经网络表述

    本笔记为Coursera在线课程<Machine Learning>中的神经网络章节的笔记. 八.神经网络:表述(Neural Networks: Representation) 本节主要 ...

  3. Coursera《machine learning》--(2)单变量线性回归(Linear Regression with One Variable)

    本笔记为Coursera在线课程<Machine Learning>中的单变量线性回归章节的笔记. 2.1 模型表示 参考视频: 2 - 1 - Model Representation ...

  4. Coursera《machine learning》--(6)逻辑回归

    六 逻辑回归(Logistic Regression:LR) 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就是由于这个逻辑函数,使得 ...

  5. Machine Learning - XI. Machine Learning System Design机器学习系统的设计(Week 6)

    http://blog.csdn.net/pipisorry/article/details/44119187 机器学习Machine Learning - Andrew NG courses学习笔记 ...

  6. How do I learn machine learning?

    https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644   How Can I Learn X? ...

  7. Coursera课程《Machine Learning》学习笔记(week1)

    这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng.在自己看神经网络的过程中也的确发现自己有基础不牢.一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺.目前的计划是先 ...

  8. 学习笔记之Machine Learning by Andrew Ng | Stanford University | Coursera

    Machine Learning by Andrew Ng | Stanford University | Coursera https://www.coursera.org/learn/machin ...

  9. Coursera课程《Machine Learning》吴恩达课堂笔记

    强烈安利吴恩达老师的<Machine Learning>课程,讲得非常好懂,基本上算是无基础就可以学习的课程. 课程地址 强烈建议在线学习,而不是把视频下载下来看.视频中间可能会有一些问题 ...

  10. Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记

    Week1: Machine Learning: A computer program is said to learn from experience E with respect to some ...

随机推荐

  1. php 设计API之优化 记

    服务器端 可以考虑使用rest实现,清晰url:put http://aa.com/news 客户端 curl实现muliti机制,实现多线程并发,节省多接口调用的时间 curl实现keepalive ...

  2. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  3. 【BZOJ】【1503】 【NOI2004】郁闷的出纳员

    Splay Splay的模板题吧……妥妥的序列操作= =(好像有段时间没写过这种纯数据结构题了……) /************************************************ ...

  4. [bzoj 3226]校门外的区间

    题意 输出最后的集合   题解 校门外的树会做吧 区间知道是什么东西吧 校门外的区间会做了吧 昨天做个大线段树没做出来,今天做个小线段树压压惊 py一下输入数据,然后操作变成: U 区间涂1 I 两侧 ...

  5. JAVA swing中JPanel如何实现分组框的效果以及设置边框颜色 分类: Java Game 2014-08-16 12:21 198人阅读 评论(0) 收藏

    代码如下: import java.awt.FlowLayout; import java.awt.Frame; import java.awt.GridLayout; import javax.sw ...

  6. [百度空间] [转]DLL地狱及其解决方案

    DLL地狱及其解决方案 原作者:Ivan S Zapreev 译者:陆其明概要 本文将要介绍DLL的向后兼容性问题,也就是著名的“DLL Hell”问题.首先我会列出自己的研究结果,其中包括其它一些研 ...

  7. datepicker,结束时间必须大于开始时间

    $('#js-start-time').datepicker({ dateFormat:'yy-mm-dd', onSelect: function( startDate ) { var $start ...

  8. IDA 在string窗口中显示中文字符串

    打开ida61\cfg中的ida.cfg文件找到 // (cp866 version)AsciiStringChars = "\r\n\a\v\b\t\x1B" " !\ ...

  9. 利用Jquery实现http长连接(LongPoll) {转}

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JqueryAjaxLongPo ...

  10. maven 多套环境 配置(开发、测试、预发、正式)

    接上一节继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local).(开发小组内自测的)开发环境(dev).(提供给测试团队的)测试环境(test).预发布环境(pre ...