网站首页 > 技术文章 正文
在所有监督学习问题中,线性回归是一种最简单的建模手段。给定一个数据点集合作为训练集,线性回归的目标是找到一个与这些数据最为吻合的线性函数。对于2D数据,这样的函数对应一条直线。
上图展示了一个2D情形下的线性回归模型。图中的点代表训练数据,而直线代表模型的推断结果。
下面运用少量数学公式解释线性回归模型的基本原理。线性函数的一般表达式为:
其矩阵(或张量)形式为:
- Y为待预测的值。
- x1 ,x2 ,…,xk 是一组独立的预测变量;在使用模型对新样本进行预测时,需要提供这些值。若采用矩阵形式,可一次性提供多个样本,其中每行对应一个样本。
- w1 ,w2 ,…,wk 为模型从训练数据中学习到的参数,或赋予每个变量的“权值”。
- b也是一个学习到的参数,这个线性函数中的常量也称为模型的偏置(bias)。
下面用代码来表示这种模型。这里没有使用权值的转置,而是将它们定义为单个列向量:
接下来需要定义如何计算损失。对于这种简单的模型,将采用总平方误差,即模型对每个训练样本的预测值与期望输出之差的平方的总和。
从代数角度看,这个损失函数实际上是预测的输出向量与期望向量之间 欧式 距离的平方。对于2D数据集,总平方误差对应于每个数据点在垂直方向上到所预测的回归直线的距离的平方总和。
这种损失函数也称为L2范数或L2损失函数。这里之所以采用平方,是为了避免计算平方根,因为对于最小化损失这个目标,有无平方根并无本质区别,但有平方可以节省一定的计算量。
我们需要遍历i来求和,其中i为数据样本的索引。该函数的实现如下:
接下来便可用数据训练模型。例如,将准备使用一个将年龄、体重(单位:千克)与血液脂肪含量关联的数据集。
由于这个数据集规模很小,下面直接将其嵌入在代码中。下一节将演示如何像实际应用场景中那样从文件中读取训练数据。
下面是定义模型的训练运算。我们将采用梯度下降算法对模型参数进行优化(下一节将介绍该算法)。
运行上述代码时,将看到损失函数的值随训练步数的增加呈现逐渐减小的趋势。
模型训练完毕后,便需要对其进行评估。下面计算一个年龄25岁、体重80千克的人的血液脂肪含量,这个数据并未在训练集中出现过,但可将预测结果与同年龄的、体重65千克的人进行比较:
作为一种快速评估方法,可验证该模型学习到了血液脂肪含量随体重下降的衰减情况,且输出值介于原始数据训练值的边界之间。
参考资料:
面向机器智能的TensorFlow实践
TensorFlow for Machine Intelligence
(美)山姆·亚伯拉罕(Sam Abrahams)
猜你喜欢
- 2025-03-29 Python + Pytest 测试框架——数据驱动
- 2025-03-29 Python实现基于地图四色原理的遗传算法(GA)自动着色
- 2025-03-29 python之图像仿射变换分析:原理+图像平移
- 2025-03-29 LightGBM算法解释及举例python(lbg算法例题)
- 2025-03-29 K-Means算法原理及其python实现(学习笔记)
- 2025-03-29 Python虚拟机运行原理及加载流程(虚拟机配置python环境)
- 2025-03-29 原理+代码|Python实战多元线性回归模型
- 2025-03-29 Python内置装饰器:深入理解其原理和应用
- 2025-03-29 Python网络爬虫原理解构,原来如此简单!
- 2025-03-29 Python常用算法学习(4) 数据结构(原理+代码)-最全总结
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)