转载 Deep learning:三(Multivariance Linear Regression练习)

前言:

本文主要是来练习多变量线性回归问题(其实本文也就3个变量),参考资料见网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex3/ex3.html.其实在上一篇博文Deep learning:二(linear regression练习)中已经简单介绍过一元线性回归问题的求解,但是那个时候用梯度下降法求解时,给出的学习率是固定的0.7.而本次实验中学习率需要自己来选择,因此我们应该从小到大(比如从0.001到10)来选择,通过观察损失值与迭代次数之间的函数曲线来决定使用哪个学习速率。当有了学习速率alpha后,则本问问题求解方法和上面的没差别。

本文要解决的问题是给出了47个训练样本,训练样本的y值为房子的价格,x属性有2个,一个是房子的大小,另一个是房子卧室的个数。需要通过这些训练数据来学习系统的函数,从而预测房子大小为1650,且卧室有3个的房子的价格。

实验基础:

dot(A,B):表示的是向量A和向量B的内积。

又线性回归的理论可以知道系统的损失函数如下所示:

    其向量表达形式如下:

当使用梯度下降法进行参数的求解时,参数的更新公式如下:

当然它也有自己的向量形式(程序中可以体现)。

实验结果:

测试学习率的结果如下:

由此可知,选用学习率为1时,可以到达很快的收敛速度,因此最终的程序中使用的学习率为1.

最终使用梯度下降法和公式法的预测结果如下:

可以看出两者的结果是一致的。

实验主要程序及代码:

%% 方法一:梯度下降法
x = load(‘ex3x.dat‘);
y = load(‘ex3y.dat‘);

x = [ones(size(x,1),1) x];
meanx = mean(x);%求均值
sigmax = std(x);%求标准偏差
x(:,2) = (x(:,2)-meanx(2))./sigmax(2);
x(:,3) = (x(:,3)-meanx(3))./sigmax(3);

figure
itera_num = 100; %尝试的迭代次数
sample_num = size(x,1); %训练样本的次数
alpha = [0.01, 0.03, 0.1, 0.3, 1, 1.3];%因为差不多是选取每个3倍的学习率来测试,所以直接枚举出来
plotstyle = {‘b‘, ‘r‘, ‘g‘, ‘k‘, ‘b--‘, ‘r--‘};

theta_grad_descent = zeros(size(x(1,:)));
for alpha_i = 1:length(alpha) %尝试看哪个学习速率最好
    theta = zeros(size(x,2),1); %theta的初始值赋值为0
    Jtheta = zeros(itera_num, 1);
    for i = 1:itera_num %计算出某个学习速率alpha下迭代itera_num次数后的参数
        Jtheta(i) = (1/(2*sample_num)).*(x*theta-y)‘*(x*theta-y);%Jtheta是个行向量
        grad = (1/sample_num).*x‘*(x*theta-y);
        theta = theta - alpha(alpha_i).*grad;
    end
    plot(0:49, Jtheta(1:50),char(plotstyle(alpha_i)),‘LineWidth‘, 2)%此处一定要通过char函数来转换
    hold on

    if(1 == alpha(alpha_i)) %通过实验发现alpha为1时效果最好,则此时的迭代后的theta值为所求的值
        theta_grad_descent = theta
    end
end
legend(‘0.01‘,‘0.03‘,‘0.1‘,‘0.3‘,‘1‘,‘1.3‘);
xlabel(‘Number of iterations‘)
ylabel(‘Cost function‘)

%下面是预测公式
price_grad_descend = theta_grad_descent‘*[1 (1650-meanx(2))/sigmax(2) (3-meanx(3)/sigmax(3))]‘

%%方法二:normal equations
x = load(‘ex3x.dat‘);
y = load(‘ex3y.dat‘);
x = [ones(size(x,1),1) x];

theta_norequ = inv((x‘*x))*x‘*y
price_norequ = theta_norequ‘*[1 1650 3]‘

参考资料:

http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex3/ex3.html

Deep learning:二(linear regression练习)

作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 欢迎转载或分享,但请务必声明文章出处。

时间: 2024-10-13 20:55:56

转载 Deep learning:三(Multivariance Linear Regression练习)的相关文章

转载 Deep learning:二(linear regression练习)

前言 本文是多元线性回归的练习,这里练习的是最简单的二元线性回归,参考斯坦福大学的教学网http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex2/ex2.html.本题给出的是50个数据样本点,其中x为这50个小朋友到的年龄,年龄为2岁到8岁,年龄可有小数形式呈现.Y为这50个小朋友对应的身高,当然也是小数形式表示的.现在的问题是要根据这50个训练样本,估

转载 Deep learning:四(logistic regression练习)

前言: 本节来练习下logistic regression相关内容,参考的资料为网页:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex4/ex4.html.这里给出的训练样本的特征为80个学生的两门功课的分数,样本值为对应的同学是否允许被上大学,如果是允许的话则用'1'表示,否则不允许就用'0'表示,这是一个典型的二分类问题.在此问题中,给出的80个

Machine learning with python - Linear Regression

Machine learning with python Linear Regression 数据来自 cs229  Problem Set 1 (pdf) Data: q1x.dat, q1y.dat, q2x.dat, q2y.dat PS1 Solution (pdf) 从左上往右下 batchGradientDescent的cost随迭代次数的增加而下降,和收敛结果 stochasticGradientDescent的cost随迭代次数的增加而下降,和收敛结果 normalEquatio

Andrew Ng Machine Learning 专题【Linear Regression】

此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探讨. 课程网址:https://www.coursera.org/learn/machine-learning/home/welcome Week 3: Logistic Regression & Regularization 笔记:http://blog.csdn.net/ironyoung/ar

[转载]Deep Learning(深度学习)学习笔记整理

转载自:http://blog.csdn.net/zouxy09/article/details/8775360 感谢原作者:[email protected] 八.Deep learning训练过程 8.1.传统神经网络的训练方法为什么不能用在深度神经网络 BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想.深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源. BP算法存在的问题: (1)梯度越来越稀疏:从顶层越往下

转载 Deep learning:六(regularized logistic回归练习)

前言: 在上一讲Deep learning:五(regularized线性回归练习)中已经介绍了regularization项在线性回归问题中的应用,这节主要是练习regularization项在logistic回归中的应用,并使用牛顿法来求解模型的参数.参考的网页资料为:http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=DeepLearning&doc=exercises/ex5/ex5.html.要解决的

转载 deep learning:八(SparseCoding稀疏编码)

转载 http://blog.sina.com.cn/s/blog_4a1853330102v0mr.html Sparse coding: 本节将简单介绍下sparse coding(稀疏编码),因为sparse coding也是deep learning中一个重要的分支,同样能够提取出数据集很好的特征.本文的内容是参考斯坦福deep learning教程:Sparse Coding,Sparse Coding: Autoencoder Interpretation,对应的中文教程见稀疏编码,

CheeseZH: Stanford University: Machine Learning Ex5:Regularized Linear Regression and Bias v.s. Variance

源码:https://github.com/cheesezhe/Coursera-Machine-Learning-Exercise/tree/master/ex5 Introduction: In this exercise, you will implement regularized linear regression and use it to study models with different bias-variance properties. 1. Regularized Lin

转载 Deep learning:一(基础知识_1)

前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下machine learning的基础知识,见网页:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning.内容其实很短,每小节就那么几分钟,且讲得非常棒. 教程中的一些术语: Model repr