机器学习 | 实验一:线性回归
创始人
2024-05-29 05:27:37
0

文章目录

  • 📚描述
  • 📚数据
  • 📚监督学习问题
  • 📚二维线性回归
  • 📚理解J(θ)

⭐️对应笔记

  • 单变量线性回归
  • 多变量线性回归

📚描述

第一个练习将提供线性回归练习。这些练习已经在Matlab上进行了广泛的测试。但它们也应该在中工作,这被称为“Matlab的免费版本”。如果您使用的是Octave,请确保安装Image包(可在Windows中作为选项使用)安装程序,可从Octave-Forge获得Linux。

📚数据

数据包里包含了一些测量2到8岁之间不同男孩身高的例子。y值是以米为单位测量的高度x值是与身高对应的男孩的年龄。每个身高和年龄元组在我们的数据集中构成了一个训练示例(x(i),y(i))(x ^{(i)},y ^{(i)})(x(i),y(i))。有m = 50个训练示例,我们用它们来开发一个线性回归模型。

📚监督学习问题

在这个问题中,我们使用梯度下降来实现线性回归。在Matlab/Octave中,我们可以使用这些命令加载训练集

x=load('ex1x.dat');
y=load('ex1y.dat');

这将是我们针对具有n=1特征的监督学习问题的训练集(除了通常的x0=1x_0 = 1x0​=1,所以x∈R2x∈R_2x∈R2​)。用以下命令绘制训练集(并标记轴)

figure %open a new figure window(%是注释)
plot(x,y,'o');
ylabel('Height in meters')
xlabel('Age in years')

我们能看到一系列如下的数据点
在这里插入图片描述
在开始梯度下降之前,我们需要向每个示例中添加x0=1x_0 = 1x0​=1项

m=length(y);%store the number of training examples(这里的m是约定符号)
x=[ones(m,1),x];%Add a column of ones to x

从这一点开始,我们需要记住,训练数据的年龄值实际上在x的第二列。这在以后绘制结果时很重要。

📚二维线性回归

现在,我们将对这个问题实现线性回归。回想一下,线性回归模型是hθ(x)=θTXh_\theta(x)=\theta^TXhθ​(x)=θTX,并且现在这种情况是θ0+θ1x1\theta_0+\theta_1x_1θ0​+θ1​x1​。而梯度下降更新规则为:在这里插入图片描述

(1) 使用α = 0.07学习率实现梯度下降。将参数初始化,θ0=θ1=0θ_0 = θ_1 = 0θ0​=θ1​=0,并从这个初始起点运行一次梯度下降的迭代。记录第一次迭代后得到的θ0θ_0θ0​和θ1θ_1θ1​的值

alpha=0.07;%learning rate
%initial theta
theta0=0;
theta1=0;%after one iteration
theta0=theta0-alpha*(1/m)*sum((theta0.*x(:,1)+theta1.*x(:,2)-y).*x(:,1));
theta1=theta1-alpha*(1/m)*sum((theta0.*x(:,1)+theta1.*x(:,2)-y).*x(:,2));

👇得到第一次迭代后θ0θ_0θ0​和θ1θ_1θ1​的值👇

在这里插入图片描述

(2) 继续运行梯度下降,进行更多的迭代,直到θ收敛(这总共需要大约1500次迭代)。收敛后,记录得到的θ0θ_0θ0​和θ1θ_1θ1​的最终值,并根据θ在与训练数据相同的图上绘制算法的直线拟合。绘图命令将如下所示:

theta0(1,1)=0.074528;
theta1(1,1)=0.3543;
maxlter=1500;%max iteration
for i=1:maxlter-1theta0(i+1,1)=theta0(i,1)-alpha*(1/m)*sum((theta0(i,1).*x(:,1)+theta1(i,1).*x(:,2)-y).*x(:,1));theta1(i+1,1)=theta1(i,1)-alpha*(1/m)*sum((theta0(i,1).*x(:,1)+theta1(i,1).*x(:,2)-y).*x(:,2));
end
hold on;%plot new data without clearing old plot
plot(x(:,2),theta0(i+1,1)+x(:,2)*theta1(i+1,1),'-');
legend('Training data','Linear regression');

在这里插入图片描述

迭代1500次后,θ0θ_0θ0​=0.75015,θ1θ_1θ1​=0.063883。

⚠️在这里我们提前预知了大致的迭代次数,当我们不能提前预知时,我们可以绘制迭代次数和代价函数的图表来观测算法在何时趋于收敛。

在这里插入图片描述

⚠️也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如 0.001)进行比较。

👀从变量编辑器中看到,趋于收敛时,迭代后值基本就不变了

在这里插入图片描述

注意,对于大多数机器学习问题,x是非常高维的,所以我们不能绘制hθ(x)h_θ(x)hθ​(x)。但是因为在这个例子中,我们只有一个特性,如果能够绘制出来,我们的结果就会得到一个很好的完整性检查。

