摘要

多元线性回归通过多个特征(x₁, x₂, …, xₙ)预测目标变量,模型表示为 f(x) = w₁x₁ + w₂x₂ + … + wₙxₙ + b,其中每个权重 w 体现对应特征的影响力,b 为基础值。为了提升计算效率,采用向量化技术利用 NumPy 等线性代数库进行并行计算,用点积运算替代传统循环,充分发挥硬件并行能力,特别适合处理大规模数据集。

在参数优化方面,使用梯度下降算法同时更新所有权重 w 和偏置 b。当特征取值范围差异较大时,梯度下降可能收敛缓慢,为此引入特征缩放技术,通过最大值归一化(x/max)、均值归一化((x-μ)/(max-min))或 Z-score 归一化((x-μ)/σ)等方法,将特征值调整到 [-1,1] 或相近范围,使损失函数等高线更均匀,显著加速梯度下降的收敛过程。

这些技术共同构成了高效实现多元线性回归的完整方案,能够有效处理现实世界中的复杂预测任务。

Abstract

一、多类特征

让我们来回顾一下

在这里插入图片描述
这是我们之前学习过的一个模型,在线性回归的原始版本中,我们只有一个特征x,即房子的大小来预测y,即房屋的价格,所以模型是:

在这里插入图片描述
但现在,如果我们不仅有房子的大小作为预测价格的特征,而且还直到卧室的数量,楼层的数量,房屋的年龄,我们应该怎么样去预测房屋呢?为了引用一些新的符号,我们将使用x1、x2、x3、x4来表示四个特征,如下图所示。

在这里插入图片描述

需要说明的是,当使用x1时,在图中表示引用第一列的所有元素,当我们使用x1时,在图中表示为第一行的所有元素,如果我们使用在这里插入图片描述的时候,则是代表第一行第一列的元素,即2104,当我们使用在这里插入图片描述,则表示在这里插入图片描述

之前我们讨论的是只有一个特征的情况,即:

在这里插入图片描述
现在我们讨论的是有四个特征的情况,即:

在这里插入图片描述
让我们给w们和b一些具体的值,假设是这样:

在这里插入图片描述
其中,b=80则是将房屋的基础价格设置为80,000美元,即没有卧室、没有年龄、没有大小、没有楼层;w1=0.1可以理解为每增加一平方英尺,价格就上升100美元;w2=4则是每当增加一个卧室,房屋价格就上升4,000美元,w3=10则是每当增加一个楼层,房屋价格就上升10,000美元,w4= -2则是,每当房屋的年龄增加一年,房屋价格就减少2,000美元。

我们再推广到N个特征的情况,公式即为:

在这里插入图片描述
还记得我们在上面说到的向量么,该公式可以这么看:

在这里插入图片描述
则
在这里插入图片描述
这种具有多个输入特征的线性回归称为多元线性回归

二、向量化

使用向量化不仅会让我们的代码更简洁,还会让它运行的更加高效,学习如何编写向量化代码还可以让我们利用数值线性代数,事实证明,当我们用向量编写代码时,可以帮助我们高效地运行代码

让我们来看一个例子

这是一个带有w和b的例子,其中w是一个包含三个数字的向量,同样,我们还有一个同样包含三个数字的特征向量x,请注意,在线性代数的索引和计数是从1开始的,所以第一个值的下标是w1,w2,但在Python中,我们把这些值归为数组,在数组中,我们的计数是从0开始的。

在这里插入图片描述
由上图可知,我们在这里使用了一个在Python中叫NumPy的数值线性代数库,这是Python和机器学习中最应用广泛的数值线性代数库

现在让我们来看一下一个没有向量化的模型预测实现
在这里插入图片描述
在代码中,它看起来像这样
在这里插入图片描述
我们将每个w和它对应的特征值相乘,当特征值和w个数少的时候,看起来是没有问题,但如果特征值和w有成百上千个呢?这样编写代码对于计算机来说,是很低效的

让我们来看数学上的表达,我们可以使用求和的符号来将wj和和xj的乘积相加j从1到n,最后加上b.
在这里插入图片描述
从程序上来看的话是这样的:
在这里插入图片描述
本质上是一个循环,在反复的进行相同的运算,最后的结果再加上b,range函数里的参数(0,n)表示j从0开始,一直做到j = n-1,也就是我们常说的左闭右开,不包括n本身

让我们来看向量化的表达,
在这里插入图片描述
从程序上来看的话:
在这里插入图片描述

dot(w,x)则是表明向量w和向量x的点积,最后在末尾加上一个b,这比前面两个方法的代码运行的都更块。

需要强调的是,向量化实际上有两个不同的好处,首先它的代码更加简洁,一行代码就可以实现前面几行代码所能实现的工作,其次,它运行的时间比前面两个方法都快得多,原因是numpy的dot函数能够利用你电脑中的并行硬件,无论你在电脑上运行,还是在使用GPU,一种常用于加速机器学习任务的图形处理单元,dot函数利用并行硬件的能力比for循环或我们之前看到的顺序计算更高效,现在,当n很大的时候,这个向量化版本更加实用,因为我不需要输入w0乘以x0再加上w1乘以x1这样额外的项

