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

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 都写了更新表达式,现在它们可以汇总为一个表达式,像这样包含了多个变量的回归称为多重回归。如此看来,可以基于一般化的思路来思考问题正是数学的优点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Django】anaconda环境变量配置及配置python虚拟环境

文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…

【数据结构】搜索二叉树

二叉搜索树 二叉树的博客 在之前的数据结构的文章中已经基本对二叉树有一定的了解,二叉搜索树也是一种数据结构,下面将对二叉搜索树进行讲解。 二叉搜索树的概念 二叉搜索树又称为二叉排序树,它或者是一棵空树,或者是具有下面性…

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

HTML常见标签——超链接a标签

一、a标签简介 二、a标签属性 href属性 target属性 三、a标签的作用 利用a标签进行页面跳转 利用a标签返回页面顶部以及跳转页面指定区域 利用a标签实现文件下载 一、a标签简介 <a>标签用于做跳转、导航&#xff0c;是双标签&#xff0c;记作<a></a>&#…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十九章 Linux MISC驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

MongoDB教程(十八):MongoDB MapReduce

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MapRed…

上传项目到GitHub

上传项目到GitHub 前期工作&#xff1a;创建GitHub仓库 1.使用git命令初始化文件夹 git init2.将文件夹里面所有的文件添加到本地仓库&#xff0c;如果想添加单个文件&#xff0c;将.换成文件名就好。 git add .3.给文件备注&#xff0c;双引号里面是文件备注的内容 git c…

8月开始|《660》+《880》45天带刷计划!

660880题目加起来挺多了&#xff01; 如果是一刷加上二刷错题的话&#xff0c;总共需要做2000道题左右。 如果全都吃透的话&#xff0c;按照传统的刷题方法&#xff0c;慢的话需要2个多月&#xff0c;差不多就是每天30多道题的量 快的话&#xff0c;大概就是一个月就能刷完&…

低代码如何加速数字化转型

数字化转型&#xff0c;正日益决定企业成功的关键。这里的一个关键因素是它可以以更快的速度和质量来实施技术计划。在当今瞬息万变的商业环境中&#xff0c;战略性地采用低代码平台对于旨在加快上市时间、增强业务敏捷性和促进跨团队无缝协作的首席技术官来说至关重要。日益增…

【教程】vscode添加powershell7终端

win10自带的 powershell 是1.0版本的&#xff0c;太老了&#xff0c;更换为powershell7后&#xff0c;在 vscode 的集成终端中没有显示本篇教程记录在vscode添加powershell7终端的过程 打开vscode终端配置 然后来到这个页面进行设置 查看 powershell7 的安装位置&#xff…

Linux开启coredump

在Linux系统中&#xff0c;C/C程序崩溃是常见的问题之一。Coredump是指当一个程序崩溃时&#xff0c;系统把程序运行时的内存数据以二进制文件的形式保存下来&#xff0c;以便程序开发者进行崩溃分析。本文将介绍如何开启并配置Coredump 1、查看并配置coredump 在Linux系统中…

Git仓库拆分和Merge

1. 问题背景 我们原先有一个项目叫open-api&#xff0c;后来想要做租户独立发展&#xff0c;每个租户独立成一个项目&#xff0c;比如租户akc独立部署一个akc-open-api&#xff0c;租户yhd独立部署一个yhd-open-api&#xff0c;其中大部分代码是相同的&#xff0c;少量租户定制…

昇思25天学习打卡营第20天|CV-ResNet50图像分类

打卡 目录 打卡 图像分类 ResNet网络介绍 数据集准备与加载 可视化部分数据集 残差网络构建 Building Block 结构 代码实现 Bottleneck结构 代码实现 构建ResNet50网络 代码定义 模型训练与评估 可视化模型预测 重点&#xff1a;通过网络层数加深&#xff0c;感知…

Docker-Compose配置zookeeper+KaFka+CMAK简单集群

1. 本地DNS解析管理 # 编辑hosts文件 sudo nano /etc/hosts # 添加以下三个主机IP 192.168.186.77 zoo1 k1 192.168.186.18 zoo2 k2 192.168.186.216 zoo3 k3注&#xff1a;zoo1是192.168.186.77的别名&#xff0c;zoo2是192.168.186.18的别名&#xff0c;zoo3是192.168.186.1…

【HarmonyOS】应用推送使用个推SDK如何实现?

【HarmonyOS】应用推送使用个推SDK如何实现&#xff1f; 前言 个推和极光都是市面上很成熟的推送第三方SDK了。今天讲讲个推SDK在鸿蒙中如何集成使用。 存在即合理&#xff0c;三方SDK推送给我们带来了极大的好处&#xff0c;首先在服务器后台处理一套API就可搞定&#xff0…

敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!

咱们做项目的时候可能都遇到过这种情况&#xff1a;项目一开始信心满满&#xff0c;觉得 deadline 稳了。结果呢&#xff1f;各种意外状况频出&#xff0c;时间好像怎么都不够用了&#xff0c;最后项目只能无奈延期&#xff0c;整个团队都像霜打的茄子。 说到底&#xff0c;还…

Mamba-yolo|结合Mamba注意力机制的视觉检测

一、本文介绍 PDF地址&#xff1a;https://arxiv.org/pdf/2405.16605v1 代码地址&#xff1a;GitHub - LeapLabTHU/MLLA: Official repository of MLLA Demystify Mamba in Vision: A Linear AttentionPerspective一文中引入Baseline Mamba&#xff0c;指明Mamba在处理各种高…

Modbus转BACnet/IP网关的技术实现与应用

引言 随着智能建筑和工业自动化的快速发展&#xff0c;不同通信协议之间的数据交换也变得日益重要。Modbus和BACnet/IP是两种广泛应用于自动化领域的通信协议&#xff0c;Modbus以其简单性和灵活性被广泛用于工业自动化&#xff0c;而BACnet/IP则在楼宇自动化系统中占据主导地…

华为网络模拟器eNSP安装部署教程

eNSP是图形化网络仿真平台&#xff0c;该平台通过对真实网络设备的仿真模拟&#xff0c;帮助广大ICT从业者和客户快速熟悉华为数通系列产品&#xff0c;了解并掌握相关产品的操作和配置、提升对企业ICT网络的规划、建设、运维能力&#xff0c;从而帮助企业构建更高效&#xff0…

【日常记录】【JS】JS中查询参数处理工具URLSearchParams

文章目录 1. 引言2. URLSearchParams2.1 URLSearchParams 的构造函数2.2 append() 方法2.3 delete() 方法2.4 entries() 方法2.5 forEach() 方法2.6 get() 方法2.7 getAll() 方法2.8 has() 方法2.9 keys() 方法2.10 set() 方法2.11 toString() 方法2.12 values() 方法 参考链接…