deep learning 学习(二)线性回归的matalab操作

继续学习http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2961660.html

题目是:50个数据样本点,其中x为这50个小朋友到的年龄,年龄为2岁到8岁,年龄可有小数形式呈现。Y为这50个小朋友对应的身高,当然也是小数形式表示的。现在的问题是要根据这50个训练样本,估计出3.5岁和7岁时小孩子的身高。

数据可以在http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex2/ex2.html下载

作者已经给出了代码:

采用normal equations方法求解:

 1 %%方法一
 2 x = load(‘ex2x.dat‘);
 3 y = load(‘ex2y.dat‘);
 4 plot(x,y,‘*‘)
 5 xlabel(‘height‘)
 6 ylabel(‘age‘)
 7 x = [ones(size(x,2),1),x];%注意这里作者手误了,作者打成了size(x),这是不对的,因为size(x)会出来的x这个向量的两个维
 8 %度,我们只需要第一个维度,我们还要再加一列1是因为这里把wx+b变成了w’x这样我们化成齐次的线性方程,所以我们要把x扩成一列1。
 9 w=inv(x‘*x)*x‘*y
10 hold on
12 plot(x(:,2),0.0639*x(:,2)+0.7502)%这里的0.7502就是求得的w向量的第一个值,也就是wx+b的那个b,w第二个值就是wx+b的w
方法二:
 1 clear all; close all; clc
 2 x = load(‘ex2x.dat‘); y = load(‘ex2y.dat‘);
 3 m = length(y); % number of training examples
 4 % Plot the training data
 5 figure; % open a new figure window  这个figure也可以不写,没什么影响
 6 plot(x, y, ‘o‘);%用圆圈表示数据点
 7 ylabel(‘Height in meters‘)%给y值写上代表什么意思
 8 xlabel(‘Age in years‘)
 9
10 % Gradient descent
11 x = [ones(m, 1) x]; % Add a column of ones to x x最开始增加一列1,也就是每一个数据点增加一维,并且这一维都是1,
12 %相当于要求得线性方程是齐次的w‘x=Y,x是变成的二维的,Y代表根据训练的w‘x预测的Y值
13 theta = zeros(size(x(1,:)))‘; % initialize fitting parameters w‘初始化为[0;0]
14 MAX_ITR = 1500;
15 alpha = 0.07;%学习速率
16
17 for num_iterations = 1:MAX_ITR
18     grad = (1/m).* x‘ * ((x * theta) - y);%grd具体是怎么算的可以看下下面的推导,只是这里的1/m不知道是怎么得出来的,
19     %我的是2m,注意grad是一个2*1的向量。并且公式里面的形式
20     %跟这里有点不同,是因为在公式中xi代表一个向量,这里x是一个矩阵,并且每一行代表一个样本,所以这里代码中前面是x‘后面是x,
21     %在公式中正好相反    .* 是点乘,不是内积,向量的内积结果是个数,这还是一个向量
22   theta = theta - alpha .* grad;   %这里如果令grad=0求极值得到参数的方法就是前面的那个方法,这里不是grad=0,而是一次次的迭代,求最值。
23 end
24 hold on; % keep previous plot visible
25 plot(x(:,2), x*theta, ‘-‘)%这个就是回归曲线的那个图
26 legend(‘Training data‘, ‘Linear regression‘)%标出图像中各曲线标志所代表的意义,就是每个数据点表示成的圆圈或线段所代表的意义
27 hold off % don‘t overlay any more plots on this figure,指关掉前面的那幅图
28 % Closed form solution for reference
29 % You will learn about this method in future videos
30 exact_theta = (x‘ * x)\x‘ * y%不知道这是啥意思
31 % Predict values for age 3.5 and 7
32 predict1 = [1, 3.5] *theta
33 predict2 = [1, 7] * theta
34 % Grid over which we will calculate J
35 theta0_vals = linspace(-3, 3, 100);%生成一个从-3到3之间有均匀的100个元素的向量
36 theta1_vals = linspace(-1, 1, 100);
37 % initialize J_vals to a matrix of 0‘s
38 J_vals = zeros(length(theta0_vals), length(theta1_vals));
39 for i = 1:length(theta0_vals)
40       for j = 1:length(theta1_vals)
41       t = [theta0_vals(i); theta1_vals(j)];
42       J_vals(i,j) = (0.5/m) .* (x * t - y)‘ * (x * t - y);%当参数的取值是从(-3,1)到(3,1)
43       %的矩形内均匀采样取值时(取了100*100个参数),所有样本xi与每个参数对应
44       %的回归方程的误差就是 J_vals(i,j)的一个值
45       end
46 end
47 J_vals = J_vals‘;
48 % Surface plot
49 figure;
50 surf(theta0_vals, theta1_vals, J_vals)%画出参数与损失函数的图像。注意用这个surf比较蛋疼,surf(X,Y,Z)是这样的,
51 %X,Y是向量,Z是矩阵,用X,Y铺成的网格(100*100个点)与Z的每个点
52 %形成一个图形,但是是怎么对应的哪,蛋疼之处就是,你的X的第二个元素与Y的第一个元素形成的那一个点不是和Z(2,1)的值对应!!
53 %而是和Z(1,2)对应!!因为前面形成Z(2,1)时,是X的第二个元素与Y的第一个元素
54 %所以J_vals前面才要转置。
55 xlabel(‘\theta_0‘); ylabel(‘\theta_1‘);
56 % Contour plot
57 figure;
58 % Plot J_vals as 15 contours spaced logarithmically between 0.01 and 100
59 contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 2, 15))%画出等高线
60 xlabel(‘\theta_0‘); ylabel(‘\theta_1‘);%类似于转义字符,但是最多只能是到参数0~9
第18行公式:就是就是cost function w是这个方程的参数,这个方程对w求导就是代码里的grad。求的结果是
 实验结果:训练样本散点和回归曲线预测图:

