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

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

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. iOS网络传输Delegate不被触发的本质原因

    NSURLSession一共有四种Delegate (文后附表有Session和SessionTask分类表格) NSURLSessionDelegate, NSURLSessionDownloadD ...

  2. BitMap排序

    问题描述:       BitMap排序思想:             用1bit位标记某个元素对应的值       优点:             效率高,不允许进行比较和移位            ...

  3. .Net 命名(委托,事件==)

    委托及参数命名: public delegate void ClickedEventHandler(object sender, ClickedEventArgs e); ClickedEventHa ...

  4. 编程计算并输出1~n之间所有素数之和

    http://www.tuicool.com/articles/qaaA3i   TODO

  5. 从maya导入物体 Importing Objects From Maya

    原地址:http://game.ceeger.com/Manual/HOWTO-ImportObjectMaya.html Unity natively imports Maya files. To ...

  6. 客户端的数据来源:QueryString, Form, Cookie Request[]与Request.Params[]

    在ASP.NET编程中,有三个比较常见的来自于客户端的数据来源:QueryString, Form, Cookie . 我们可以在HttpRequest中访问这三大对象. QueryString: 获 ...

  7. 【基本算法】 KMP文本串模式串的字符串匹配算法

    看了两个晚上的KMP,加上基本的“暴力匹配” 今晚看懂next[j]递归求解时,突然觉得算法真的好美妙,虽然觉悟的晚但晚胜过没有是吧! 我的博客都是应试性的学习笔记,不具备指导性,还是大神们写的好,例 ...

  8. POJ 2041

    #include <iostream> #include <string> #include <algorithm> using namespace std; st ...

  9. Spinner学习

    我暂且把Spinner称作下拉选择框吧,先来看一下它的效果: 在layout文件中添加Spinner的代码如下: <Spinner android:id="@+id/planets_s ...

  10. C#保留小数位数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); prov ...