大家好,本文主要和大家分享coursera网站上斯坦福大学机器学习公开课(吴文达老师)第六周Reguirized Linera Regression and Bias v.s Variance的课后编程题。这周的课程主要介绍了一些模型选择,样本分类,bias and variance,regularization参数选择,learing curves学习曲线绘制等知识。以下为本人编写的代码和一些个人的见解,如有错误,请留言批评指正,谢谢。

1.首先,我们需要对linearRegCostFunction.m这个文件进行改造。这个文件是利用线性拟合为模型,计算样本X,y在指定theta和lambda的参下的代价J和偏导grad。

function [J, grad] = linearRegCostFunction(X, y, theta, lambda)% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));J = sum((X * theta - y).^2)/(2*m) + lambda / (2 * m) * (sum(theta .^2 ) - theta(1)^2); %计算正则化线性回归的代价grad = ((X * theta - y)' * X)'/m + lambda / m * theta;                                 %计算正则化线性回归的梯度
grad(1) = grad(1) - lambda / m * theta(1);                                             %不惩罚theta0,重新加回去,theta0在matlab数组中的下标为1grad = grad(:);
end
2.其次,我们需要对learningCurve.m进行改造。
输入:X, y, Xval, yval, lambda ---(X,y)为训练样本,(Xval,yval)为验证样本,lambda为正则化参数
输出:error_train, error_val --- error_train为训练样本的误差数组,error_val为验证样本的误差数组
注意:因为我们要画的是训练误差,交叉验证误差随着训练样本数的变化曲线,所以我们需要改变每次训练时的训练样本数。由于共有X行数m个训练样本,所以我们可以第一次用第一个做训练,第二次用前两个做训练,第三次用前三个做训练。。。第m次用全部m个做训练。  这样总共进行m次训练,每次计算出相应的训练误差和验证误差。
function [error_train, error_val] = ...learningCurve(X, y, Xval, yval, lambda)m = size(X, 1);% You need to return these values correctly
error_train = zeros(m, 1);
error_val   = zeros(m, 1);%需要绘制的是error_training,error_val随着训练样本集增大的变换曲线
%所以训练数m需要从1开始慢慢增加,所以需要for循环,i表示当前训练样本数
for i = 1:m,theta = trainLinearReg(X(1:i,:),y(1:i,:),lambda);                      %注意,此时训练样本数为i,所以用X,y的前i个元素训练thetaerror_train(i) = sum((X(1:i,:) * theta - y(1:i,:)).^2)/(2 * i);        %注意,此时的训练样本数为i,所以用X,y的前i个元素计算error_train,除数为2*ierror_val(i) = sum((Xval * theta - yval).^2)/(2 * size(Xval,1));       %注意,由于验证集不变,每次用的都是全部的验证集
end
end
3.之后,我们需要对polyFeatures.m进行改造,这个代码比较简单,直接给出。他的作用是产生多项式训练样本集
function [X_poly] = polyFeatures(X, p)
X_poly = zeros(numel(X), p);
for i = 1:p,X_poly(:,i) = X.^i;                %第i列对应X的i次方即可
end
end
4.最后,我们改造validationCurve.m这个文件。
输入:X, y, Xval, yval   ---(X,y)为训练样本,(Xval,yval)为验证样本
输出:lambda_vec, error_train, error_val  ---lambda_vec为正则还参数lambda的取值向量,error_train为训练样本的误差数组,error_val为验证样本的误差数组
function [lambda_vec, error_train, error_val] = ...validationCurve(X, y, Xval, yval)
% Selected values of lambda (you should not change this)
lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';% You need to return these variables correctly.
error_train = zeros(length(lambda_vec), 1);
error_val = zeros(length(lambda_vec), 1);for i = 1:10,                                                            %因为有lambda_vec有十个元素,需要对每个元素逐个计算,故用for循环theta = trainLinearReg(X,y,lambda_vec(i));                           %利用正则化的线性回归计算最优参数thetaerror_train(i) = sum((X * theta - y).^2)/(2 * size(X,1));            %计算训练误差error_trainerror_val(i) = sum((Xval * theta - yval).^2)/(2 * size(Xval,1));     %计算验证误差error_vala
end

Programming Exercise5:Regularized Linera Regression and Bias v.s Variance相关推荐

  1. 吴恩达机器学习作业5---Regularized Linear Regression and Bias vs. Variance

    Regularized Linear Regression and Bias vs.Variance 文章目录 Regularized Linear Regression and Bias vs.Va ...

  2. Machine Learning week 6 quiz: programming assignment-Regularized Linear Regression and Bias/Variance

    一.ex5.m %% Machine Learning Online Class % Exercise 5 | Regularized Linear Regression and Bias-Varia ...

  3. machine learning(15) --Regularization:Regularized logistic regression

    Regularization:Regularized logistic regression without regularization 当features很多时会出现overfitting现象,图 ...

  4. 文献学习(part30)--Clustering of temporal gene expression data by regularized spline regression and...

    学习笔记,仅供参考,有错必纠 关键词:样条模型;正规化的回归;能量算子;时间基因表达数据分析;聚类 文章目录 Clustering of temporal gene expression data b ...

  5. 吴恩达机器学习练习2:Regularized logistic regression

    本小节主要练习正则化logistic分类. 1.原始数据的可视化 data = load('ex2data2.txt');%将数据导入data中 X = data(:, [1, 2]); y = da ...

  6. 线性回归正则化 regularized linear regression

    线性回归正则化regularized linear regression 在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details ...

  7. Programming Exercise 2: Logistic Regression

    题目要求及材料下载链接:Coursera下载地址 没用的信息略过,有用的翻译一下. 本练习中包含的文件: ex2.m - Octave/MATLAB脚本 ex2_reg.m - Octave/MATL ...

  8. 吴恩达神经网络和深度学习-学习笔记-6-训练集、验证集和测试集 + 偏差bias和方差variance

    寻找最优超参数是一个迭代过程 在今天,应用深度学习是一个典型的迭代过程. 创建高质量的训练数据集.验证集和测试集,有助于提高循环效率. 训练集.验证集和测试集 数据Data分为三部分: 训练集trai ...

  9. Important Programming Concepts (Even on Embedded Systems) Part V: State Machines

    Earlier articles in this series: Part I: Idempotence Part II: Immutability Part III: Volatility Part ...

最新文章

  1. 训练不出结果_智能训练仪:专业化智能防控近视训练设备
  2. android 解决ListView点击与滑动事件冲突
  3. 算法导论6.1-2习题解答
  4. mysql自增mybatis返回主键_Mybatis + mysql 返回自增主键
  5. python sanic加速_python微服务sanic 使用异步zipkin(2) - 一步步创建Sanic插件: sanic-zipin...
  6. php一对多聊天程序代码,微信小程序实现一对多发消息
  7. 上海应用技术学院c语言实验报告9,上海工程技术大学C语言实验报告
  8. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的!
  9. Linux常用命令备忘(启动管理、文件或目录管理、系统管理)
  10. 瑞银:将京东目标价上调至110美元 维持“买入”评级
  11. SpringMVC系列(十四)Spring MVC的运行流程
  12. 马化腾回应《腾讯没有梦想》:我的理想不是赚多少钱
  13. ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
  14. 遥感影像植被颜色增强
  15. Spring Cloud Alibaba Sentinel之服务熔断篇
  16. 如何使用Xshell连接linux服务器
  17. 鸿蒙系统下载 绿色,WiseFolderHider(文件夹加密软件)4.3.7
  18. 【Blender】UV贴图相关学习
  19. 如何使用JavaScript替换DOM元素?
  20. 微信云控的大触来一下

热门文章

  1. 检测U盘插入并自动备份自定义文件下的文件(支持增量更新)
  2. Python:后缀为whl的文件是什么?如何安装whl文件?
  3. python怎样安装whl文件
  4. 1.什么是Cython
  5. linux下iptable防火墙的配置
  6. 一道积分不等式的证明
  7. CSS进阶式-附加样式
  8. preempt-RT patches
  9. 缓解环境噪声对音频质量干扰
  10. 帮推|阵容强大!请查收你的ASES线下宣讲会邀请函