回归问题里的数学

news2024/10/7 10:20:59

假设一个简单的案例

投入的广告费越多,广告的点击量就越高,进而带来访问数的增加,不过点击量经常变化,投入同样的广告费未必能带来同样的点击量。根据广告费和实际点击量的对应关系数据,可以将两个变量用下面的图展示出来。

如上图,如果花了200日元的广告费,广告的点击量大概是500次左右。这就是机器学习,从数据中进行学习,然后给出预测值。

应用机器学习里的回归算法。

把图想象为函数。只要知道通过图中各点的函数的形式,就能根据广告费得知点击量了。不过刚才我也说过,点击量经常变化,这叫作“点击量中含有噪声”,所以函数并不能完美地通过所有的点。

 假设我们使用一次函数来表达广告费和点击量的关系,则表达式是:

y = \theta_{1} x + \theta_{0}

其中a是斜率、b是截距;x是广告费、y是点击量。

比如我们设 \theta_{0} = 1,\theta_{1}=2  那么表达式变为 y = 1+2x

计算一下x=100时y的值,100日元的广告费带来的点击量为201左右。

 看一下刚才的图,如果广告费为100日元,那么点击量应该大于400。

这说明我们刚才确定的参数 \theta_{0} = 1,\theta_{1}=2 完全不正确。

接下来我们就要使用机器学习来求出正确的 \theta_{0} 和 \theta_{1} 的值。

最小二乘法

上面随便确定了一个参数,得到了形式为f(x) = 1 + 2x 的表达式,将广告费的值代入这个f(x)中进行计算。

yf(x)的值完全不同。理想的情况就是二者一致,也就是y=f(x),我们的目标是让误差最小。可是,让所有点的误差都等于0是不可能的,数据中包含噪声。

图中的虚线箭头表示训练数据的点和 f(x) 的误差。

只要想办法缩小误差虚线的高度,就能预测正确的点击量了。所以问题的关键在于减小误差!

目标函数

假设有n个训练数据,那么它们的误差之和可以用以下表达式表示。这个表达式称为目标函数E(\theta)的E是误差的英语单词Error的首字母。

 公式白话:对每个训练数据的误差取平方之后,全部相加,然后乘以1/2。

为什么要计算误差的平方呢?

 如果只是简单地计算差值,就得考虑误差为负值的情况。比如f(x)的图像是这样的,这种情况下,中间以左的误差是负数,以右的误差是正数,二者相加正负相抵,计算误差之和结果会是接近0的数。误差之和虽然为0了,但是很明显这个水平方向的f(x)是不对的。

实际来计算一下E(\theta)的值。设\theta_{0} = 1,\theta_{1}=2,将刚才列举的4个训练数据代入表达式。求出来的误差有点大,

 

112176.5这个值本身没有什么意义,我们要修改参数θ,使这个值变得越来越小,这种做法称为最小二乘法。

目标是要让E(\theta)越来越小,不过一边随意修改\Theta的值,一边计算E(\theta)并与之前的值相比较的做法实在是太麻烦了。使用微分来解决这个问题。

用简单的例子来说明;比如有一个表达式为g(x) = (x-1)^2的二次函数,它的最小值是g(x)=0,出现在x=1时。这个二次函数的增减表是什么样呢?

首先微分对吧?将g(x)展开,有 (x-1)2=x2-2x+1

 所谓导数,就是微分后的函数,只要看2x-2的符号就行了,所以增减表是这样的。

 根据这张增减表可以知道,在x<1时,g(x)的图形向右下方延伸,反之当x>1时,g(x)的图形向右上方延伸,换句话说就是从左下方开始延伸的。

 比如在x=3这一点,为了使g(x)的值变小,我们需要向左移动x,也就是必须减小x。

只要向与导数的符号相反的方向移动x,g(x)就会自然而然地沿着最小值的方向前进了。

 这也被称为最速下降法或梯度下降法。用以下公式定义:

公式表示用上一个x来定义新的x。

 η是称为学习率的正的常数,读作“伊塔”。根据学习率的大小,到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。有时候甚至会出现完全无法收敛,一直发散的情况。

