线性回归损失函数的推导

ops/2024/10/15 22:07:24/

要推导损失函数公式 ℓ ( θ ) = 1 2 n ( y ^ − y ) ⊤ ( y ^ − y ) \ell(\boldsymbol{\theta}) = \frac{1}{2n}(\hat{\boldsymbol{y}} - \boldsymbol{y})^\top(\hat{\boldsymbol{y}} - \boldsymbol{y}) (θ)=2n1(y^y)(y^y),我们可以从几个基础概念开始。

1. 基本概念

  • 预测值 y ^ \hat{\boldsymbol{y}} y^:由模型(例如线性回归模型)输出的预测结果。
  • 真实值 y \boldsymbol{y} y:数据集中真实的目标变量值。
  • 损失函数:衡量预测值与真实值之间差距的函数,用于评估模型的性能。

2. 欧几里得距离的平方

损失函数通常使用欧几里得距离来度量预测值与真实值之间的差异。欧几里得距离是两点之间的距离,可以用平方差表示。具体来说,对于所有的样本 (i)(1 到 (n)),我们有:

d i = y ^ i − y i d_i = \hat{y}_i - y_i di=y^iyi

平方差为:

d i 2 = ( y ^ i − y i ) 2 d_i^2 = (\hat{y}_i - y_i)^2 di2=(y^iyi)2

3. 总损失的计算

对于 (n) 个样本,整体的损失可以表示为所有样本的平方差之和,并取平均值:

ℓ ( θ ) = 1 n ∑ i = 1 n ( y ^ i − y i ) 2 \ell(\boldsymbol{\theta}) = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2 (θ)=n1i=1n(y^iyi)2

4. 矩阵表示

我们可以将上面的公式用向量和矩阵的形式表达。设:

  • y ^ = [ y ^ 1 , y ^ 2 , … , y ^ n ] ⊤ \hat{\boldsymbol{y}} = [\hat{y}_1, \hat{y}_2, \ldots, \hat{y}_n]^\top y^=[y^1,y^2,,y^n]为预测值的列向量。
  • y = [ y 1 , y 2 , … , y n ] ⊤ \boldsymbol{y} = [y_1, y_2, \ldots, y_n]^\top y=[y1,y2,,yn]为真实值的列向量。

则预测值与真实值之间的差异 y ^ − y \hat{\boldsymbol{y}} - \boldsymbol{y} y^y也可以用向量表示:

y ^ − y \hat{\boldsymbol{y}} - \boldsymbol{y} y^y
接下来,整体损失可以重新表示为:

ℓ ( θ ) = 1 n ( y ^ − y ) ⊤ ( y ^ − y ) \ell(\boldsymbol{\theta}) = \frac{1}{n} \left(\hat{\boldsymbol{y}} - \boldsymbol{y}\right)^\top \left(\hat{\boldsymbol{y}} - \boldsymbol{y}\right) (θ)=n1(y^y)(y^y)

5. 引入 1 2 \frac{1}{2} 21

为了使梯度更新计算更简便,损失函数常常会乘以 1 2 \frac{1}{2} 21,这样在计算梯度时,平方根被消除。这导致我们的损失函数变为:

ℓ ( θ ) = 1 2 n ( y ^ − y ) ⊤ ( y ^ − y ) \ell(\boldsymbol{\theta}) = \frac{1}{2n} \left(\hat{\boldsymbol{y}} - \boldsymbol{y}\right)^\top \left(\hat{\boldsymbol{y}} - \boldsymbol{y}\right) (θ)=2n1(y^y)(y^y)

6. 最终损失函数

最终,我们得到的损失函数为:

ℓ ( θ ) = 1 2 n ( y ^ − y ) ⊤ ( y ^ − y ) \ell(\boldsymbol{\theta}) = \frac{1}{2n}(\hat{\boldsymbol{y}} - \boldsymbol{y})^\top(\hat{\boldsymbol{y}} - \boldsymbol{y}) (θ)=2n1(y^y)(y^y)

总结

此损失函数是均方误差损失的一种形式,广泛应用于线性回归等模型中。通过这种方式,我们既可以有效地表示损失,也可以在模型优化时更容易计算梯度。


http://www.ppmy.cn/ops/126130.html

相关文章

安装R和RStudio:开始你的数据分析之旅

数据分析是当今世界中一个非常热门的领域,而R语言是进行数据分析的强大工具之一。R是一种编程语言和软件环境,用于统计计算和图形表示。RStudio是一个集成开发环境(IDE),它为R语言提供了一个更加友好和高效的工作环境。…

Python | Leetcode Python题解之第474题一和零

题目: 题解: class Solution:def findMaxForm(self, strs: List[str], m: int, n: int) -> int:count10 []for s in strs:count10.append([0,0])for c in s:if c 0: count10[-1][0]1else: count10[-1][1]1dp [[0]*(n1) for _ in range(m1)]for i …

Go 语言中的格式化占位符

在 Go 语言中,fmt 包提供了大量的格式化占位符,用于格式化输出不同类型的数据。选择合适的占位符,可以确保输出的内容格式正确、清晰易懂。 常见的占位符: 基本类型 %v:按值的默认格式输出。适用于任何类型。%v&…

vue3.0 + vite:中使用 sass

1、安装依赖 npm i sass sass-loader --save-dev 在项目的src/assets文件夹下新建style/index.scss 文件 2、在 vite.config.ts 中加: resolve: {alias: {: fileURLToPath(new URL(./src, import.meta.url))} }, css: {// 配置 SCSS 支持preprocessorOptions: {s…

Codeforces Round 946 (Div. 3) F题 Cutting Game(双指针,模拟)

题目链接 Codeforces Round 946 (Div. 3) F题 Cutting Game 思路 维护两个数组,一个按照 x x x坐标排序,一个按照 y y y坐标排序。 使用双指针,维护两个数组剩下的点的头和尾。 最后直接模拟即可。 代码 #pragma GCC optimize("O…

全流程信息收集方法总结

信息收集 信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进行。最简单的比如说目标站点的IP、中间件、脚本语言、端口、邮箱等等。我觉得信息收集在我们渗透测试的过程当中,是最重要的一环,这一环节没做好&#…

kimi帮我解决ubuntu下软链接文件夹权限不够的问题

我的操作如下 ubuntuubuntu-QiTianM420-N000:~$ ln -s /media/ubuntu/4701aea3-f883-40a9-b12f-61e832117414 code ubuntuubuntu-QiTianM420-N000:~$ ls -l 总用量 636 drwxrwxr-x 2 ubuntu ubuntu 4096 5月 7 17:16 bin drwxrwxrwx 2 ubuntu ubuntu 4096 5月 8 13…

Unity3D游戏的内存控制详解

前言 Unity3D是一款流行的游戏引擎,支持多种平台,包括PC、移动设备和VR等。随着游戏的复杂性不断提高,Unity3D的内存管理变得尤为重要。本文将详细介绍Unity3D游戏中的内存控制技术,包括自动内存管理、对象池、延迟加载资源和手动…