机器学习 | 回归算法原理——多重回归

Hi,大家好,我是半亩花海。接着上次的多项式回归继续更新《白话机器学习的数学》这本书的学习笔记,在此分享多重回归这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,欢迎大家交流学习!

目录

一、多重回归概述

二、案例分析

1. 设置问题

2. 定义模型

3. 多重回归


一、多重回归概述

多重线性回归模型即描述一个因变量 Y 如何随多个自变量 X 的改变而改变。假定对 n 例观察对象逐一测定了因变量 Y 与 m 个自变量 X_1, X_2, \ldots, X_m 的数值,多重线性回归模型的一般形式为:

Y=\beta_0+\beta_1 X_1+\beta_2 X_2+\cdots+\beta_m X_m+e

式中,\beta_0 为常数项,又称截距。\beta_1, \beta_2, \ldots, \beta_m 称为偏回归系数,或简称回归系数。e 则是去除 m 个自变量对 Y 的影响后的随机误差,即残差。


二、案例分析

1. 设置问题

之前我们是根据广告费来预测点击量的,但实际中要解决的很多问题是变量超过2个的复杂问题。对于上一节的“多项式回归”问题,里面确实会涉及不同次数的项,但是使用的因变量依然只有广告费一项。比如,决定点击量的除了广告费之外,还有广告的展示位置广告版面的大小等多个要素。

2. 定义模型

为了让问题尽可能地简单,这次我们只考虑广告版面的大小,设 广告费为 x_1、广告栏的宽为 x_2、广告栏的高为 x_3,那么 f_\theta 可以表示如下:

f_\theta\left(x_1, x_2, x_3\right)=\theta_0+\theta_1 x_1+\theta_2 x_2+\theta_3 x_3

接下来,思路和之前相同,分别求目标函数对 \theta_0, · · · , \theta_3偏微分,然后更新参数即可。但在实际去求偏微分之前,我们可以先试着简化表达式的写法。

刚才我们说有 x_1, x_2, x_3 共 3 个变量,下面我们把它推广到有 n 个变量的情况。这时候 f_\theta 会变成什么样子呢?

f_\theta\left(x_1, \cdots, x_n\right)=\theta_0+\theta_1 x_1+\cdots+\theta_n x_n

不过每次都像这样写 nx 会比较麻烦,所以我们还可以把参数 \theta 和变量 x 看作向量

为了确保参数 \theta 和变量 x 的维度相同,我们可以在变量 x 的向量一开始加上1,如此会显得更自然。

\boldsymbol{\theta}=\left[\begin{array}{c} \theta_0 \\ \theta_1 \\ \theta_2 \\ \vdots \\ \theta_n \end{array}\right] \quad \boldsymbol{x}=\left[\begin{array}{c} 1 \\ x_1 \\ x_2 \\ \vdots \\ x_n \end{array}\right]

\theta 的下标是从 0 开始的,为了与其相配合,设 x_0 = 1,让 x 的第一个元素为 x_0 会更加整齐。

\boldsymbol{\theta}=\left[\begin{array}{c} \theta_0 \\ \theta_1 \\ \theta_2 \\ \vdots \\ \theta_n \end{array}\right] \quad \boldsymbol{x}=\left[\begin{array}{c} x_0 \\ x_1 \\ x_2 \\ \vdots \\ x_n \end{array}\right] \quad\left(x_0=1\right)

\theta 转置后计算它与 x 相乘的结果,即计算 \boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x} (运用线性代数的知识将二者相应的元素相乘,然后全部加起来),结果如下,最终发现和上述的 f_\theta\left(x_1, \cdots, x_n\right) 的表达式结果一致。

\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}=\theta_0 x_0+\theta_1 x_1+\theta_2 x_2+\cdots+\theta_n x_n

换句话说,之前用多项式表示的 f_\theta,可以像下面这样用向量来表示。虽然我们说的是向量,但实际在编程时只需用普通的一维数组就可以了。

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}

3. 多重回归

接下来我们就使用 f_\theta(x) 来求参数更新表达式吧,方法与之前一样:

设 u=E(\boldsymbol{\theta})v=f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的部分是一样的。为了一般化,我们可以考虑对第 j 个元素 \theta_j 偏微分的表达式,如下所示。

