Stanford机器学习---第六讲. 怎样选择机器学习方法、系统

原文见http://blog.csdn.net/abcjennifer/article/details/7797502  添加了一些自己的注释和笔记

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine
learning中Andrew老师的讲解。(https://class.coursera.org/ml/class/index

第六讲. 怎样选择机器学习方法——Advice for applying machine learning

===============================

候选机器学习方法

评价方法假设

☆模型选择和训练、验证实验数据

☆区别诊断偏离bias和偏差variance

☆规则化 和 bias/variance

Learning Curve:什么时候增加训练数据training set才是有效的?

===============================

候选机器学习方法——Deciding what to try next

还用房价的prediction举例,假设我们已经实现了用规则化的线性回归方法预测房价:

但发现该预测应用于一个新的训练数据上时有很大误差(error),这时应采取一些解决方案:

Get more training examples

Try smaller sets of features

Try getting additional features

Try adding polynomial features (e.g.  x1^2, x2^2, x1x2...)

Try decreasing λ

Try increasing λ

Machine Learning 方法的诊断:

- 什么是诊断Dignostic呢?诊断就是能够判断一种学习算法能不能work,并且改善该算法性能的一个测试。

Diagnostic: A test that you can run to gain insight what is/isn‘t working with a learning algorithm, and gain guidance as to how best to improve its performance.

-诊断的效果:Diagnostics can take time to implement, but doing so can be a very good use of your time.

===============================

评价方法假设——Evaluating a hypothesis

首先呢,我们将所有数据分为两个集合,一个Trainning set和一个Testing set,用Training set得到参数向量,用Testing set进行测试(比如分类)。

这时,将test set的error分为线性回归linear regression和逻辑回归logistic regression两类:

-线性回归的error:

-逻辑回归的error:

===============================

模型选择和训练、验证实验数据

面对模型选择问题,如何才能得到一个just fit的模型而不会导致underfit 或者overfit呢?我们引入一类数据集,叫做cross validation set,即交叉验证数据集。将所有数据按<6,2,2>分为training set , cross validation set , testing set三类,如下图所示:

其error计算公式如下,其实三类计算方法大同小异,相同的公式只是换了数据及而已:

进行模型选择的方法其实很简单,对应下图大家来看:

-首先,建立d个model 假设(图中有10个,d表示其id),分别在training set 上求使其training error最小的θ向量,那么得到d个θ

-然后,对这d个model假设,带入θ,在cross validation set上计算J(cv),即cv set error最小的一个model 作为 hypothesis,如下图中J(cv)在第4组中最小,便取d=4的假设。

PS: 其实d表示dimension,也就是维度,表示该hypothesis的最大polynomial项是d维的。

PS‘: 一般地,J(cv)是大于等于J(train)的

===============================

区别诊断偏离bias和偏差variance

前面的课程中我们曾讲过相同数据不同回归情况:

这一节中,我们给大家区分两个概念:bias vs. variance。

如下图所示为error随不同dimension的model变化图,可以想见,随d上升是一个由underfit到overfit的过程,这个过程中,training
set的error逐渐下降,而cv set的error先降后升。

这里就产生了bias和variance的概念:

bias:J(train)大,J(cv)大,J(train)≈J(cv),bias产生于d小,underfit阶段;

variance:J(train)小,J(cv)大,J(train)<<J(cv),variance产生于d大,overfit阶段;

如下图所示:

来来,做道题:

-------------------------------------------------------------

好,有了初步概念,现在我们来看bias和variance的由来及具体定义:

给定数据及D(比如一个点集吧),对于这些数据集上的点我们可以计算每个index下点的平均值(即期望)t(x) = E(y|x),则我们有mean square error:

MSE = 1/n * Σ(f(x)-t(x))^2

MSE(mean square error) = Bias2 + Variance +noise

定义上是这么讲的:

Variance: measures the extent to which the solutions for individual data sets vary around their average, hence this measures the extent to which the function f(x) is sensitive to theparticular choice of data set.

Bias: represents the extent to which the average prediction over all data sets differs from the desired regression function.

Our goal is to minimize the expected loss, which we havedecomposed into the sum of a (squared) bias, a variance, and a constant noiseterm. As we shall see, there is a trade-off between bias
and variance, with very flexible models(overfit) having low bias and high variance, and relatively rigid models(underfit) having high bias and low variance

总结一下:

variance:估计本身的方差。

bias:估计的期望和样本数据样本希望得到的回归函数之间的差别。

具体来讲,我有一个统计量D(比如统计某大学研一学生身高在[0.5-1],[1,1.1],[1.1,1.2]……[1.9,2]之间的人数),这样可以形成一些离散点。然后呢,本校研一有20个班,每个班就都可以拟合成一条估计曲线f(x),这20条曲线呢,有一个平均值,也就是估计期望(均值)曲线E(f(x,D))。

variance是指,这20条估计曲线与最后估计期望(均值)之间的距离,也就是估计曲线本身的方差,是不可能为0的。

bias是指,20条估计曲线的均值与实际最佳拟合情况之间的距离。

这样一来呢,对于regularization项中的λ,

λ小 , d大 -> overfit(flexible) ->

对于不同的训练数据集(不同班级的数据)的拟合结果抖动很大 -> variance大

bias是估计均值与实际值期望的偏差 -> bias小

下图中,左图为拟合的20条曲线;右图红线为20条曲线的期望,绿色为实际数据期望所得的拟合曲线。

λ大 , d小 -> underfit(stable) ->

对于不同的训练数据集(不同班级的数据)的拟合结果抖动较小 -> variance小

bias是估计均值与实际值期望的偏差 ,不能很好地进行回归-> bias大

下图中,左图为拟合的20条曲线;右图红线为20条曲线的期望,绿色为实际数据期望所得的拟合曲线。

下图所示为λ与bias, variance, error之间的关系:

我们希望的数据的variance和bias都不要大:

那么着就是一个variance和bias之间的tradeoff 了~

===============================

规则化 和 bias/variance

上面一节中讲了bias和variance的诞生,那么这一节中偶们就将他们应用于regularization中。

大家还记的什么是regularization么?regularization就是为了防止overfit而在cost
function中引入的一个分量。

还不清楚?看下图吧,regularization项就是cost function J(θ)中的最后一项,其中λ太大导致underfit,λ太小导致overfit……

将λ从0,0.01,一直往上每次乘以2,那么到10.24总共可以试12次λ。

这12个λ会得到12个model的 cost function,每个对应有J(θ)和 Jcv(θ).

和模型选择的方法相同,首先选出每个cost function下令J(θ)最小的θ,然后取出令Jcv(θ)最小的一组定为最终的λ。

来来,看看你做的对不:

图画出来就是这个样子滴:

λ太小导致overfit,产生variance,J(train)<<J(cv)

λ太大导致underfit,产生bias,J(train) ≈ J(cv)

能明白我的意思么?

===============================

Learning Curve:什么时候增加训练数据training set才是有效的?

这一小节想要讲讲训练数据个数m和error之间的关系。从上面这幅图中我们可知(不知的话用极限思维想想),训练数据越少(如果只有一个),J(train)越小,J(cv)越大;m越大,J(train)越大(因为越难perfectly拟合),J(cv)越小(因为越精确),懂我的意思吧?

那么我们分别就High Bias 和 High Variance来看看增加training set个数,即m,是否有意义?!

Underfit 的 High bias: 增加m无济于事!

Overfit的 High Variance:
增加m使得J(train)和J(cv)之间gap减小,有助于performance提高!

来来,做道题:

由图中可见,增加训练数据的个数对于过拟合是有用的,对于underfit是徒劳!

下面总结一下,重温最初的解决方案列表:

针对underfit和overfit,分别是什么情况呢?见下图:

准确率和召回率

阈值越大  高准确率 低召回率

阈值越小  高召回率 低准确率

这章非常有用,讲了选择最佳拟合model的问题,是machine learning的常见问题,希望能对大家选择ml 模型有所帮助。

时间: 2024-08-25 04:26:14

Stanford机器学习---第六讲. 怎样选择机器学习方法、系统的相关文章

Stanford机器学习[第六讲]-朴素贝叶斯算法

引文:由于之前讲过了朴素贝叶斯的理论Stanford机器学习[第五讲]-生成学习算法第四部分,同时朴素贝叶斯的算法实现也讲过了,见机器学习算法-朴素贝叶斯Python实现.那么这节课打算讲解一下朴素贝叶斯算法的具体计算流程,通过一个具体的实例来讲解. PS:为了专注于某一个细节,本章节只抽取了视频的一部分来讲解,只讲解一个贝叶斯算法的计算流程,关于视频里面的具体内容请参考下面的视频链接. 讲解的实例是一个文本分类的例子,区分一句话是粗鲁的还是文明的,类别标签只有Yes或No,表示是粗鲁的和不是粗

Stanford机器学习---第七讲. 机器学习系统设计

本文原始版本见http://blog.csdn.net/abcjennifer/article/details/7834256 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课mach

(笔记)斯坦福机器学习第六讲--朴素贝叶斯

本讲内容 1. Naive Bayes(朴素贝叶斯) 2.Event models(朴素贝叶斯的事件模型) 3.Neural network (神经网络) 4.Support vector machines(支持向量机) 1.朴素贝叶斯 上讲中的垃圾邮件问题有几个需要注意的地方: (1)  一个单词只有出现和不出现两种可能,因此每个特征x只有两个取值 (2) 特征向量x的个数应该等于词典的长度,比如  将该算法一般化: (1) 让 可以取更多的值 此时  服从多项式分布,而不再是伯努利分布.一种

Stanford机器学习---第八讲. 支持向量机SVM

本文原始文章见http://blog.csdn.net/abcjennifer/article/details/7849812,本文添加了一些自己的理解 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Sta

Stanford机器学习---第十讲. 数据降维

本文原始地址见http://blog.csdn.net/abcjennifer/article/details/8002329,在此添加了一些自己的注释方便理解 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.内容大多来自

机器学习 第六讲:Generative Learning Algorithm (B)

Naive Bayes 在GDA模型中,特征向量x是连续的实数向量,在这一讲里,我们将要讨论另外一种算法用来处理特征向量x是离散值的情况. 我们先考虑一个例子,用机器学习的方法建立一个垃圾邮件过滤器,我们希望用一种算法来甄别邮件的信息以确定该邮件是不是垃圾邮件,通过学习这个算法,我们将能建立自己的垃圾邮件过滤器帮我们对邮件进行分类,邮件分类只是一系列我们称之为文本分类中的一种. 首先假设我们有一个训练集(包括了垃圾邮件和正常的邮件),我们用特征向量x表示一封邮件,特征向量的长度等于该邮件所含有的

机器学习之&amp;&amp;Andrew Ng课程复习--- 怎样选择机器学习方法、系统

大家都说dual(对偶)问题(数学渣此前对此只是对其概念的了解)在机器学习应用中很广泛,遂写下(其实查阅纪录)以下关于dual的相关知识,这套理论不仅适用于SVM的优化问题,而是对于所有带约束的优化问题都适用,是优化理论中的一个重要部分.(也许你觉得一个IT人优化问题不重要,其实你仔细想想,现实中的很多问题,都是在有条件约束的情况下的求最优的问题) 简单来说,对于任意一个带约束的优化都可以写成这样的形式: minf0(x) s.t.fi(x)≤0,i=1,-,m hi(x)=0,i=1,-,p

Coursera机器学习-第六周-Advice for Applying Machine Learning

Evaluating a Learning Algorithm Desciding What to Try Next 先来看一个有正则的线性回归例子: 当在预测时,有很大的误差,该如何处理? 1.得到更多的训练样本 2.选取少量的特征 3.得到更多的特征项 4.加入特征多项式 5.减少正则项系数λ 6.增加正则项系数λ 很多人,在遇到预测结果并不理想的时候,会凭着感觉在上面的6个方案中选取一个进行,但是往往花费了大量时间却得不到改进. 于是引入了机器学习诊断,在后面会详细阐述, Evaluati

机器学习中使用的神经网络第六讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第六讲介绍了随机梯度下降法(SGD),并且介绍了加快学习速度的动量方法(the momentum method).针对网络中每一个连接的自适应学习步长(adaptive learning rates for each connection)和RMSProp算法. 这几个算法的难度很大,需要反复推理思考,并在实践中摸索以加深理解. Overview of mini-batch gradie