(3) 最后,我们用学习到的假设来做一些预测。用所得到的模型来预测两个3.5岁和7岁的男孩的身高。

  • 已知假设函数大致为:0.7501+0.0639x0.7501+0.0639x0.7501+0.0639x
  • 3.5岁:θ0+3.5θ1=0.7501+3.5×0.0639=0.9738m\theta_0+3.5\theta_1=0.7501+3.5×0.0639=0.9738mθ0​+3.5θ1​=0.7501+3.5×0.0639=0.9738m
  • 7岁:θ0+7θ1=0.7501+7×0.0639=1.1974m\theta_0+7\theta_1=0.7501+7×0.0639=1.1974mθ0​+7θ1​=0.7501+7×0.0639=1.1974m

📚理解J(θ)

我们想更好地了解梯度下降所做的事情,并可视化参数θ∈R2θ∈R^2θ∈R2和J(θ)J(θ)J(θ)之间的关系。在这个问题中,我们将把J(θ)J(θ)J(θ)绘制为一个三维曲面图。

在这里插入图片描述

在这里插入图片描述

当应用学习算法时,我们通常不会尝试绘制J(θ)J(θ)J(θ),因为通常θ∈Rnθ∈R^nθ∈Rn是非常高维的,所以我们没有任何简单的方法来绘制或可视化J(θ)J(θ)J(θ)。但是因为这里的例子使用了一个非常低维的θ∈R2θ∈R^2θ∈R2,我们将绘制J(θ)J(θ)J(θ)来获得更多关于线性回归的直觉。

%以下代码中的参数为指导书指定
J_vals=zeros(100,100); 
theta0_vals=linspace(-3,3,100);
theta1_vals=linspace(-1,1,100);
% linespace(x1,x2,N)中,x1、x2、N分别为起始值、终止值、元素个数。
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'; %转置
figure;
surf(theta0_vals,theta1_vals,J_vals);
xlabel('\theta_0');
ylabel('\theta_1');

在这里插入图片描述

这个3D曲面和实现梯度下降时发现的θ0和θ1值之间的关系是什么

这个3D曲面的最低点所对应的θ0θ_0θ0​和θ1θ_1θ1​就是所求的假设函数对应的θ0θ_0θ0​和θ1θ_1θ1​。


扩展补充:surf函数

相关内容

热门资讯

韩国釜山导游词 关于韩国釜山导游词  各位游客,大家好,欢迎大家来到这韩国南部以"深水良港"而著称的釜山参观游览,我...
云南抚仙湖导游词 云南抚仙湖导游词  作为一位出色的导游人员,往往需要进行导游词编写工作,导游词由引言、主体和结语三部...
北京颐和园的旅游导游词 北京颐和园的旅游导游词  篇一:颐和园导游词  1 概况  颐和园是我国现存规模最大,保存最完整的皇...
三亚导游词 三亚导游词精选  三亚市位于海南岛最南端,位于北纬18°09′34″-18°37′27″、东经108...
大理崇圣三塔中英文导游词 大理崇圣三塔中英文导游词  作为一无名无私奉献的导游,通常会被要求编写导游词,导游词作为一种解说的文...
胡雪岩故居的导游词 胡雪岩故居的导游词  作为一名具备丰富知识的导游,常常要写一份好的导游词,导游词具有注重口语化、精简...
西安钟楼的导游词 西安钟楼的导游词  西安钟楼位于西安市中心,明城墙内东西南北四条大街的交汇处。钟鼓楼是古代中国城市的...
南越王墓葬群导游词 南越王墓葬群导游词  西汉南越王墓_导游词  西汉南越王墓  一、概况  各位游客,今天我将带大家参...
温州仙岩的导游词 温州仙岩的导游词  各位旅客,大家好,今天我们来到了浙江,游览美丽的仙岩。我是你们的导游曹可萱,你们...
火山口国家地质公园导游词 火山口国家地质公园导游词  朋友们,相信你一定知道火山,在电视或电影里看过火山爆发的场景,一定会被它...
秦兵马俑导游词 秦兵马俑导游词15篇  作为一名尽职尽责的导游,编写导游词是必不可少的,导游词是我们引导游览时使用的...
晋祠导游词 晋祠导游词  作为一名专门为游客提供帮助的导游,通常需要准备好一份导游词,导游词具有极强的实用性,涉...
昆明大观楼导游词 昆明大观楼导游词  作为一名专门为游客提供帮助的导游,常常要写一份好的导游词,导游词是导游员在游览时...
许昌西湖公园的导游词 许昌西湖公园的导游词  今天,我带领大家来游览位于许昌市中心的西湖公园,希望我们能一起渡过一段快乐的...
刘公岛导游词 刘公岛导游词范文(精选5篇)  作为一名乐于助人的导游,总归要编写导游词,导游词是导游员同游客交流思...
九龙洞风景区导游词贵州导游词 九龙洞风景区导游词贵州导游词  作为一名默默奉献的导游,时常需要编写导游词,导游词一般是根据实际的游...
云南澜沧江导游词 云南澜沧江导游词  澜沧江是湄公河上游在中国境内河段的名称,藏语拉楚,意思为“獐子河”。它也是中国西...
新疆概况旅游导游词 新疆概况旅游导游词范文(精选3篇)  作为一名尽职尽责的导游,有必要进行细致的导游词准备工作,借助导...
颐和园的导游词资料 关于颐和园的导游词资料  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...