uv 微分的部分是一样的,详情移步上一节《机器学习 | 回归算法原理——最速下降法(梯度下降法)-CSDN博客》,即对 \frac{\partial u}{\partial v}=\frac{\partial}{\partial v}\left(\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-v\right)^2\right) 这一部分的微分,所以接下来只需要求 v\theta_j 的微分即可。

\begin{aligned} \frac{\partial v}{\partial \theta_j} & =\frac{\partial}{\partial \theta_j}\left(\boldsymbol{\theta}^{\mathrm{T}} \boldsymbol{x}\right) \\ & =\frac{\partial}{\partial \theta_j}\left(\theta_0 x_0+\theta_1 x_1+\cdots+\theta_n x_n\right) \\ & =x_j \end{aligned}

那么第 j 个参数的更新表达式如下:

\theta_j:=\theta_j-\eta \sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}

我们之前还给每个 \theta 都写了更新表达式,现在它们可以汇总为一个表达式,像这样包含了多个变量的回归称为多重回归。如此看来,可以基于一般化的思路来思考问题正是数学的优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Air780EP模块 LuatOS开发-MQTT接入阿里云应用指南

简介 本文简单讲述了利用LuatOS-Air进行二次开发,采用一型一密、一机一密两种方式认证方式连接阿里云。整体结构如图 关联文档和使用工具:LuatOS库阿里云平台 准备工作 Air780EP_全IO开发板一套,包括天线SIM卡,USB线 PC电脑&…

产品经理-​统计数据是如何产生的(20)

在互联网当中,监测一个项目的实际情况,在产品当中,往往需要进行数据的监测,看用户的习惯,进而进行对产品进行优化,比如统计产品用户的一些行为,鼠标点击,鼠标hover,停留时长,进入,进出等 产品经理看到的数据统计一般是经历了下面几个阶段 数据埋点:这个阶段产品经理…

RK3568笔记四十三:MPU6050驱动开发(硬件I2C_3)

若该文为原创文章,转载请注明原文出处。 正点原子提供的I2C有测试ap3216c,SH3001等传感器,根据手册操作可以实现效果。 这里记录使用I2C3驱动MPU6050. 记录原因是前面有模拟I2C,但硬件如何使用,有点不是很清楚&#…

猫头虎分享:GPT-4o Mini VS GPT-3.5 Turbo 新旧对决,谁能拔得头筹?

GPT-4o Mini VS GPT-3.5 Turbo 🌟 新旧对决,谁能拔得头筹? 我们正在进入廉价语言模型的新时代 🚀 阅读时间:6分钟 摘要: 尽管 GPT-4o 功能强大,但我并不经常使用它。如果我正在寻找一个用于复…

【Hec-Ras】案例1:韩国Seung-gi stream稳定流/非稳定流模拟

Hec-Ras案例1:韩国Seung-gi stream 研究区域:Seung-gi stream(韩国)研究数据降水数据(Rainfall data) 步骤1:创建工程文件/打开已有工程文件步骤2:参数调整步骤2.1:数据导…

mysql 数据库空间统计sql

mysql 数据库空间统计 文章目录 mysql 数据库空间统计说明一、数据库存储代码二、查询某个数据库的所有表的 代码总结 说明 INFORMATION_SCHEMA Table Reference 表参考 information_schema是‌MySQL中的一个特殊数据库,它存储了关于所有其他数据库的元数据信息。…

D4.前缀和、差分

前缀和 一维前缀和(区间) 这样的好处是,可以以O(1)的时间复杂度来计算。而不是遍历O(n)。当读入数据非常大(>1000000)的时候,建议使用scanf()来读取数据,会比cin >> 快很多。在全局开…

享元模式(结构型)

目录 一、前言 二、享元模式 三、总结 一、前言 享元模式(Flyweight Pattern)是一种结构型设计模式,用于减少大量细粒度对象的内存占用。它通过共享尽可能多的相同数据来节约内存空间。 享元模式由以下角色组成: Flyweight&…

「JavaEE」Spring MVC:基本操作1

🎇个人主页:Ice_Sugar_7 🎇所属专栏:JavaEE 🎇欢迎点赞收藏加关注哦! 简介 Spring Web MVC 是⼀个 Web 框架,简称为 Spring MVC MVC 是 Model View Controller 的缩写,它是软件工程…

