线性回归之实践

对于数据ex2Data.zip,学习出一个函数h(x),使之能较好地预测出y的值。

其中x表示孩子的年龄,y表示孩子的身高。

首先画出原始数据在坐标轴中的分布情况:

x = load(‘ex2x.dat‘); y = load(‘ex2y.dat‘);

m = length(y); %计算出训练样本的个数

% 绘出训练集
figure; % 打开一个新的绘图窗口
plot(x, y, ‘o‘);
ylabel(‘Height in meters‘)
xlabel(‘Age in years‘)

下面采用梯度下降进行线性回归:

% 梯度下降
x = [ones(m, 1) x]; % 这里添加一列是因为要学习的参数中有一个参数是h(x)中的常数项
theta = zeros(size(x(1,:)))‘; % 初始化参数
MAX_ITR = 1500; % 迭代次数
alpha = 0.07; % 学习率

for num_iterations = 1:MAX_ITR

% 梯度值
grad = (1/m).* x‘ * ((x * theta) - y);

% 根据梯度更新参数
theta = theta - alpha .* grad;
end
% 在命令窗口显示学习出的参数
theta

% 绘制出线性拟合
hold on;
plot(x(:,2), x*theta, ‘-‘)
legend(‘Training data‘, ‘Linear regression‘);
hold off ;

学习出的参数为:

theta =

0.7502
0.0639

可以看出,所有样本点都大致分布在拟合出的直线附近。

下面计算损失函数随着参数变化而变化的情况

% 参数变化范围
theta0_vals = linspace(-3, 3, 100);
theta1_vals = linspace(-1, 1, 100);

% 初始化损失函数
J_vals = zeros(length(theta0_vals), length(theta1_vals));

for i = 1:length(theta0_vals)
for j = 1:length(theta1_vals)
t = [theta0_vals(i); theta1_vals(j)];
J_vals(i,j) = (0.5/m) .* (x * t - y)‘ * (x * t - y);
end
end

J_vals = J_vals‘;
% Surface plot
figure;
surf(theta0_vals, theta1_vals, J_vals)
xlabel(‘\theta_0‘); ylabel(‘\theta_1‘);

可以看出我们拟合出的参数

theta =

0.7502
0.0639

基本上对应的损失函数最小的点。

为了看得更加明显,可继续绘制出损失函数的等高线

figure;
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 2, 15))
xlabel(‘\theta_0‘); ylabel(‘\theta_1‘);

同样可以看出大致的损失函数最低点对应的参数theta,与我们拟合出的参数基本一致。

总结:

由此我们可以总结出线性回归,就是要学习出一个函数h(x) =θ(0) + θ(1)x(1)(2)x(2)+...+θ(m)x(m)

对于上述训练集,这里h(x)就是y,我们的目的就是学习出参数θ(i)

使得我们再给定x的时候我们能通过上述函数较为准确的得出y的值。

时间: 10-03

线性回归之实践的相关文章

机器学习--线性回归的实践

1.鉴于之前提到的房价的问题,使用线性回归该如何解决呢? 首先我们假设有如下的数据方便计算机进行学习 面积 卧室 价格 2140 3 400 1600 3 330 2400 3 369 1416 2 232 ... ... ... 根据之前的演算过程(使房价与面积和卧室数目线性相关): hθ(x)=θ0 +θ1x1 +θ2x2 θ为计算时的权重,x1为房间面积,x2为我是数目.为了降低计算的模糊程度,将hθ(x)变成h(x)来进行计算,这时计算公式为: n为学习次数. 2. 有了相关数据之后就要

机器学习-线性回归补充-实践

线性回归分析过程中可能会遇到的问题 选定自变量时候要注意:去除多重共线性干扰 什么是多重共线性干扰? 强相关变量 多重共线性 避免将两个强相关变量输入到一个模型中,解决办法是只保留一个. 消除多重共线性的方法: 如果GVIF>10 则需要调整 如何挑选输入模型的自变量 输入的自变量多是有好处的,能够提升回归模型的准确性.另一方面,建设输入的自变量也是有好处的,可以方便业务同事理解. 权衡自变量多少的标准: 用olsrr包的ols_all_possible()函数 以上数据都计算出来后就可以创建线

机器学习入门实践——线性回归&非线性回归&mnist手写体识别

把一本<白话深度学习与tensorflow>给啃完了,了解了一下基本的BP网络,CNN,RNN这些.感觉实际上算法本身不是特别的深奥难懂,最简单的BP网络基本上学完微积分和概率论就能搞懂,CNN引入的卷积,池化等也是数字图像处理中比较成熟的理论,RNN使用的数学工具相对而言比较高深一些,需要再深入消化消化,最近也在啃白皮书,争取从数学上把这些理论吃透 当然光学理论不太行,还是得要有一些实践的,下面是三个入门级别的,可以用来辅助对BP网络的理解 环境:win10 WSL ubuntu 18.04

多元线性回归理论与实践

多元线性回归模型用途: 1.  回归用来拟合,解释现象: 2.  用来构建观测数据集与自变量之间一个预测模型: 3.  用来量化y与  相关性强度 假设: 1.  观测数据 相互独立 2.  随机误差服从于方差相同的正态分布 原理: ####R语言#################### 1.#########################查看数据相关性###################################### data=iris round(cor(data[,1:4]),

Spark MLlib Linear Regression线性回归算法

1.Spark MLlib Linear Regression线性回归算法 1.1 线性回归算法 1.1.1 基础理论 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合. 回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间

机器学习实践指南:案例应用解析

试读及购买链接 <机器学习实践指南:案例应用解析>是机器学习及数据分析领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包括算法理论剖析的著作,作者针对机器学习算法既抽象复杂又涉及多门数学学科的特点,力求理论联系实际,始终以算法应用为主线,由浅入深以全新的角度诠释机器学习. 前 言第一部分 准备篇第1章 机器学习发展及应用前景 21.1 机器学习概述 21.1.1 什么是机器学习 31.1.2 机器学习的发展 31.1.3 机器学习的未来 41.2 机器学习应用前景 51.2.1 数

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

1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量(变量)--房屋面积x.我们希望使用这个特征量来预测房子的价格.我们的假设在下图中用蓝线划出: 不妨思考一下,如果我们不仅仅知道房屋面积(作为预测房屋价格的特征量(变量)),我们还知道卧室的数量.楼层的数量以及房屋的使用年限,那么这就给了我们更多可以用来预测房屋价格的信息. 即,支持多变量的假设为:

ufldl学习笔记与编程作业:Linear Regression(线性回归)

ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说.不必深究其它机器学习的算法.能够直接来学dl. 于是近期就開始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节学习链接:http://ufldl.stanford.edu/tutorial/supervised/LinearRegression/ 从一个最简单的线性回归,能够

Ng第四课:多变量线性回归(Linear Regression with Multiple Variables)

4.1  多维特征 4.2  多变量梯度下降 4.3  梯度下降法实践 1-特征缩放 4.4  梯度下降法实践 2-学习率 4.5  特征和多项式回归 4.6  正规方程 4.7  正规方程及不可逆性(可选) 4.1  多维特征 目前为止,探讨了单变量/特征的回归模型,现在对房价模型增加更多的特征 增添更多特征后,引入一系列新的注释: n  代表特征的数量 代表第 i  个训练实例,是特征矩阵中的第 i 行,是一个向量(vector).    (图中给转置了) 代表特征矩阵中第 i 行的第j 个