1、向量化的幕后工作

在这里插入图片描述
像这样的for循环在没有向量化的情况下运行,这15段代码会一个接一个地执行操作,在第一个时间里,它首先对索引0的值进行操作,它计算与索引值1对应的值,以此类推,直到第15步。

1.1、无向量化

在这里插入图片描述

1.2、向量化

在这里插入图片描述
相比之下NumPy中的这个函数是在计算机硬件中通过向量化实现的,因此计算机可获取w和x的所有值,它同时并行的为每对w和x值向乘,然后计算机将16个数字取出,并使用专用硬件将它们全部相加,非常快速地完成,因为硬件的处理速度是很快的,不需要一个数一个数的相加处理,这意味着带有向量的代码可以在更短的时间里完成计算,而没有向量化的代码则需要更长的时间,当你在大型数据集上运行学习算法或尝试训练大模型时,这一点即为重要,这就是为什么编写向量化的程序能让算法更加快速地处理数据

现在,让我们来看一个具体的例子,看看这如何实现多元线性回归。
假设你有一个包含16个特征和16个参数w1到w16的问题,外加参数b,我们为这16个权重计算了16个导数项,在这个例子里,我们将忽略参数b。

在这里插入图片描述

我们看没有向量化的情况。

在这里插入图片描述

我们逐一算出w1、w2到w16,我们使用的是循环计算

下面是向量化

在这里插入图片描述

它将向量w中所有的16个值并行减去0.1乘以向量d中的所有16个值 并将所有16个计算结果同时分配回w并且只需要一步,w和d使用并行硬件来高效地执行所有16次计算,因此使用向量化实现,我们应该会得到一个更加高效的线性回归实现,如果你有16个特征,差异不会很大,但如果我们有成千上万个特征,可能还有非常大的训练集,这种向量化实现对你的学习算法的运行时间产生巨大影响,我们想一想,一个程序几分钟完成和几小时完成,我肯定乐意选择前者。

三、多元线性回归的梯度下降算法

现在我们已经了解了梯度下降、多元线性回归、向量化,让我们把这些结合起来,用向量化实现多元线性回归的梯度下降

让我们来回顾一下只有一个特征时进行梯度下降时的情况

在这里插入图片描述

我们有一个w的更新规则和一个b的单独更新规则,我们只有一个特征,我们称为那个特征为xi没有任何下标。

现在这是当我们有n个特征时的新符号,其中n是2或者更多
在这里插入图片描述
这样我们就得到了多元回归的梯度下降。

这里再插入一个关于寻找线性回归的w和b的替代方法的简短旁注,这个方法叫做正规方程,虽然梯度下降是是一个很好的方法来最小化成本函数j以找到w和b,但还有一种其他算法仅适用于线性回归,而几乎不适用于你在这个专业中看到的其他算法用于求解w和b,这种其他算法不需要迭代的梯度下降算法称为正规方程方法。

事实证明可以使用高级线性代数库来一次性求解w和b而无需迭代,正规方程的一些缺点是,这不能推广到其他学习算法,例如你将学习的逻辑回归算法,如果特征数量n很大,正规方程也相当慢,几乎没有机器学习从业者自己实现正规方程方法,但如果你使用成熟的机器学习库并调用线性回归,将会很快的解决问题。

四、特征缩放

让我们来看看一些让梯度下降更有效得技术,在本视频中,您将看到一种称为特征缩放得技术,它可以使梯度下降运行得更快。

首先 我们来看一下特征的大小与其相关参数大小之间的关系,也就是说,该特征的数值有多大以及其相关参数的大小,我们用两个特征来预测房价,x1为房屋的大小,x2是卧室的数量,假设x1通常在300到2000之间变化,而x2的范围是0到5间卧室,x1的取值范围是很大的,而x2的取值范围是很小的。

现在我们来看一个房子的例子 其大小为2000平方英尺,有5间卧室,价格500k美元,对于这个训练样本,你觉得参数w1和w2的合理取值是多少?

在这里插入图片描述

那么让我们看看一组可能的参数,假设w1是50 w2是0.1,b是50 ,根据上面的公式,这个价格估计为100,050.5k美元。

在这里插入图片描述

显然这与实际价格500,000美元相差甚远,因此,这不是一个很好的w1和w2参数选择,现在让我们来看另外一组数据,假设w1和w2反过来,w1是0.1,w2是50,b依然是50,在这种w1和w2的选择中,w1相对较小,w2相对较大,w2=50远大于0.1,所以这里预测的价格正好为500k美元。

在这里插入图片描述
这是一个很好的结果,并且恰好与房屋的真实价格相同,我们注意到,当一个特征值可能取值的范围很大时(比如x1=300~2000),一个好模型可能选择一个较小的参数值(比如w1=0.1)
,同理,当一个特征的可能取值较小时(比如x2=0~5),那么参数的合理值会相对较大(比如w2=50).

