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代码例如以下:

function [f,g] = linear_regression(theta, X,y)
%
% Arguments:
% theta - A vector containing the parameter values to optimize.
% X - The examples stored in a matrix.
% X(i,j) is the i'th coordinate of the j'th example.
% y - The target value for each example. y(j) is the target for example j.
% m=size(X,2);%列数
n=size(X,1);%行数 f=0;
g=zeros(size(theta));
h = theta' * X;
f = (1/2)*h*h';%刚開始算错了目标函数,事实上目标函数就是代价函数,而不是如果函数
g = X*((h-y)'); %
% TODO: Compute the linear regression objective by looping over the examples in X.
% Store the objective function value in 'f'.
%
% TODO: Compute the gradient of the objective with respect to theta by looping over
% the examples in X and adding up the gradient for each example. Store the
% 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:

mkoctfile --mex myhello.c
mkoctfile 在Octave的bin文件夹里,这玩意还要调用gcc和g++。
所以得把gcc和g++所在文件夹加入到环境变量。

本文作者: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. php 魔术方法和魔术常量

    魔术方法:PHP把类中所有以__(两个下划线)开头的方法当成魔术方法,一般建议用户不要将自定义的方法前面加上__作为前缀.魔术方法: 1. __construct() 类的默认构造方法,如果__con ...

  2. tp框架 JS里面获取session

    var var_name="{:session('xxxxx')}"; 用大括号 这个方法可以获取session

  3. 4.AND,OR

    4.WHERE中使用AND,OR连接多个过滤条件      AND:并且的关系,要求条件同时满足    OR:或者的关系,要求条件满足某一个就可以     //查询10部门,基本工资大于2000的员工 ...

  4. poj - 1050 - To the Max(dp)

    题意:一个N * N的矩阵,求子矩阵的最大和(N <= 100, -127 <= 矩阵元素 <= 127). 题目链接:http://poj.org/problem?id=1050 ...

  5. 安卓版微信自带浏览器和IE6浏览器ajax请求abort错误处理

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46419567 给页面元素绑定了一个click事件用来触发ajax请求.在安卓微信自 ...

  6. 14、反射(reflect)

    一.反射概念 不用实例化也可以调用类中的私有成员:反射慢,实例化快:反射可以看到其他类中的内部构造,透明,但是不安全. JAR:JAVA函数库 WAR:web发布的包 YAR:RPC服务 二.idea ...

  7. ubuntu 休眠之后蓝牙鼠标无效果。

    ubuntu链接蓝牙鼠标之后.左上角蓝牙标志左下角应该有一个锁的标志. 可是休眠之后,蓝牙鼠标失效,锁没有了,点击按键,出来锁之后,立即消失. 运行两次例如以下命令能够解决: sudo hciconf ...

  8. System.getProperty()方法可以获取的值

    /** 获得当前类的完整路径.最后一句 */ package org.outman.dms.server; import java.net.MalformedURLException; import ...

  9. DISM

    C:\WINDOWS\system32>DISM /Online /Cleanup-image /RestoreHealth 部署映像服务和管理工具版本: 10.0.16193.1001 映像版 ...

  10. Android TextView加下划线的几种方式

    如果是在资源文件里: <resources> <</u></string> <string name="app_name">M ...