回归问题里的数学

news/2025/3/4 7:32: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.ppmy.cn/news/106263.html

相关文章

【书评】《写作脑科学》杨滢(@屠龙的胭脂井)

《写作脑科学》是一本介绍写作与脑科学关系的书籍,作者是杨滢。 本书通过对脑科学的研究和分析,揭示了写作的本质和技巧,为写作者提供了有益的指导和启示。 本书的主要内容分为八个部分 第1章 为什么写作跟大脑有关第2章 快速写作&#xff…

AdaIN

AdaIN的全名是Adaptive Instance Normalization,源自风格迁移的论文Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 假设原图和风格图经过VGG进行特征提取后得到shape分别为CxHxW和CxH‘xW’的特征图c和s,AdaIN的计算如…

大数据:诞生大数据,概述、大数据软件生态,Apache Hadoop概述

大数据: 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学&#x…

MySQL 数值函数

文章目录 数值函数1. abs(num)2. ceil(num)3. floor(num)4. mod(num1,num2)5. rand()6. round(num,n)7. truncate(num,n)8. sqrt(num) 数值函数 数值函数用来处理数值方面的运算,能够提高用户的工作效率。常用的数值函数如下表所示,函数括号内为输入的参…

TortoiseGit的安装及使用, 并配合Gitee码云使用

Windows10下, TortoiseGit的安装及使用, 并配合Gitee码云使用! 1) 安装TortoiseGit 官网, 32位, 64位, 自选 Download – TortoiseGit – Windows Shell Interface to Git 2) 点击下载, 安装, 我选择的是64位, 中文安装包(说明: 中文安装包也分32, 64位), 这两个下载. Tips:…

在ubuntu上安装splint

lint lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。 工具介绍 与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一…

港联证券|散户为什么会追涨杀跌?如何避免?

股市是一个充满机会的地方,每天都有大量投资者在里面寻求财富。然而股市中很多散户都是亏损的,一个重要原因就是喜欢追涨杀跌。那么散户为什么会追涨杀跌?如何避免?港联证券也为大家准备了相关内容,以供参考。 散户为什…

【完整项目开发】Springboot+vue教学材料管理系统定制开发

Springbootvue 的专业建建设材料管理系统。 **大家好,今天分享最近做的一套系统。**起因源于小伙伴的需求 文末有的获取方式,如需定制系统,需求发来,我为你分忧,搞起 一、 项目介绍 基于各个专业,对教…