vscode回退不显示了,不方便操作

一、后退前进按钮 顶部显示&#xff0c;方便调试 <—— ——> 文件-> 首选项 -> 设置->commandcenter->勾选 Window: Title Bar Style->custom 将native —>custom

力扣每日一题1186. 删除一次得到子数组最大和【动态规划】

本题的核心在于对于每个元素&#xff0c;我们分别考虑保留和删除两种状态&#xff0c;并根据前面的状态转移来更新当前状态。最后&#xff0c;遍历所有元素&#xff0c;找到最大和即可。 状态定义 dp[i][0] 表示以第 i 个元素结尾且未删除元素的子数组的最大和。dp[i][1] 表示…

Qemu virtio-blk 后端驱动开发 - PureFlash对接

本文以PureFlash为例&#xff0c;介绍了如何将一个新的存储类型对接到qemu虚拟化平台下&#xff0c;为虚机提供存储能力。 关于virtio-blk以及其工作原理这里就不介绍了&#xff0c;网上有很多分析的文章。总之就是如果我们想给虚机提供一种新的存储类型&#xff08;不同于标准…

【日常记录】【JS】对一个数组,按照某个字段的值,进行分组

文章目录 1. 前言2. lodash 的分组3. Object.groupBy()参考链接 1. 前言 在开发中&#xff0c;经常会遇到一组数据&#xff0c;要按照某个字段进行分组&#xff0c;这个时候会有很多种方法&#xff0c;可以使用 forEach、reduce、等其他方法 reduce 方法 function groupBy(arr…

LLama 405B 技术报告解读

LLama 405B 技术报告解读 果然传的消息都是真的&#xff0c;meta在24号凌晨发布了llama 3的405B版本&#xff0c;这次还是做一个技术报告解读。 值得一提的是&#xff0c;在技术报告的开头&#xff0c;meta特意强调了一个 Managing complexity&#xff0c;大意是管控复杂度。…

主题公园- 海豹主题式风格餐厅设计【AIGC应用】

业务背景&#xff1a;海洋馆针对细分客群增设一个打卡主题点位&#xff0c;以海豹主题式餐厅为打卡卖点&#xff0c;效果参见海豹主题式风格。 AIGC概念图制作平台&#xff1a;&#xff08;可灵&#xff09; https://klingai.kuaishou.com/ 关键词&#xff1a; 海豹主题餐厅…

Blender插入关键帧的位置报错

在操作过程中&#xff0c;有时候是误操作或者是做动画选择了活动插帧集&#xff0c;导致按i键插入关键帧一直报提示&#xff1a;插入关键帧的帧位置或者是其他的报错弹窗。 1、解决方法是&#xff1a;在时间线的抠像(插帧)选项里&#xff0c;将活动插帧集给清空 2、若是骨骼动画…

Ubuntu 修改源地址

注意事项&#xff1a;版本说明&#xff01;&#xff01;&#xff01; Ubuntu24.04的源地址配置文件发生改变。 不再使用以前的 sources.list 文件&#xff0c;该文件内容变成了一行注释&#xff1a; # Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources…

操作系统面试知识点总结2

#来自ウルトラマンメビウス&#xff08;梦比优斯&#xff09; 1 进程与线程 1.1 进程的概念和特征 更好地描述和控制程序并发执行&#xff0c;实现操作系统的并发性和共享性。 进程控制块&#xff08;PCB&#xff09;&#xff1a;更好的描述进程的基本情况和运行状态&#xff…

Eclipse 搭建 C/C++ 开发环境以及eclipse的使用

一、下载、安装 MinGW 1、下载: 下载地址&#xff1a;MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net 点击“Download Latest Version”即可 下载完成后&#xff0c;得到一个名为 mingw-get-setup.exe 的安装文件。双击运行&#xff0c;安装即可。 …

大数据、区块链与人工智能

大数据、区块链与人工智能&#xff1a;技术融合与未来展望 摘要 本文旨在探讨大数据、区块链和人工智能这三个技术领域的基本概念、发展历程、应用场景及其相互之间的融合。文章首先分别介绍这三个技术的定义和特点&#xff0c;然后分析它们在不同行业中的实际应用&#xff0…