linearRegCostFunction.m

这个文件主要的功能是计算正则化线性回归的代价函数和梯度,其实在之间的正则化的练习过程中就有过实现。作为温习,先放出对应的参考。

代价函数的计算公式正如上图中所示,这里需要注意的是标黄的部分文字。其意思是不需要正则化theta0,这与视频中一致,同时在MATLAB中,theta0代表的是theta1。

梯度的计算主要是区别j = 0和j ≥ 1。在程序中体现出来,其中j = 0时,对于公式中的,j的值只能为0,也就是说只能取第1列。(的上标i代表的是行数,j代表的是列数)。同样的,对于j大于等于1时的程序实现需要注意的是只能取第2列往后的数据。下面贴出实现代码。

%这里只需要注意下正则化时并未包括theta0
h = X * theta;
J = sum((h - y) .^2) / (2 * m) + lambda * sum(theta(2:end,:) .^2) / (2 * m);
%主要grad(1)和grad(2:end)计算是不同的 主要区别是theta0的计算
grad(1,:) = sum((h - y) .* X(:,1)) / m;
grad(2:end,:) = X(:,2:end)' * (h - y) / m + lambda .* theta(2:end,:) / m;

learningCurve.m

这个文件的主要功能是绘制线性回归的学习曲线。该函数能够返回训练集误差和交叉验证误差的向量。其公式类似于代价函数的计算,如下。

这里需要注意的是在计算训练集的误差时是使用的其子集而非整个集合,计算交叉验证集误差的时候使用的是整个集合。正如下图中标记的文字所说的一样。同时,在计算代价函数时使用的theta,这里需要通过trainLinearReg函数得到,这个函数的其实就是使用fminuc寻找最优的theta。这在之前的学习中已经使用过了。

其实根据学习曲线的定义,其x轴是训练集的数量,y轴是误差,其中绘制了两条曲线分别是训练集的学习曲线和交叉验证集的曲线。因此,不难写出如下的代码 ,下面贴出该文件的主要代码实现

%需要注意的是这里lambda的值是0
for i = 1:m;theta = trainLinearReg(X(1:i,:),y(1:i),lambda);error_train(i) = linearRegCostFunction(X(1:i,:),y(1:i), theta, lambda);error_val(i) = linearRegCostFunction(Xval,yval, theta, lambda);
end

 polyFeatures.m

这个函数的实现很简单,就是返回一个m*p的多项式。直接给出实现代码

for i = 1 : p;X_poly(:,i) = power(X,i);
end

validationCurve.m

这个函数的目的是使用交叉验证集合选择合适的lambda的值。为什么要选择一个合适的lambda参数,这里贴出吴恩达作业中的解释。

In particular, a model without regularization (λ = 0) fits the training set well, but does not generalize. Conversely,a model with too much regularization (λ = 100) does not fit the training set and testing set well.

也就是说如果一个训练模型没有lambda参数,虽然对于训练集的拟合会很好,但是其 泛化能力很弱,运用到其它集合时的效果就不会很好。相反,如果lambda过大,那么对于训练集的拟合就不会很好。

这个函数的实现并不难,其主要思想是通过不同的lambda的值利用trainLinearReg训练得到合适的theta值,并通过得到的theta值利用linearRegCostFunction分别得到训练集误差和交叉验证集的误差。下面贴出关键代码。

for i = 1:length(lambda_vec);lambda = lambda_vec(i);theta = trainLinearReg(X, y, lambda);error_train(i) = linearRegCostFunction(X,y, theta, 0);error_val(i) = linearRegCostFunction(Xval,yval, theta, 0);
end