比如η=1,从x=3开始,g(x)的微分是2x-2,那么更新表达式就是x:=x-η(2x-2)

一直在3和-1上跳来跳去,就陷入了死循环。

那设η=0.1,同样从x=3开始,这次渐渐接近x=1了:

回过头来看一下目标函数E(\theta)

这个目标函数和刚才例子中的g(x)同样是开口向上的形状,所以刚才讨论的内容也同样适用于它。不过这个目标函数中包含\text{f}_{\theta}(x),从表达式2.3.1又可以看出,\text{f}_{\theta}(x)拥有\Theta{0}\Theta{1}两个参数。也就是说这个目标函数是拥有\Theta{0}\Theta{1}的双变量函数,所以不能用普通的微分,而要用偏微分,复合函数的微分

E(\theta)中有\text{f}_{\theta}(x),而\text{f}_{\theta}(x)中又有\Theta{0},假设:

则:

先求u对v微分:

最后一行,常数与 \frac{1}{2} 相抵消了,这就是一开始乘以 \frac{1}{2} 的理由。

再来求 v对\Theta{0}的微分:

则参数\Theta{0}的求解公式如下:

 用相同的方法再算一下对\Theta{1}微分的结果:

 参数\Theta{0}\Theta{1}的更新表达式就是这样的:

最后,只要根据这个表达式来更新\Theta{0}\Theta{1}即可。

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

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

相关文章

CASA模型:生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟

查看原文>>>生态系统NPP及碳源、碳汇模拟、土地利用变化、未来气候变化、空间动态模拟实践技术应用 目录 第一章 CASA模型介绍(讲解案例实践) 第二章 CASA初步操作 第三章 CASA数据制备(一) 第四章 CASA数据制备&am…

4_回归算法(算法原理推导+实践)

