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

数据集:

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. How to SHA1 on macOS

    openssl sha1 /volumes/test/install/osx-test.dmg

  2. C 语言----- 指针

    指针是一个值为内存地址的变量, 指针的核心是它是一个变量, 只不过它是用来存放内存地址的, 所以在了解指针之前,先说一下什么是变量.变量就是在内存中开辟的一个空间.如int year, 就是在内存中开 ...

  3. PC平台的SIMD支持检测

    如果我们希望在用SIMD来提升程序处理的性能,首先需要做的就是检测程序所运行的平台是否支持相应的SIMD扩展.平台对SIMD扩展分为两部分的支持: CPU对SIMD扩展的支持.SIMD扩展是随着CPU ...

  4. java8的版本对组合式异步编程

    讨论了Java 8中的函数式数据处理,它可以将对集合数据的多个操作以流水线的方式组合在一起.本节继续讨论Java 8的新功能,主要是一个新的类CompletableFuture,它是对65节到83节介 ...

  5. #186 path(容斥原理+状压dp+NTT)

    首先只有一份图时显然可以状压dp,即f[S][i]表示S子集的哈密顿路以i为终点的方案数,枚举下个点转移. 考虑容斥,我们枚举至少有多少条原图中存在的边(即不合法边)被选进了哈密顿路,统计出这个情况下 ...

  6. HUST 1541 解方程

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6394836.html 1541 - Student’s question 时间限制:1秒 内存限制 ...

  7. nginx反向代理时配置访问密码

    在有些情况下,我们需要对服务器上的某些资源进行限流或者禁止陌生人访问,我们可以通过nginx配置来对url添加访问密码. 效果如下 nginx 开启访问验证在 nginx 下,提供了 ngx_http ...

  8. 卢卡斯定理&扩展卢卡斯定理

    卢卡斯定理 求\(C_m^n~mod~p\) 设\(m={a_0}^{p_0}+{a_1}^{p_1}+\cdots+{a_k}^{p_k},n={b_0}^{p_0}+{b_1}^{p_1}+\cd ...

  9. wstngfw IKEv2服务器配置示例

    wstngfw IKEv2服务器配置示例 移动客户端的服务器配置有几个组件: 为***创建一个证书结构 配置IPsec移动客户端设置 为客户端连接创建阶段1和阶段2 添加IPsec防火墙规则 创建** ...

  10. Git初始化及配置

    >>>>Git简介 >>>>官网下载Git >>>>安装,一路next 安装成功后,鼠标右键里就有Git bash here和G ...