吴恩达机器学习正则化线性回归和偏差算法的MATLAB实现(对应ex5练习)相关推荐

  1. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)

    吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection) 对于异常检测算法,使用特征是至关重要的,下面谈谈 ...

  2. 吴恩达机器学习(八)偏差与方差

    目录 0. 前言 1. 评估模型过程 2. 最高次幂对方差偏差的影响 3. 正则化参数对方差偏差的影响 4. 高偏差的学习曲线 5. 高方差的学习曲线 6. 对机器学习算法的调试 学习完吴恩达老师机器 ...

  3. 吴恩达-机器学习-多元线性回归模型代码

    吴恩达<机器学习>2022版 第一节第二周 多元线性回归 房价预测简单实现         以下以下共两个实验,都是通过调用sklearn函数,分别实现了 一元线性回归和多元线性回归的房价 ...

  4. 吴恩达-机器学习-一元线性回归模型实现

    吴恩达<机器学习>2022版 第一周 一元线性回归 房价预测简单实现 import numpy as np import math, copy#输入数据 x_train = np.arra ...

  5. 吴恩达机器学习 -- 多变量线性回归

    5.1 多维特征 前一周所讲是单变量线性回归,即 ,是只有一个变量 的假设函数,现在对房价预测模型有了更多的参考特征,比如楼层数,卧室的数量,还有房子的使用年限.根据这些特征来预测房价.此时的变量有多 ...

  6. Python吴恩达机器学习课后习题作业一算法(Ⅰ)(1)

    吴恩达老师的机器学习课程是机器学习入门者必看的经典之一,其课后习题也是典中典.下面将在以Python为语言工具完成课后习题. 问题一:单元线性回归 问题:根据城市人口数量,预测开小吃店的利润 下面我将 ...

  7. 吴恩达|机器学习作业5.0.偏差与方差

    5.0.偏差与方差 1)题目: 在本练习中,您将实现正则化线性回归,并使用它来研究具有不同偏差-方差属性的模型.在练习的前半部分,您将使用水库水位的变化实现正则化线性回归来预测大坝的出水量.在下半部分 ...

  8. 吴恩达机器学习 -- 正则化

    8.1 过拟合的问题 过拟合问题会导致线性回归和逻辑回归效果变差,那么过拟合到底是指什么意思呢? 一个回归问题的例子: 图一的线性回归模型,欠拟合:图三的逻辑回归模型虽然经过了所有的样本点,但是它预测 ...

  9. 吴恩达机器学习:方差与偏差

    在前几周的课程里,我们已经学习了 监督学习 中的 线性回归.逻辑回归.神经网络( 点击进入笔记 ).回顾课程作业,所有的样本数据都被用来训练模型.验证模型时,也只是将模型的数据结果与正确结果作对比来看 ...

  10. 【学习笔记】吴恩达机器学习 WEEK2 线性回归 Octave教程

    Multivariate Linear Regression Multiple Features Xj(i)X_j^{(i)}Xj(i)​ 其中j表示迭代次数,i表示矩阵索引 转换 原来:hθ(x)= ...

最新文章

  1. centos6 yum源不能使用
  2. od怎么解java打包的exe_关于打包java文件并生成可执行文件的问题
  3. 在MNIST图像上训练卷积神经网络
  4. python构造一个二叉树_二叉树-链表存储,用二叉树构造表达式(Python实现)
  5. python中itertools groupby函数是干嘛的_python 分组函数 itertools groupby
  6. Echars 如何描绘世界地图
  7. html属于编程语言,HTML编程语言
  8. 【贪玩巴斯】数字图像处理基础课堂笔记(六)——「一维、二维离散傅里叶变化及其方变换,卷积定理,频域滤波的步骤」 2021-11-08
  9. 返利商城系统开发功能模式解析
  10. YY淘宝商品数据库设计(转)
  11. html中如何淡化背景图片,excel怎么去除背景图片
  12. 明日之后登录显示服务器连接中断,明日之后连接中断怎么办 无法登陆服务器解决方法...
  13. 文件上传,出现400 的错误问题
  14. 天池比赛-金融风控贷款违约预测
  15. LaTeX调整公式中部分字号及行距
  16. Codeforeces #710 div3题解报告
  17. 关于eclipse SE版本不支持建立web工程的问题
  18. 《无线传感器网络简明教程》学习笔记整理
  19. C语言新手入门|初始C语言
  20. 智慧职教云Java题库_智慧职教云课堂Java编码技术题库及答案

热门文章

  1. 项目管理十大知识领域和五大过程
  2. BZOJ1001狼抓兔子(网络流最小割)
  3. android 资源id 闪退,【报Bug】android闪退,勾选Push消息推送自定义基座后 获取oaid,vaid,aaid, app闪退...
  4. Arduino mixly 点灯科技(blinker) 在线电压监测(带电压高低提醒)
  5. 3DMAX程序贴图之3D木材贴图使用教程
  6. 计算机思维导图ppt模板,经典PPT模版(含各类思维导图).ppt
  7. 南京装修公司排名十大口碑排行榜(教你如何选择)
  8. 基于STM32通过RTC唤醒低功耗模式
  9. VRay Next(4.0) for SketchUp之BIG分析图制作教程
  10. Cadence Allegro PCB设计88问解析(十二) 之 Allegro中两种单位显示设置