文章目录 1 线性回归1.1 定义1.2 题目分析1.3 误差项分析1.4 目标函数推导1.5 线性回归求解1.6 最小二乘法的参数最优解 2 目标函数(loss/cost function)3 模型效果判断4 机器学习调参5 梯度下降算法5.1 梯度方向5.2 批量梯度下降算法(BGD&am…

Spring IOC容器及DI相关概念

文章目录 一、组件、框架、容器的相关概念1.组件2.框架3.容器4.总结 二、IOC与DI简介1.IOC入门案例2.DI入门案例 一、组件、框架、容器的相关概念 1.组件 组件是为了代码的重用而对代码进行隔离封装,组件的呈现方式是单个或多个.class文件,或者打包的.…

Flutter的手势识别功能实现GestureDetector

GestureDetector简介 GestureDetector 是 Flutter 中一个非常常用的小部件,它提供了许多手势识别的功能,包括点击、双击、长按、拖动、缩放等等。 使用方法 GestureDetector 可以包裹其他部件,当用户在这些部件上进行手势操作时&#xff0…

基于SSM的网辩平台的设计与实现

摘 要 线上作为当前信息的重要传播形式之一,线上辩论系统具有显著的方便性,是人类快捷了解辩论信息、资讯等相关途径。但在新时期特殊背景下,随着网辩的进一步优化,辩论赛结合网络平台融合创新强度也随之增强。本文就网辩平台进…

尧泰汉海五城联动,“益”起圆梦!用爱守护成长,助力502名孩子实现心愿

公益的力量让孩子们的梦想被看见。 文具套装、书包、篮球 、益智积木、生日蛋糕......一个个看似小小的心愿,对于城市里的孩子来说是平常不过的礼物,但却成了许多正处于困境孩子的期待。 本次活动由重庆市慈善总会指导,Home尧泰汉海慈善专项…

【项目】ROS下使用乐视深度相机LeTMC-520

本文主要记录如何在ros下使用乐视深度相机。乐视三合一体感摄像头LeTMC-520其实就是奥比中光摄像头(Orbbec Astra Pro) 系统:Ubuntu20.04 这款相机使用uvc输入彩色信息,需要使用libuvc、libuvc_ros才能在ROS上正常使用彩色功能。…

k8s实战2-用minikube发布本地应用

官网的教程中,hello-minikube其镜像都在网上(dockerhub)上,如何把本地打包的docker镜像发布到minikube中 1 终端上运行eval $(minikube docker-env) 此命令的作用是使用Minikube Docker守护进程,跟原来docker desktop的docker进程区别开来 …

FPGA深层解析

概览 高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可 编程门阵列(FPGA)。无论你使用图形化设计程序,ANSI C语言还是VHDL语言, 如此复杂的合成工艺会不禁让人去想FPGA真实的运作情况。在这个芯片中的程 序在这些可设置硅片间到底是如何工作的。本书会使…

腾讯云2核4G5M服务器性能如何?来说说CPU内存带宽系统盘

腾讯云轻量应用服务器2核4G5M配置一年168元,三年628元,100%CPU性能,5M带宽下载速度640KB/秒,60GB SSD系统盘,月流量500GB,折合每天16.6GB流量,超出月流量包的流量按照0.8元每GB的支付流量费&…

SKY13330-397LF国产替代ATR5330 SUB-1G SPDT开关芯片

1.1 芯片简介 ATR5330是一款采用CMOS SOI工艺制作的单刀双掷开关单芯片,该芯片的推荐工作频率20MHz-4GHz, 开关芯片采用单电源供电控制,有非常低的电流功耗。开关开启工作时有非常低的插入损耗以及非常高的线性度。 1.2主要特征 频率范围: 0.…

项目管理:如何利用工具做好工作汇报?

我们公司曾经经历了一次惨痛的教训。我们为一家重要的大客户提供咨询服务,但在项目结束时,我们的项目负责人在电梯间遇见了客户的总经理,被问及项目结果时,却无法在短时间内清晰地表达出来。这一失误导致我们失去了这位重要客户。…

什么是跳表

什么是跳表 跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右…

【Redis】Redis 内存回收

文章目录 1. 过期key处理1.1 惰性删除1.2 周期删除 2. 内存淘汰策略 Redis 中数据过期策略采用定期删除惰性删除策略结合起来,以及采用淘汰策略来兜底。 定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过…

大语言模型技术原理

在今天这个时代,人们的工作和生活已经离不开数据访问,而几乎所有平台背后的数据存储和查询都离不开数据库。SQL作为一种数据库的查询和处理语言历史悠久,最早由IBM于上世纪70年代初研究关系数据模型时提出,后续发展为一种广泛使用…

Python实战基础15-匿名函数,高阶函数

1、匿名函数 用lambda关键词能创建小型匿名函数,这种函数得名于省略了用def声明函数的标准步骤。 lambda函数的语法只包含一个语句,如下: lambda 参数列表: 运算表达式 如下实例: sum lambda arg1,arg2:arg1 arg2…

Coursera—Andrew Ng机器学习—课程笔记 Lecture 5 Octave Tutorial

未完待续。。。。。 5.1 基本操作 参考视频: 5 - 1 - Basic Operations (14 控制输出格式的长短 min).mkv 5.1.1 简单运算 不等于符号的写法是这个波浪线加上等于符号 ( ~ ),而不是等于感叹号加等号( ! ) 1 1 1   % 判断相等 2 1 ~ 2   % 判断不等 3 …

【AUTOSAR】Com通讯栈配置说明(一)---- Can模块

通讯栈 模块 项目通讯栈 主要包含如下几个模块: 各模块详细配置说明 Can模块 这部分最终会导入到EB 中,通过EB 生成CanDriver 代码, 具体参数的介绍已经在EB 配置说明中介绍过。 CanController ​​​​​​​CanHaredWareObject 以其中一…

Unity3D:2D/3D 项目

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 2D 还是 3D 项目 无论是创建 2D 还是 3D 游戏,Unity 都很拿手。在 Unity 中创建新项目时,可以选择以 2D 或 3D 模式启动。您可能已经知道要构建什么&#x…

1-网络初识——网络发展史

目录 1.独立模式 2.网络互联 2.1.局域网(Local Area Network,简称LAN) ①基于网线直连 ②基于集线器组建 ③基于交换机组建 ④基于交换机(网口很多)和路由器组建 2.2.广域网(Wide Area Network&…