损失函数与参数之间的曲面图:

				
时间: 2024-08-02 10:11:52

deep learning 学习(二)线性回归的matalab操作的相关文章

Deep Learning(深度学习)之(四)Deep Learning学习资源

十一.参考文献和Deep Learning学习资源 先是机器学习领域大牛的微博:@余凯_西二旗民工:@老师木:@梁斌penny:@张栋_机器学习:@邓侃:@大数据皮东:@djvu9-- (1)Deep Learning http://deeplearning.net/ (2)Deep Learning Methods for Vision http://cs.nyu.edu/~fergus/tutorials/deep_learning_cvpr12/ (3)Neural Network for

【deep learning学习笔记】Recommending music on Spotify with deep learning

主要内容: Spotify是个类似酷我音乐的音乐网站,做个性化音乐推荐和音乐消费.作者利用deep learning结合协同过滤来做音乐推荐. 具体内容: 1. 协同过滤 基本原理:某两个用户听的歌曲都差不多,说明这两个用户听歌的兴趣.品味类似:某两个歌曲,被同一群人听,说明这两个歌曲风格类似. 缺点: (1)没有利用歌曲本身的特征(信息) (2)无法对"层级"的item进行处理,对于歌曲来说,这种层级关系体现在:专辑-主打歌-副歌,上面,这几种因素并不是同等重要的 (3)冷启动问题:

Neural Networks and Deep Learning学习笔记ch1 - 神经网络

近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的.从最主要的感知机開始讲起.到后来使用logistic函数作为激活函数的sigmoid neuron,和非常多其它如今深度学习中常使用的trick. 把深度学习的一个发展过程讲得非常清楚,并且还有非常多源代码和实验帮助理解.看完了整个tutorial后打算再又一次梳理一遍,来写点总结.以后再看其它资料

【转帖】【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)

今天介绍DBN的内容,其中关键部分都是(Restricted Boltzmann Machines, RBM)的步骤,所以先放一张rbm的结构,帮助理解 (图来自baidu的一个讲解ppt) ========================================================================================== 照例,我们首先来看一个完整的DBN的例子程序: 这是\tests\test_example_DBN.m 中的ex2 [cpp]

deep learning 学习笔记(三) 线性回归学习速率优化寻找

继续学习http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html,上一节课学习速率是固定的,而这里我们的目的是找到一个比较好的学习速率.我们主要是观察 不同的学习速率对应的不同的损失值与迭代次数之间的函数曲线是怎么样的,找到那条最快达到收敛的函数曲线,其对应的学习速率就是我们要找的比较好的学习速率.在这里我们分别取速率值为:0.001,0.01,0.1,1,2,当我们选择完学习速率后,其余的都跟上一节课一样了.本文要解决

deep learning 练习 多变量线性回归

多变量线性回归(Multivariate Linear Regression) 作业来自链接:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex3/ex3.html 这次的多变量线性回归问题,输入特征向量X是二维的,一个维度表示房间面积,一个维度表示房间数量,输出Y是房子的价格. 这一次试着自己找了一下合适的学习速率和迭代次数 合适的学习速率通过看损失

deep learning学习(四) 逻辑斯蒂(logistic)回归深入理解和matlab程序求参数

第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y'的误差来求得模型参数.我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的. Y=WX (假设W>0),Y的大小是随着X各个维度的叠加和的大小线性增加的,如图(x为了方便取1维): 然后再来看看我们这里的logistic 回归模型,模型公式是:,这里假设W>0,Y与X各维度叠加和(这里

Deep Learning学习 之 卷积神经网络(CNN)

概述 起源 卷积网络最初是受视觉神经机制的启发而设计的,是为识别二维形状而设计的一个多层感知器,这种网络结构对平移.比例缩放.倾斜或者共他 形式的变形具有高度不变性. 1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,1984年日本学者Fukushima 基于感受野概念提出的神经认知机(neocognitron)模型,它可以看作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网络领域的首次应用. 神经认知机将一个视觉模式分

Deep Learning学习 之 卷积神经网络(文字识别系统LeNet-5)

部分预备知识可以先看博文,统一了一些专业名词. 原文摘自,在此文中对原文增加了一些注释和修改,统一了与之前博文的专业名词说法,有助于理解. !!!如果读者发现一些数学符号后面有一些奇怪的竖线,那是CSDN的Latex除了问题,大家自行过滤. 在经典的模式识别中,一般是事先提取特征.提取诸多特征后,要对这些特征进行相关性分析,找到最能代表字符的特征,去掉对分类无关和自相关的特征.然而,这些特征的提取太过依赖人的经验和主观意识,提取到的特征的不同对分类性能影响很大,甚至提取的特征的顺序也会影响最后的