那么,这与梯度下降有什么关系呢,让我们来看一下特征的散点图。

在这里插入图片描述
由上图可知,横轴的尺度或取值范围比纵轴大得多,接下来,我们来看一下在等高线图中成本函数可能是什么样的。

在这里插入图片描述

从上图的等高线图可以看出,其中的横轴的范围要窄很多,而纵轴则取更大范围的值,所以等高线呈椭圆形,这是因为w1的一个很小的变化将对整个估计价格有很大的变化,从而对成本函数j产生很大的影响,相比之下需要对w2进行更大的变化才能对预测产生较大的影响,因此w2的微笑变化对成本函数影响不大。

这就是如果你运行梯度下降可能会发生的情况,如果你直接使用训练数据,因为等高线又高又瘦,梯度下降可能会来回反弹很长时间,才能最终找到全局。

在这里插入图片描述
一个有用的方法是对特征进行放缩,这意味着对你的训练数据进行某种转换,使得x1在0-1之间,而x2也在0-1之间,所以数据点看起来更像这样

在这里插入图片描述

我们可能会注意到,底部图的比例现在与顶部的图有很大的不同,关键是重新缩放后的x1和x2现在都在相似的范围内取值,如果我们在这个重新缩放的x1和x2上使用转换后的数据运行梯度下降算法,那么等高线将看起来是这样

在这里插入图片描述

更像是一个圆形,而不是又瘦又高的形状,梯度下降可以找到一个条更加直接的路径达到全局最小值

在这里插入图片描述

总结一下,当你有不同的特征取值范围差异很大时,这可能导致梯度下降运行缓慢,但是重新缩放不同的特征,使它们都在相似的范围内取值,可以加快梯度下降的速度

1、如何实现特征缩放

1.1、最大值归一

让我们来看看如何实现特征缩放,以处理取值范围非常不同的特征,并且将它们放缩到具有可比的取值范围

在这里插入图片描述
由上图可知,如果x1的范围是从300到2000,一种获取x1缩放版本的方法是将每个原始x1值除以2000范围的最大值,因此缩放后的x1将在0.15到1之间,同理,由于x2的范围是从0到5,我们可以将每个原始x2除以5来计算x2的缩放版本,因此缩放后的x2的范围是从0到1,所以,如果我们在图上绘制缩放后的x1和x2,就像下图这样。

在这里插入图片描述

1.2、均值归一化

除了最大值以外,我们还能用到所谓的均值归一化,从原始特征开始,然后重新缩放它们,使它们都围绕0居中,所以缩放之前,它们只有大于0的值,现在它们都有正负值,但通常在负1到正1之间。

在这里插入图片描述

所以要计算x1的均值归一化,首先找到平均值,也就是训练集上x1的均值,我们称为这个均值为μ1,例如我们发现特征x1的平均值为600,我们每取个x1,就减去均值μ1,然后我们除以范围的差值,如果这样做,我们会得到归一化后的x1范围为-0.18到0.82,同理,我们对x2进行归一化,例如μ2可能是2.3,然后我们取每个x2,减去μ2并除以5减去0,均值归一化后的x2的范围是-0.46到0.54

在这里插入图片描述

1.3、Z-score 归一化

还有一种常见的重新缩放方法叫做Z-score归一化,想要实现这个,我们需要计算每个特征的标准差和均值μ,我们通常由σ表示每个特征的标准差,例如特征1的标准差可能是450均值是600,那么要对x1进行Z-score归一化,取每个x1减去μ1,然后除以标准差σ1,发现Z-score归一化后的x1的范围为-0.67到3.1,类似的,如果计算第二个特征的标准差为1.4,均值为2.3,我们计算归一后的x2的范围为-1.6到1.9.

在这里插入图片描述

然后我们在图上绘制归一化后的x1和x2的训练数据,可能看起来是这样的

在这里插入图片描述

作为经验法则,当进行特征缩放时,我们可能希望让特征的范围在-1到1之间,对于每个特征x,但这些-1和1之间的范围可以稍微宽松一点,所以如果x在-3到3之间或者-0.3到0.3之间,这些都是完全可以的

在这里插入图片描述

如果x在0到3之间,这是完全ok的
如果x在-2到0.5之间的,这是完全ok的
如果x在-100到100之间的,对于我们的要求,这过于大了,所以这个需要重新放缩
如果x在-0.001到0.001之间的,对我们的要求,这过于小了,所以这个需要重新放缩
如果x在98.6到105之间的,对于我们的要求,这过于大了,所以这个需要重新放缩

进行特征放缩几乎没有任何坏处,这就是特征放缩,通常能让梯度下降运行的更快

总结

多元线性回归通过整合多个特征来预测目标变量,其核心模型为线性加权组合。为实现高效计算,采用向量化技术利用硬件并行能力加速运算。梯度下降算法用于优化模型参数,而特征缩放技术通过规范化特征取值范围显著提升收敛效率。这些方法共同构成了处理多维数据的完整机器学习流程,平衡了模型表达能力和计算性能。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