返回介绍

4.3 线性回归

发布于 2024-02-05 23:12:36 字数 2580 浏览 0 评论 0 收藏 0

在有监督学习问题中,线性回归是一种最简单的建模手段。给定一个数据点集合作为训练集,线性回归的目标是找到一个与这些数据最为吻合的线性函数。对于2D数据,这样的函数对应一条直线。

上图展示了一个2D情形下的线性回归模型。图中的点代表训练数据,而直线代表模型的推断结果。

下面运用少量数学公式解释线性回归模型的基本原理。线性函数的一般表达式为:

其矩阵(或张量)形式为:

Y为待预测的值。

x1,x2,…,xk是一组独立的预测变量;在使用模型对新样本进行预测时,需要提供这些值。若采用矩阵形式,可一次性提供多个样本,其中每行对应一个样本。

w1,w2,…,wk为模型从训练数据中学习到的参数,或赋予每个变量的“权值”。

b也是一个学习到的参数,这个线性函数中的常量也称为模型的偏置(bias)。

下面用代码来表示这种模型。这里没有使用权值的转置,而是将它们定义为单个列向量:

接下来需要定义如何计算损失。对于这种简单的模型,将采用总平方误差,即模型对每个训练样本的预测值与期望输出之差的平方的总和。从代数角度看,这个损失函数实际上是预测的输出向量与期望向量之间欧氏距离的平方。对于2D数据集,总平方误差对应于每个数据点在垂直方向上到所预测的回归直线的距离的平方总和。这种损失函数也称为L2范数或L2损失函数。这里之所以采用平方,是为了避免计算平方根,因为对于最小化损失这个目标,有无平方并无本质区别,但有平方可以节省一定的计算量。

我们需要遍历i来求和,其中i为数据样本的索引。该函数的实现如下:

接下来便可用数据实际训练模型。例如,将准备使用一个将年龄、体重(单位:千克)与血液脂肪含量关联的数据集(http://people.sc.fsu.edu/~jburkardt/datasets/regression/x09.txt)。

由于这个数据集规模很小,下面直接将其嵌入在代码中。下一节将演示如何像实际应用场景中那样从文件中读取训练数据。

下面定义模型的训练运算。我们将采用梯度下降算法对模型参数进行优化(下一节将介绍该算法)。

运行上述代码时,将看到损失函数的值随训练步数的增加呈现逐渐减小的趋势。

模型训练完毕后,便需要对其进行评估。下面计算一个年龄25岁、体重80千克的人的血液脂肪含量,这个数据并未在训练集中出现过,但可将预测结果与同年龄的、体重65千克的人进行比较:

作为一种快速评估方法,可验证该模型学习到了血液脂肪含量随体重下降的衰减情况,且输出值介于原始数据训练值的边界之间。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文