原文: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 learningapp
===============================机器学习
候选机器学习方法函数
评价方法假设性能
☆模型选择和训练、验证明验数据
学习
☆区别诊断偏离bias和误差variance
测试
☆规则化 和 bias/variance
flex
Learning Curve:何时增长训练数据training set才是有效的?ui
===============================
候选机器学习方法——Deciding what to try next
还用房价的prediction举例,假设咱们已经实现了用规则化的线性回归方法预测房价:
但发现该预测应用于一个新的训练数据上时有很大偏差(error),这时应采起一些解决方案:
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:
定义上是这么讲的:
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 模型有所帮助。