机器学习-线性回归(Linear Regression)模型

本文将会阐述线性回归相关的概论与知识,涉及方面较多,讲的较细致适合0基础入门,可跳转到想了解的部分查看

目录

一.什么是线性回归模型

(1)监督学习

(2)回归问题

2.线性回归模型的样子

二.如何用线性回归解决问题

1.代价函数

(1)线性回归的代价函数

(2)如何减小代价函数的值

2.梯度下降

(1)线性回归的梯度下降

a.学习率

b.梯度下降的化简

(2)梯度下降的收敛

三.梯度下降的优化

1.多维特征

(1)向量化

2.特征缩放

(2)如何特征放缩

a.除以最大值

b.均值归一化

c.z-score标准化

3.特征工程

四.总结


一.什么是线性回归模型

线性回归模型是监督学习中的回归问题常用模型,接下来将逐一讲解

(1)监督学习

机器学习分为监督学习及非监督学习:

  • 监督学习是训练集(下图右表格)给予输入量x以及输出量y
  • 非监督学习是训练集给予输入量x但不给输出量y

如在房价预测中,同时给出了房屋面积x和房屋价格y。在肿瘤恶性预测中,给出肿瘤大小x和是否为恶性肿瘤y。以上例子都为监督学习。

(2)回归问题

监督学习分为回归问题和分类问题:

  • 回归问题是输出量y是无限多可能,如上述房价例子中,价格y可以是在一个区间中任一数字
  • 分类问题是输出量y是只有一小部分可能,如上述肿瘤恶性例子种,输出y只可能是是恶性,不是恶性两种可能

2.线性回归模型的样子

在上图中,红×代表了训练集中的数据分布。在讨论线性回归的样子前首先要明白的是,无论是构造什么模型,目标永远都是让模型尽可能贴近训练集,以便当我们输入新的数据时,模型能够输出我们想要的结果。据此,我们可以构造出线性回归最简单的样子f(x)=wx+b,如上图的蓝线所示。

二.如何用线性回归解决问题

我们已经构造出了线性回归的样子f(x)=wx+b,式子中有wb两个参数。我们接下来的目标就剩下寻找到最合适的wb让我们的模型来符合训练集的分布。而为此需要有能判断模型与训练集吻合度的方式,因此需要用到代价函数(也称成本函数)

1.代价函数

将我们输入模型数据后,得到的输出定义为\breve{y}(y-hat),将其与训练集的输出做减,求和后可得到最简单的代价函数J=\sum (\breve{y}-y),\breve{y}与y相减便得到了模型与训练集的误差值,因为训练集不仅一个数据因此对其求和。当然,我们可以对其取绝对值或平方来保证输出为正。此时我们就能通过判断J的大小来判断模型与训练集的吻合度

(1)线性回归的代价函数

在线性回归模型中,我们采用平方误差函数J=\frac{1}{2m}\sum_{i=1}^{m} (\breve{y}-y)^2(m为训练集数据数),同时\breve{y}等于f(x)=wx+b,故可以写成J=\frac{1}{2m}\sum_{i=1}^{m} (f(x)-y)^2,此时不得不强调。此时的x与y是训练集中每一单个数据,故整个训练集表示为将这m个数据求和。

请注意,此处的1/m是为了避免训练集数据数的多或少对代价函数的影响,1/2是为了后续计算方便约分。

(2)如何减小代价函数的值

代价函数的值代表了模型与训练集的吻合度,且值越低吻合度越高。在代价函数J=\frac{1}{2m}\sum_{i=1}^{m} (f(x)-y)^2f(x)=wx+b,可以发现,我们可以通过调整wb的值来让我们的代价函数值最小。

我们不妨将b的值固定为常数(此处b=0),故f(x)将会只有w这个参数。通过改变w的值来绘制出J的函数

左侧图中有x等于1,2,3三个数据。通过取不同的w得到J的值后绘制到右侧图中。可以看出代价函数的图像呈二次函数一些的图像。此时让我们将b加入,我们可得到代价函数的3d图像:

可以看出函数呈一个开口向下的碗形,而在碗底,J的值将最小。

2.梯度下降

想象我们在如上图一样的山顶上,我们该如何最快下到山底?首先我们可以在山顶上环视四周,然后向最陡的方向(即梯度方向)走下一步,再以该点重复以上步骤,直达我们走到山底。这就是梯度下降算法。

(1)线性回归的梯度下降

首先,我们要明白我们是通过不断选取适宜的wb,来进一步改善我们的代价函数使其变得更少。故梯度下降的本质是对wb进行不断的更新。因此给出以下公式:
w = w- \alpha \frac{\partial }{\partial w}J

b = b- \alpha \frac{\partial }{\partial b}J

其中\alpha表示学习率,该值大小在0~1之间。\frac{\partial }{\partial w}J是J对w求偏导

如上图,在梯度下降途中,w将始终会向图像最低处下降,离最低点远时,偏导高,下降快。离最低点近时,偏导低,下降慢。

a.学习率

学习率\alpha表示在下降时的步长,\alpha大,下降快,\alpha小,下降慢。但如果\alpha过大,在下降时可能会直接越过最低点到图像另一侧,然后在两侧不断跳跃上升,离最低点越来越远(下图右)。而当\alpha过小会时梯度下降过慢(下图左)。

故选取合适的学习率对梯度下降十分重要

b.梯度下降的化简

w = w- \alpha \frac{\partial }{\partial w}J中,\frac{\partial }{\partial w}J等于\frac{1}{m}\sum_{i=1}^{m} (f(x)-y)x , b = b- \alpha \frac{\partial }{\partial b}J中,\frac{\partial }{\partial b}J等于\frac{1}{m}\sum_{i=1}^{m} (f(x)-y)

