斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning

我们将学习如何系统地提升机器学习算法,告诉你学习算法何时做得不好,并描述如何‘调试‘你的学习算法和提高其性能的“最佳实践”。要优化机器学习算法,需要先了解可以在哪里做最大的改进。 我们将讨论如何理解具有多个部分的机器学习系统的性能,以及如何处理偏斜数据。

Evaluating a Hypothesis

设想当你训练的模型对预测数据有很大偏差的时候,接下来你会选择怎么做?

这个需要花时间去实现,但是对你的帮助也会很大,使你不盲目的做一些决定来提升算法,而是直观地看出哪些是对提升算法是有效的。

我们将数据分为两个集合,Training Set(70%),Test set(30%)

算法评估过程如下:

1.从Training Set学习参数(通过最小化误差J(theta)实现);

2.计算测试误差J(test).

下面是线性回归和分类问题的误差计算方式:

Model Selection and Train/Validation/Test Sets

从多个假设中选择一个训练误差最小的,只能说明它对Training Set有很好的拟合效果,它也可能是Overfit,然后导致Prediction很差。

所以我们下面将数据集分为3个:

这里以之前的房价预测作为例子。

每种误差类型的计算方法如下:

模型选择方法:

1.使用Training Set 最小化 Jtrain(theta)学习得到参数theta;

2.使用训练得到的参数,在Cross Validation Set上计算误差,找到使Jcv(theta)最小的模型,作为训练的最终模型;

3.在训练出的模型上使用test Set计算泛化误差,评价算法好坏。

Diagnosing Bias vs. Variance

在这之前我们都已经讨论过关于underfit和overfit了。那么当你的模型结果不理想时,怎么判断到底是出现了哪种情况呢。

High Bias(underfit):训练误差Jtrain和交叉验证Jcv都很高,Jcv~Jtrain

High Variance(overfit):Jtain很小,Jcv很大且>>Jtrain.

Regularization and Bias/Variance

下面讲解如何选择regularization parameter避免underfit和overfit。

这里除了我们的objective function使用lambda参数外,其他的Jtrain、Jcv和Jtest都不使用lambda进行计算,计算公式如上面。

选择过程:

1.列出所有可能的lambda取值,老师建议每次增加2倍的取值。

2.建立假设模型,h(theta)。

3.遍历所有的lambda,通过minJ(theta)学习参数。

4.在cv集合使用训练的参数theta计算误差Jcv,选择使Jcv最小的theta;

5.用学习到的theta参数,在test set上测试泛化误差。

下面是Jcv和Jtrain关于lambda的函数图象。注意:我们只是在objective funtion J(theta)中使用了lambda,而非Jtrain和Jcv。

可以看出:随着lambda增大,Jtrain是单调增大的;而Jcv先是减小到一个拐点,然后增大。

而我们需要算法有一个小的Jcv,这里就有一个“just right”,也就是那个Jcv的最小值点,就是我们需要选择的lambda。

Learning Curves

以error和training set size作函数图象,作为learning cruvers。

下面是算法处于高偏差(underfit)的情况。

判断模型处于High Bias:

样本少:Jtrain低,Jcv高;

样本多:Jtrain、Jcv都高,且Jtrain ~Jcv

若算法处于High bias,增加更多的训练样本对模型提高不会有太大帮助。

下面是算法处于High variance(overfit)的情况

算法处于High variance:

样本少:Jtrain 低,Jcv高;

样本多:Jtrain升高且会一直升高,Jcv降低且一直降低,Jtrain < Jcv且大小明显。

若算法处于high variance,增加训练样本会有帮助。

Deciding What to Do Next Revisited

回顾一下本课开头提出的问题,如何提高你的算法?经过上面的讨论,我们可以得到以下结论:

关于神经网络的underfit和overfit及其解决。

以上所谈对建立一个好的机器学习算法至关重要,而且可以节约不少时间,少走弯路。

时间: 2024-10-20 08:08:56

斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning的相关文章

斯坦福第十课:应用机器学习的建议(Advice for Applying Machine Learning)

