ufldl学习笔记与编程作业:Linear Regression(线性回归)

ufldl出了新教程,感觉比之前的好。从基础讲起。系统清晰,又有编程实践。

在deep learning高质量群里面听一些前辈说。不必深究其它机器学习的算法。能够直接来学dl。

于是近期就開始搞这个了,教程加上matlab编程,就是完美啊。

新教程的地址是:http://ufldl.stanford.edu/tutorial/

本节学习链接:http://ufldl.stanford.edu/tutorial/supervised/LinearRegression/

从一个最简单的线性回归,能够非常清晰地看出建模解决这个问题的一般思路。

1 定义目标函数;

2 最优化目标函数:求偏导数,求梯度。通过最优化的手段,比方梯度下降。拟牛顿发等。

求出最优解。

这里的习题比較特殊,不须要我们自己实现梯度下降法。

而是对參数求出目标函数的偏导数,然后把剩下的最优化工作交给一个叫minFunc的函数去做了。

本来这节仅仅须要读者用最简单的for循环来实现,后面有一个章节才要求用向量化的方法。

因为对线性回归算是比較熟悉了,这里就偷懒,直接用向量化方法实现了。

linear_regression.m代码例如以下:

  1. function [f,g] = linear_regression(theta, X,y)
  2. %
  3. % Arguments:
  4. % theta - A vector containing the parameter values to optimize.
  5. % X - The examples stored in a matrix.
  6. % X(i,j) is the i'th coordinate of the j'th example.
  7. % y - The target value for each example. y(j) is the target for example j.
  8. %
  9.  
  10. m=size(X,2);%列数
  11. n=size(X,1);%行数
  12.  
  13. f=0;
  14. g=zeros(size(theta));
  15. h = theta' * X;
  16. f = (1/2)*h*h';%刚開始算错了目标函数,事实上目标函数就是代价函数,而不是如果函数
  17. g = X*((h-y)');
  18.  
  19. %
  20. % TODO: Compute the linear regression objective by looping over the examples in X.
  21. % Store the objective function value in 'f'.
  22. %
  23. % TODO: Compute the gradient of the objective with respect to theta by looping over
  24. % the examples in X and adding up the gradient for each example. Store the
  25. % computed gradient in 'g'.

结果例如以下:

对于向量化编程。感觉要对立面全部的矩阵在脑海里都要有一个印象才行。

没印象的话。多在纸上多画几下就好。

此前也写过一篇《

从零单排入门机器学习:线性回归(linear regression)实践篇

》。

里面提到这点。

事实上,今晚做这个作业的时候,遇到两个坑。

第一个是求错f,我以为f是求如果函数的值H,事实上是要求目标函数。代价函数。

開始还看到是库函数minFunc里面调用的函数报错,以为人家给的代码有bug。

后来发现自己求错了。

第二个是Octave调用C代码。比方lbfgsAddC.c和lbfgsProdC.c。这两个文件在mex目录里。

查了相关资料。才知道。先要编译为mex文件。才干被Octave调用。

m文件一般跟mex同文件夹。应该也能够指定文件夹,详细没深究。

https://www.gnu.org/software/octave/doc/interpreter/Getting-Started-with-Mex_002dFiles.html#Getting-Started-with-Mex_002dFiles

编译c为mex:

  1. mkoctfile --mex myhello.c
  1. mkoctfile Octavebin文件夹里,这玩意还要调用gccg++。
  1. 所以得把gccg++所在文件夹加入到环境变量。

本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/38377023

ufldl学习笔记与编程作业:Linear Regression(线性回归)的更多相关文章

  1. ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

    ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...

  2. ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)

    ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...

  3. ufldl学习笔记与编程作业:Logistic Regression(逻辑回归)

    ufldl学习笔记与编程作业:Logistic Regression(逻辑回归) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听 ...

  4. ufldl学习笔记和编程作业:Feature Extraction Using Convolution,Pooling(卷积和汇集特征提取)

    ufldl学习笔记与编程作业:Feature Extraction Using Convolution,Pooling(卷积和池化抽取特征) ufldl出了新教程,感觉比之前的好,从基础讲起.系统清晰 ...

  5. ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)

    ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...

  6. Andrew Ng机器学习编程作业: Linear Regression

    编程作业有两个文件 1.machine-learning-live-scripts(此为脚本文件方便作业) 2.machine-learning-ex1(此为作业文件) 将这两个文件解压拖入matla ...

  7. Coursera machine learning 第二周 编程作业 Linear Regression

    必做: [*] warmUpExercise.m - Simple example function in Octave/MATLAB[*] plotData.m - Function to disp ...

  8. week3编程作业: Logistic Regression中一些难点的解读

    %% ============ Part : Compute Cost and Gradient ============ % In this part of the exercise, you wi ...

  9. 吴恩达《机器学习》编程作业——machine-learning-ex1:线性回归

    ❄❄❄❄❄❄❄❄[回到目录]❄❄❄❄❄❄❄❄ 本次编程作业中,需要完成的代码有如下几部分: [⋆] warmUpExercise.m - Simple example function in Octa ...

随机推荐

  1. Image Processing for Very Large Images

    The key idea here is the partial image descriptor VIPS(VASARI Image Processing System) 是近几年逐渐兴起的针对大图 ...

  2. .NET开源项目一览

  3. WINSERVER-IIS-无法启动

    报错信息:无法启动计算机上的服务W3SVC 开始百度,多数教程是这样写的 修复错误 运行命令提示符 fsutil resource setautoreset true c:\ 打开运行输入 servi ...

  4. 练几道,继续过Hard题目

    http://www.cnblogs.com/charlesblc/p/6384132.html 继续过Hard模式的题目吧.   # Title Editorial Acceptance Diffi ...

  5. WPF中多线程统计拆箱装箱和泛型的运行效率

    WPF中多线程统计拆箱装箱和泛型的执行效率.使用的知识点有泛型.多线程.托付.从样例中能够看到使用泛型的效率至少提升2倍 MainWindow.xaml <Window x:Class=&quo ...

  6. 外网主机如何将数据包发送到共用一个公网IP的局域网某特定主机上的

    内网的一台电脑要上因特网对外开放服务或接收数据.都须要port映射.port映射分为动态和静态. 动态port映射:内网中的一台电脑要訪问站点.会向NAT网关发送数据包.包头中包含对方站点IP.por ...

  7. servlet中怎么注入service

    在工作中使用到spring的mvc框架,分为controller/service/dao三个层次.偶尔会用到servlet替换掉controller,这就遇到如何在servlet中使用注入到sprin ...

  8. .NET框架详解

    .NET框架的战略目标 .NET框架的战略目标是在任何时候(When),任何地方(Where),使用任何工具(What)都能通过.NET的服务获得网络上的任何信息,享受网络带给人们的便捷和快乐! .N ...

  9. html5+css3+javascript 自定义弹出窗口

    效果图: 源码: 1.demo.jsp <%@ page contentType="text/html;charset=UTF-8" language="java& ...

  10. 路飞学城Python-Day7

    Moudle 2 1.鸡汤中国人均阅读4.35本:日本40本:韩国17本:法国20本:以色列60本成长的路上需要读书,坚持读书内心会得到升华的想法不要太多,尽量多读书,多充电多读书,多看报,少吃零食, ...