故公式可化简为:

w = w- \alpha \frac{1}{m}\sum_{i=1}^{m} (f(x)-y)x

b = b- \alpha\frac{1}{m}\sum_{i=1}^{m} (f(x)-y)

在梯度下降时,只需不断这两个步骤

(2)梯度下降的收敛

为了判断梯度下降是否正常运行,我们可以绘制学习曲线:

此曲线的横坐标是参数的更新次数,当学习率选取合适时,学习曲线会逐渐减小最后会区域平缓。此时就称为梯度下降的收敛。

三.梯度下降的优化

1.多维特征

在线性回归f(x)=wx+b中,我们称x为模型中的一个特征。如在房价评估中,房子的平面面积就是评估中的一个特征。大多数时候,我们不仅仅只有一个特征,如在评估房价时,除了看面积外,我们还需看房子中房间的个数等。这时我们便有了多个特征f(x_{1},x_{2}...x_{n})=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b

(1)向量化

为了简化上面公式,我们将w_{i}x_{i}写成\vec{w}(\vec{w}=[w_{1},w_{2}...w_{n}])和\vec{x}(\vec{x}=[x_{1},x_{2}...x_{n}])故:

f(\vec{x})=\vec{w}\vec{x}+b

向量化可以使用python中的numpy库。向量化后的式子不仅简洁,同时这也将大大地优化计算的运行时间,这是因为向量化后的计算将会用特殊的硬件进行相加运算,而不是普通式子的相加n-1次。

因此我们就能将上面的所有公式写成向量化形式,如:

w = w- \alpha \frac{1}{m}\sum_{i=1}^{m} (f(\vec{x})-y)x请注意,括号外的x并不是向量x

b = b- \alpha \frac{1}{m}\sum_{i=1}^{m} (f(\vec{x})-y)

2.特征缩放

让我们来想象下,在房价预测中,平面面积范围可以在一个较大的区间,而房间数却无法从达到几百个房间。这意味这不同的特征之间,范围区间可能差距很大,这将出现下面的问题

右图为代价函数J的等高线图。可以看到这是一个又扁又高的图像。梯度下降过程中将反复跳跃,浪费时间。故我们需要通过特征缩放使两个特征范围区间相近

可以看到特征放缩后的等高图十分圆,梯度下降时能够直捣黄龙。

(2)如何特征放缩

a.除以最大值

将特征除以其最大值来统一区间

b.均值归一化

将特征减去原区间的平均值后除以最大值减最小值

c.z-score标准化

将特征减去平均值后除以标准差

3.特征工程

至此,我们可以看出特征的选取对模型十分重要,那么我们如何进行特征的选取?

在上图中,我们首先选取了房子的长与宽作为特征x_{1}x_{2},可以发现将x_{1}x_{2}相乘就是房子的面积将其写为x_{3}zu作为模型的新特征 。在以上例子中发现,我们可以用已有特征进行组合为新特征

因此我们就可以据此表示更多训练集了

如上图所示,fx)=wx+b无法很好的吻合训练集。故我们引入x^2项,相对更贴近训练集,但二次函数抛物线在x逐渐变大时会变小,这显然不符合实际情况,房屋面积越大,价格不可能变小。因此我们再引入x^3项,避免曲线的下降

对于特征更多内容,请详见机器学习-逻辑回归(Logistic Regression)模型

四.总结

        感谢你看到这里,在本文中,我们一起学习了线性回归模型的式子,梯度下降的方法。让我们最后回顾一下,我们的最终目的是为了得到一个模型,当我们输入数据时,能从中得到我们需要的结果,因此我们构造了线性回归模型。而为了让模型更符合训练集,我们构造了代价函数,为了使代价函数最小,我们学习了梯度下降算法。对于梯度下降算法,我们学习了其公式,向量化,特征缩放,特征工程。以上就是本文所有内容

### 安装配置 `gazebo_ros` 于 Gazebo Harmonic #### 准备工作 为了确保顺利安装 `gazebo_ros` 到 Gazebo Harmonic 版本,在Ubuntu24.04 LTS环境中,确认已经正确安装了gz-harmonic版本[^2]。 #### 更新软件包索引 更新本地的Apt仓库索引以获取最新的软件包列表: ```bash sudo apt update ``` #### 安装依赖项 安装必要的ROS 2工具和其他依赖项来支持Gazebo与ROS 2之间的桥梁功能。这通常包括但不限于`ros-$DISTRO-gazebo-plugins`, `ros-$DISTRO-gazebo-ros-pkgs`等,其中 `$DISTRO` 是当前使用的ROS 2发行版代号(例如humble, iron)。具体命令如下所示: ```bash sudo apt install ros-jazzy-gazebo-ros-pkgs ros-jazzy-gazebo-plugins ``` 上述命令适用于jazzy版本;如果使用其他ROS 2版本,则需替换相应的版本名称。 #### 配置环境变量 为了让系统识别新安装的组件以及设置好路径以便后续操作正常运行,建议每次打开终端前都执行下面这条指令加载环境变量: ```bash source /opt/ros/jazzy/setup.bash ``` 同样地,“jazzy”应被替换成实际所用的ROS 2版本名。 #### 测试安装成果 完成以上步骤之后可以尝试启动一个简单的世界文件来看看是否一切正常运作: ```bash ros2 launch ros_gz_sim gz_sim.launch.py gz_version:=harmonic ``` 请注意这里的参数`gz_version`设定了要启动的具体Gazebo版本,此处设定为`harmonic`表示启动对应版本的模拟器[^4]。 通过这些步骤应该能够成功地在Gazebo Harmonic上部署并测试`gazebo_ros`接口的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值