警告:本文为小白入门学习笔记

数据集:

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

由房屋的面积和bedroom个数影响房价的高低。

加载数据

x = load('ex3x.dat');
y = load('ex3y.dat');
m = length(y);
x = [ones(m, 1), x]; (之所以加上一列1,因为x1 = 1);

看一下输入值,注意房间面积是卧室数量的1000倍左右。这种差异意味着预处理输入将显着提高梯度下降的效率。

在您的程序中,按标准偏差缩放两种类型的输入,并将其均值设置为零。

%数据处理,特征值缩放
sigma = std(x);%标准差
mu = mean(x); %平均数
x(:,2) = (x(:,2) - mu(2))./ sigma(2);
x(:,3) = (x(:,3) - mu(3))./ sigma(3);

假设函数任然是:

梯度下降算法:

用居矩阵的方式计算:

theta = theta - x'*(x*theta-y)/m*a;

这里theta是一个3*1的矩阵,x是50*2矩阵,y是50*1矩阵,a表示alpha,m表示矩阵列长;

最终MATLAB程序是:

function [jVal] = multiLinerCost(a)
x = load('ex3x.dat');
y = load('ex3y.dat');
m = length(y);
x = [ones(m, 1), x];
%数据处理,特征值缩放
sigma = std(x);%标准差
mu = mean(x); %平均数
x(:,2) = (x(:,2) - mu(2))./ sigma(2);
x(:,3) = (x(:,3) - mu(3))./ sigma(3);

theta = zeros(size(x(1,:)))'; %3*1
J = zeros(50,1);
for iter = 1:50
theta = theta - x'*(x*theta-y)/m*a;
jVal = sum((x*theta-y).^2)/(2*m);
J(iter) = jVal;
end

%绘图
plot(0:49,J(1:50),'-');
xlabel('Number of iterations')
ylabel('Cost J')
end

控制台:

multiLinerCost(0.07) %选取学习速率(learning rates )为0.07;

我们可以试试不同的learning rates 取值,对比曲线。

可以看到alpha =0.01时,曲线下降缓慢,迭代50次时还没有下降到最低值,alpha = 0.3时曲线在5附近急剧下降,在之后迭代就没有太大变化,所以选取0.07这个值相对合理。

如果alpha  再大会怎么样呢?

设alpha=1.5,可以看到这个值太大以至于一开始就为零,到最后趋近于无穷大。

所以一般取值 :

使用梯度下降算法求得theta:

1.0e+05 *

3.4041
1.1063
-0.0665

使用矩阵计算求出:(如果用矩阵直接计算,不用特征值缩放)

1.0e+04 *

8.9598
0.0139
-0.8738

(梯度下降法)所以最后的曲线方程是 h(x1,x2) = 340413 + 110631*x1 - 6650*x2

假如一个房间面积为1650,bedroom个数是3个,那么预测价格是$293,081;

这是对于二元线性回归问题,如果一般化X = [x1;x2;x3;........xn]  ;  theta = [theta0;theta1;......thetan]也可以解决。

这只是对多元线性回归的简单应用,还有很多东西要学习。

入门菜鸟,错误地方欢迎指教!

多元线性回归(Multivariate Linear Regression)简单应用的更多相关文章

  1. 机器学习之多变量线性回归(Linear Regression with multiple variables)

    1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量 ...

  2. 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

    (一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...

  3. 从损失函数优化角度:讨论“线性回归(linear regression)”与”线性分类(linear classification)“的联系与区别

    1. 主要观点 线性模型是线性回归和线性分类的基础 线性回归和线性分类模型的差异主要在于损失函数形式上,我们可以将其看做是线性模型在多维空间中“不同方向”和“不同位置”的两种表现形式 损失函数是一种优 ...

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

    线性回归(linear regression)实践篇 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了. 这次打算以该课程的作业为主线,对机器学习基本知识做 ...

  5. Python 线性回归(Linear Regression) 基本理解

    背景 学习 Linear Regression in Python – Real Python,对线性回归理论上的理解做个回顾,文章是前天读完,今天凭着记忆和理解写一遍,再回温更正. 线性回归(Lin ...

  6. 【深度学习】线性回归(Linear Regression)——原理、均方损失、小批量随机梯度下降

    1. 线性回归 回归(regression)问题指一类为一个或多个自变量与因变量之间关系建模的方法,通常用来表示输入和输出之间的关系. 机器学习领域中多数问题都与预测相关,当我们想预测一个数值时,就会 ...

  7. Multivariate Linear Regression

    Multiple Features Linear regression with multiple variables is also known as "multivariate line ...

  8. 第五十篇 入门机器学习——线性回归(Linear Regression)

    No.1. 线性回归算法的特点 No.2. 分类问题与回归问题的区别 上图中,左侧为分类问题,右侧为回归问题.左侧图中,横轴和纵轴表示的都是样本的特征,用不同的颜色来作为输出标记,表示不同的种类:左侧 ...

  9. 多重线性回归 (multiple linear regression) | 变量选择 | 最佳模型 | 基本假设的诊断方法

    P133,这是第二次作业,考察多重线性回归.这个youtube频道真是精品,用R做统计.这里是R代码的总结. 连续变量和类别型变量总要分开讨论: 多重线性回归可以写成矩阵形式的一元一次回归:相当于把多 ...

随机推荐

  1. Python——POP3邮件协议

    一.POP3协议用于收取邮件 二.POP3协议常用方法 user(login):想服务器发送登录名,并显示服务器的响应,表示服务器正在等待该用户的输入密码 pass_(passwd):在用户使用use ...

  2. ImportError: No module named google.protobuf.internal

    下载: protobuf-3.3.0 设置路径:export PYTHONPATH=/gruntdata/lihaiyang/local/protobuf-3.3.0/python:$PYTHONPA ...

  3. React 学习(三) ---- state 和 事件处理函数

    在上两节中,我们讲述了props, 组件使用props进行渲染,但是这是一次性的, props渲染完成之后就不做任何事情了,但是现实中却不是这样的,当我们点击购物车上的加减按钮时,数量会自动加1或减1 ...

  4. Wiener Filter

    假设分别有两个WSS process:$x[n]$,$y[n]$,这两个process之间存在某种关系,并且我们也了解这种关系.现在我们手头上有process $x[n]$,目的是要设计一个LTI系统 ...

  5. Xml的用途

    1.可以作为数据库存储数据--通过XML文件存储数据,可以通过javaScript读取外部的XML文件,然后更新HTML的数据内容 2.XML数据以纯文本格式进行存储,提供了独立于软件和硬件的数据存储 ...

  6. CF1106F Lunar New Year and a Recursive Sequence

    题目链接:CF1106F Lunar New Year and a Recursive Sequence 大意:已知\(f_1,f_2,\cdots,f_{k-1}\)和\(b_1,b_2,\cdot ...

  7. bzoj 3626 : [LNOI2014]LCA (树链剖分+线段树)

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...

  8. IDEA如何查看maven的依赖结构

    打开方式: 方法一:该工具有个Maven Projects窗口,一般在右侧能够找到,如果没有可以从菜单栏打开:View>Tool Windows>Maven Projects:选择要分析的 ...

  9. MT【308】投影的定义

    已知向量$\overrightarrow{a},\overrightarrow{b}$满足:$|\overrightarrow{a}|=2$,向量$\overrightarrow{b}$与$\over ...

  10. [luogu1486][bzoj1503][NOI2004]郁闷的出纳员【平衡树treap】

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...