(四)Advice for applying machine learning[实施机器学习的一些建议]
2015-03-28 15:20
429 查看
本来是打算按照code的流程梳理思路的,但是标题还是这个适合一些。废话不多说,开始!
当我们采用机器学习算法的时候,很多时候并不是写完算法就万事大吉了,有时候算法在training set上跑的很好,但是已在test set上跑就瞎了,发现错误率很高,这个时候怎么办呢?所以我们不仅要会写出算法,还要会调试,把“敌人”牢牢掌握在手中。
Andrew的ppt中主要有三种尝试方法:
1. 增加training examples
2. 尝试增加features
3. 尝试改变正则项系数λ(我喜欢把它想成“惩罚项”)
接下来还是按照code的流程来,需要时会有补充。
首先我们以一个线性回归(带正则项)的例子为例,当然啦,首先把它的
上面的代码很直观,就是error_*(i)中的值就是当training sets有i个sample时其J的值。下图就是对于习题中给出的例子画出的图:
可以看到随着training sets的samples的增加,训练集&验证集的J都是减小的(这不是正常的嘛,汪)
比如原来x(i)={1,x},现在我们变成{1,x,x2,x3,…,xp}。
其实我们观察数据一般可以看出来,如果成二次曲线,那么采用直线方程一般会造成高得bias。
注意:
1. 增加了多个feature,一般要归一化:xnew=x−μσ,至于原因,参见之前内容。
2. 有多个feature的时候,一般要正则化,给他们点“惩罚”,防止过拟合。
还是采用上面code的算法,我们得到了对于不同feature(p=8,λ=3)的结果。
拟合的曲线:
learning curve(这里是在p=8,λ=3情况下训练集有i个samples的训练集&验证集的J):
这样就能对比发现不同的p的影响从而选择最优的p了。
这里我们选择尝试的λ为[0,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10]′;。在将training sets所有的samples都用上的情况下,结果如下:
可以看到,大约在λ=2.3−2.4的时候,在训练集和测试集上都有比较好的效果。
over,这次的整理完毕!
当我们采用机器学习算法的时候,很多时候并不是写完算法就万事大吉了,有时候算法在training set上跑的很好,但是已在test set上跑就瞎了,发现错误率很高,这个时候怎么办呢?所以我们不仅要会写出算法,还要会调试,把“敌人”牢牢掌握在手中。
Andrew的ppt中主要有三种尝试方法:
1. 增加training examples
2. 尝试增加features
3. 尝试改变正则项系数λ(我喜欢把它想成“惩罚项”)
接下来还是按照code的流程来,需要时会有补充。
首先我们以一个线性回归(带正则项)的例子为例,当然啦,首先把它的
linearRegCostFunction搞定,就是计算J,gradθ,以及
trainLinearReg这个就是调用
linearRegCostFunction来优化θ的,和之前讲的一样,设置一个终止条件(比如最大迭代次数,那就不断优化θ,顺带着计算一下J),这些搞定后,我们就可以开始我们的调教调试了。
training examples的影响
首先我们考察training examples对训练的影响,看下面代码:for i = 1:m theta = trainLinearReg(X(1:i, :), y(1:i), lambda); error_train(i) = linearRegCostFunction(X(1:i, :), y(1:i), theta, 0); error_val(i) = linearRegCostFunction(Xval, yval, theta, 0); end
上面的代码很直观,就是error_*(i)中的值就是当training sets有i个sample时其J的值。下图就是对于习题中给出的例子画出的图:
可以看到随着training sets的samples的增加,训练集&验证集的J都是减小的(这不是正常的嘛,汪)
feature的个数的影响
接下来我们看看feature的影响,我们这里采用的是增加次方的方法(这么叫听起来好low ~ ~)。比如原来x(i)={1,x},现在我们变成{1,x,x2,x3,…,xp}。
其实我们观察数据一般可以看出来,如果成二次曲线,那么采用直线方程一般会造成高得bias。
注意:
1. 增加了多个feature,一般要归一化:xnew=x−μσ,至于原因,参见之前内容。
2. 有多个feature的时候,一般要正则化,给他们点“惩罚”,防止过拟合。
还是采用上面code的算法,我们得到了对于不同feature(p=8,λ=3)的结果。
拟合的曲线:
learning curve(这里是在p=8,λ=3情况下训练集有i个samples的训练集&验证集的J):
这样就能对比发现不同的p的影响从而选择最优的p了。
不同的正则项系数λ
接下来我们还能调教一下λ的大小,直观上讲λ越大会有小的variance和大bias(因为惩罚的太厉害那些feature不敢”造次“,就不大会过拟合);反之亦然。这里我们选择尝试的λ为[0,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10]′;。在将training sets所有的samples都用上的情况下,结果如下:
可以看到,大约在λ=2.3−2.4的时候,在训练集和测试集上都有比较好的效果。
over,这次的整理完毕!
相关文章推荐
- 机器学习(4)-应用机器学习的建议_Advice for Applying Machine Learning
- 应用机器学习的建议(Advice for applying machine learning)
- Coursera公开课笔记: 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
- 机器学习教程之7-应用机器学习的建议(Advice for Applying Machine Learning)
- 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning
- 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
- Andrew NG 机器学习 笔记-week6-应用机器学习的建议 ( Advice for Applying Machine Learning)
- 笔记: 斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
- Stanford 机器学习笔记 Week6 Advice for Applying Machine Learning
- 机器学习笔记-advice for applying machine learning
- Week6:Advice for Applying Machine Learning课后习题解答
- Machine Learning week 6 quiz: Advice for Applying Machine Learning
- 第六周:Advice for Applying Machine Learning
- Stanford ML - Lecture 6 - Advice for applying machine learning
- Coursera Machine Learning 第六周 quiz Advice for Applying Machine Learning
- Stanford 机器学习-Advice for Applying Machine Learing
- Week6_1Advice for Applying Machine Learning
- Machine Learning - X. Advice for Applying Machine Learning机器学习算法的诊断和改进 (Week 6)
- advice for applying machine learning:Deciding what to do next
- coursera Machine Learning 第六周 测验quiz1答案解析 Advice for Applying Machine Learning