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

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

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. NSIS中判断.net framework 是否安装

    在网上找了几个脚本,原理都是读取注册表进行判断,都可以用. 1.CheckDotNetFramework /* * Name: CheckDotNetFramework.nsh * Version: ...

  2. Angular 2 Quickstart

    写一个Angular 2的应用最基本的步骤概括为三步:写root组件,启动它(Boostrap),写index.html. 一些关于命名空间的基本知识 把所有代码放入一个立即调用函数中,通过传入一个空 ...

  3. Entity Framework公共的增删改方法

    using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.I ...

  4. Json Serialize 忽略特定属性

    Json Serialize 忽略特定属性 Json Serialize SerializeFilter 忽略特定属性 key words:Json Serialize jackson fastjso ...

  5. 【BZOJ】【2049】【SDOI2008】洞穴勘测 Cave

    LCT 哦……LCT的一道更水的裸题,适合学习access,link,cut等基本操作(其实这三个不是在一个层面上的?不要在意这些细节……) /**************************** ...

  6. 原生js实现中文时钟

    零.寒暄 终于一个月可以更新两篇博客了,开心.昨天花了大概一天的时间玩了下github,基本的clone和push都搞定了,如果有和我一样的新手没调通的,大家可以交流. 另外,说个题外话,大家发现我的 ...

  7. ajax原理总结附简单实例及其优点

    在工作中用了Ajax N多次了,也看过一些相关方面的书籍,也算是认识了它,但是一直没有认真总结和整理过相关的东东,失败! 近有闲情,将之总结如下: [名称] Ajax是Asynchronous Jav ...

  8. no module named staticfiles

    原地址:http://blog.sina.com.cn/s/blog_77500e110100umms.html 今天想试一下django的Uploadify,找了个例子,运行时出错:myprojec ...

  9. java 驼峰命名

    jstl中前台jsp页面调用对象中的属性时, 用的是小驼峰命名法. 例如:${item.createTime} 1.小驼峰式命名法(lower camel case): 第一个单字以小写字母开始,第二 ...

  10. HDU 1392 Surround the Trees (Graham求凸包周长)

    题目链接 题意 : 让你找出最小的凸包周长 . 思路 : 用Graham求出凸包,然后对每条边求长即可. Graham详解 #include <stdio.h> #include < ...