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

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

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. vmware workstation 10.0

    2013.9.3 vmware workstation 10.0 build 1295980新增功能– 可以将windows 8.1物理pc转变为虚拟机:unity模式增强,与windows 8.1 ...

  2. 【BZOJ】【1096】【ZJOI2007】仓库建设

    DP/斜率优化 Orz Hzwer 八中好像挂了……明天再提交吧…… UPD:2015-03-12 17:24:43 算了,毕竟是第一道题,还是仔细写一下斜率优化的过程吧.(部分引自Hzwer的题解) ...

  3. 【BZOJ】【1005】【HNOI2008】明明的烦恼

    Prufer序列/排列组合+高精度 窝不会告诉你我是先做了BZOJ1211然后才来做这题的>_>(为什么?因为我以前不会高精度呀……) 在A了BZOJ 1211和1089之后,蒟蒻终于有信 ...

  4. 宠物AI(个人觉得有问题)

    //宠物AI流程 .刚开始添加宠物 Monster被动State:EnumMonster被NULL MonsterStat:EnumPet跟随 .附近有怪物就改成攻击模式(相关的收尾工作) void ...

  5. Codeforces Round #231 (Div2) 迟到的解题报告

    题目A: 给一个火柴等式,可以从左边移动一根到右边,也可以从右边移到左边,但是不能移动“+”,”=“的火柴, 而且加法里面的数都要大于0(很重要的条件),基本上注意到这点的都过了,没注意的都被HACK ...

  6. Sqli-labs less 54

    第四部分/page-4 Challenges Less-54 此系列主要是一个进阶的学习,将前面学到的知识进行更深次的运用.这一关我们主要考察的依旧是字符型注入,但是只能尝试十次.所以需要在尝试的时候 ...

  7. 【C++】指针数组和数组指针

    首先的首先,稍微抱怨一下阿里今天的严重失误.说好的晚六点笔试,说好的务必提前半小时到场.六点十五的时候告诉闷在一个大教室里躁动的我们“今天七点半开考,大家先回去吧,七点半再过来”,满脸黑线…等到七点半 ...

  8. POJ 3450 Corporate Identity (KMP,求公共子串,方法很妙)

    http://blog.sina.com.cn/s/blog_74e20d8901010pwp.html我采用的是方法三. 注意:当长度相同时,取字典序最小的. #include <iostre ...

  9. UVA 624 CD(01背包+输出方案)

    01背包,由于要输出方案,所以还要在dp的同时,保存一下路径. #include <iostream> #include <stdio.h> #include <stri ...

  10. poj 3522(最小生成树应用)

    题目链接:http://poj.org/problem?id=3522思路:题目要求最小生成树中最大边与最小边的最小差值,由于数据不是很大,我们可以枚举最小生成树的最小边,然后kruskal求最小生成 ...