低门槛实战线性回归模型

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 本文是学习线性回归模型的总结,以图文相结合的方式,分享线性回归模型的技术原理,以及用代码实现验证,供大家参考。

本文是学习线性回归模型的总结,主要分享线性回归模型的技术原理,以及用代码实现验证,供大家参考。

一、任务描述

假设手上有一份数据集,每一行数据表示一个物品的价格影响因素(k个)和对应价格。

序号

影响因素1

影响因素2

影响因素k

价格(y)

1

1.23

3.23

1.56

7.23

2

0.23

1.60

2.56

8.33

...

...

...

...

...

1000

xx

xx

xx

xx

现在获得了该物品的k个影响因素,要求根据k个影响因素求取该物品的价格。

二、任务分析

1、目标

image.png

那么我们的任务就是寻找一组参数W和b,使得根据线性回归模型做出的价格预测尽可能接近数据里的真实价格。

2、评估

如何评估找到的一组参数W和b,就是使得根据线性回归模型做出的价格预测尽可能接近数据里的真实价格。

在深度学习中,损失函数(loss function)能够量化目标的实际值与预测值之间的差距。回归问题中最常用的损失函数是平方误差函数,那么第i个样本的损失为:

image.png

因此,在训练模型时,我们希望寻找一组参数(W,b),使得L(Wb在所有训练样本上的损失均值越小越好。

3、求解

在深度学习中,求解参数(W,b),一般用梯度下降法。梯度下降算法的步骤如下:

(1)初始化模型参数的值;(2)从数据集中随机抽取小批量样本且在负梯度的方向上更新参数,并不断迭代这一步骤,直到迭代次数达到设定阈值或损失小于某个阈值。

W和b的更新表达式如下:

image.png

批量大小和学习率的值通常是预先指定,而不是通过模型训练得到的这些可以调整但不在训练过程中更新的参数称为超参数(hyperparameter),所谓的调参就是选择超参数的过程。

三、代码验证

整个代码验证过程包括如下主要流程:

image.png

1、获取训练数据

为验证线性回归模型,我们定义一个线性函数,生成一个数据集。

image.png

为从n个样本数据中抽取小批量数据,定义个批量数据迭代器

image.png

2、定义模型

image.png

根据上述表达式定义线性回归模型。

image.png

3、定义损失函数

image.png

根据上述表达式定义损失函数。

image.png

4、定义优化算法

image.png

根据上述表达式定义优化算法。

image.png

5、初始化训练参数

首先初始化模型参数。

image.png

6、训练

image.png

训练结束后,可以查看W和b的参数,以及与真实值W和b的差异

image.png

运行结果

image.png

参考资料

1、《动手学深度学习》第二版,地址: zh.d2l.ai/index.html

目录
相关文章
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
642 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
机器学习/深度学习 并行计算 算法
探索AMD实例的有趣应用场景及潜力发挥
众所周知,AMD实例以其卓越的性能和能效而受到广泛关注。除了在游戏服务器领域的应用外,AMD实例还具备许多有趣的应用场景。那么在本期话题中,我们将一起探讨AMD实例的实际使用场景,同时也发掘一下AMD在其他有趣领域的潜力。
598 1
探索AMD实例的有趣应用场景及潜力发挥
|
Ubuntu Linux
俄罗斯方块的变种——Bastet在Linux上的游戏体验
Bastet是一款受欢迎的俄罗斯方块变种游戏,它在Linux系统上以其高难度和令人上瘾的游戏性而备受欢迎。本文将介绍如何在Linux上安装、运行和玩Bastet,以及一些提高你游戏技巧的窍门。
950 0
|
前端开发 开发者
Jetpack MVVM 常见错误用法(一) 拿Fragment当LifecycleOwner
Jetpack 的 MVVM 本身没有错,错在开发者的某些使用不当。本系列将分享那些 AAC 中常见的错误用法,指导大家打造更健康的应用架构
717 0
|
安全 Java Android开发
Eclipse Paho MQTT客户端Java源码分析
Eclipse Paho MQTT客户端Java源码分析
707 0
Eclipse Paho MQTT客户端Java源码分析
|
自然语言处理 编译器 Linux
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
821 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
|
存储 索引
顺序表和链表的优缺点总结
顺序表和链表的优缺点总结
1633 0
IDEA入门到精通系列(三)
IDEA入门到精通系列(三)
598 0
IDEA入门到精通系列(三)
|
uml
IntelliJ IDEA - 提取参数对象重构
IntelliJ IDEA - 提取参数对象重构
714 0
IntelliJ IDEA - 提取参数对象重构

热门文章

最新文章

下一篇
oss云网关配置