10.1  决定下一步做什么 10.2  评估一个假设 10.3  模型选择和交叉验证集 10.4  诊断偏差和方差 10.5  归一化和偏差/方差 10.6  学习曲线 10.7  决定下一步做什么 10.1  决定下一步做什么 到目前为止,我们已经介绍了许多不同的学习算法,如果你一直跟着这些视频的进度学习,你会发现自己已经不知不觉地成为一个了解许多先进机器学习技术的专家了. 然而,在懂机器学习的人当中依然存在着很大的差距,一部分人确实掌握了怎样高效有力地运用这些学习算法.而另一些人他们可能对

斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到一组新的房屋样本上进行测试,这个时候我们会发现在预测房价时,产生了巨大的误差,现在我们的问题是要想改进这个算法接下来应该怎么办? 实际上我们可以想出很多种方法来改进算法的性能,其中一种办法是使用更多的训练样本.具体来讲,通过电话调查.上门调查,获取更多的不同的房屋出售数据.遗憾的是,好多人花费了大量

斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)

算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了防止过拟合现象,我们要使用图下所示的正则化.因此我们试图通过下面的正则化项,来让参数的值尽可能小.正则化项的求和范围,照例取为j等于1到m,而非j等于0到m. 然后我们来分析以下三种情形.第一种情形:正则化参数lambda取一个比较大的值(比如lambda的值取为10000甚至更大).在这种情况下,

斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)

绘制学习曲线非常有用,比如你想检查你的学习算法,运行是否正常.或者你希望改进算法的表现或效果.那么学习曲线就是一种很好的工具.学习曲线可以判断某一个学习算法,是偏差.方差问题,或是二者皆有. 为了绘制一条学习曲线,通常先绘制出训练集数据的平均误差平方和(Jtrain),或者交叉验证集数据的平均误差平方和(Jcv).将其绘制成一个关于参数m的函数.也就是一个关于训练集.样本总数的函数.m一般是一个常数,比如m等于100,表示100组训练样本.但我们要自己取一些m的值,也就是说对m的取值做一点限制,

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

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

ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn,其中可以认为x0=1.因此,h(x)= θTx,其中θ是一维向量,θ=[θ0, θ1-θn] T,x也是一维向量,x=[x0,x1..xn] T,其中x0=1. 二.特征缩放(Feature Scaling) 特征缩放的目的,是为了让每个特征值在数量上更加接近,使得每个特征值的变化的影响相对比较"

ng机器学习视频笔记(十二) ——PCA实现样本特征降维

ng机器学习视频笔记(十二) --PCA实现样本特征降维 (转载请附上本文链接--linhxx) 一.概述 所谓降维(dimensionality reduction),即降低样本的特征的数量,例如样本有10个特征值,要降维成5个特征值,即通过一些方法,把样本的10个特征值映射换算成5个特征值. 因此,降维是对输入的样本数据进行处理的,并没有对预测.分类的结果进行处理. 降维的最常用的方法叫做主成分分析(PCA,principal component analysis).最常用的业务场景是数据压

ng机器学习视频笔记(九) ——SVM理论基础

ng机器学习视频笔记(九) --SVM理论基础 (转载请附上本文链接--linhxx) 一.概述 支持向量机(support vector machine,SVM),是一种分类算法,也是属于监督学习的一种.其原理和logistics回归很像,也是通过拟合出一个边界函数,来区分各个分类的结果. 二.代价函数与假设函数 由于svm和logistic很相似,故与logistic进行比较.logistic的代价函数如下: 与logistic不同之处在于,SVM是用两个线段表示logistic中的h.在l

ng机器学习视频笔记(十一) ——K-均值算法理论

ng机器学习视频笔记(十一) --K-均值算法理论 (转载请附上本文链接--linhxx) 一.概述 K均值(K-Means)算法,是一种无监督学习(Unsupervised learning)算法,其核心是聚类(Clustering),即把一组输入,通过K均值算法进行分类,输出分类结果. 由于K均值算法是无监督学习算法,故这里输入的样本和之前不同了,输入的样本只有样本本身,没有对应的样本分类结果,即这里的输入的仅仅是{x(1),x(2),-x(m)},每个x没有对应的分类结果y(i),需要我们