二、学习回归 - 基于广告费预测点击量

山外风雨三尺剑

有事提剑下山去

云中花鸟一屋书

无忧翻书圣贤来

1.设置问题

以Web广告和点击量的关系为例来学习回归。

前提:投入的广告费越多,广告的点击量就越高。

根据以往的经验数据,可以得到下图:

那么假设我要投200块的广告费,那么带来的点击量有多少呢?

也就是500次左右。

这就是机器学习。你所做的事情正是从已知的数据中进行学习,然后给出预测值

2.定义模型

只要知道通过图中各点的函数形式,就能根据广告费得知点击量。

注意:“点击量中含有噪声”,所以函数不可能穿过所有的点。

可以得到一次函数:

一个是截距,一个表示斜率。

由这个函数可知,x是广告费,y是点击量。

可以把上面这个一次函数想象成是一个能够根据投入广告费预测点击量的模型,而θ0和θ1就是模型的参数值。模型的好坏(即预测结果的准确性)和模型的参数值息息相关。

现在我们不知道这两个参数值取多少对这个模型来说最优。

根据数学中的假设法,既然不知道,就先随便假设试一试。先假设θ0=1、θ1=2,那么上面的一次函数就会变成:

根据假设的这个模型,现在我要投入x=100块钱的广告费,那么预测的点击量:

y = 1 + 2 * 100 =201

再看一下之前数据实际情况:

所以假设的θ0=1、θ1=2完全不正确,根据这两个参数得出的模型,并不能得到正确结果。

下面我们就是要使用机器学习来求出正确的θ0与θ1。

3 最小二乘法

首先,转换一次函数的表达式:

这样就能一眼看出,这是一个含有参数θ,并且和变量x相关的函数。

我们之前有过投入的广告费与点击量之间的实际数据,如下:

在图中表示:

根据刚才我们随便假设的参数,可以得到 fθ(x)=1+2x

将实际投入的广告费代入预测点击量:

可以看出,根据随便假设的参数预测的值与实际情况相差很大,这种用随便确定的参数计算的值与实际的值存在偏差。 

最理想的情况是,我们的预测值与实际值一致,即y-fθ(x)=0。这就是说y和fθ(x)之间的误差为0。

但是,不可能让所有的误差都等于0,所以我们要做的就是让所有点的误差之和尽可能小。

用表达式展现出来就是:

 

这个表达式称为目标函数(核心),E(θ)的E是误差的英语单词Error的首字母,这类问题叫最优化问题

注意点:

1. x(i)和y(i)中的i不是i次幂的意思,而是指第i个训练数据。

2. 要计算误差的平方,排除误差为负值的情况。

3. 乘以1/2,表达式更好微分,而且不影响函数本身取最小值的点。

将开始的广告费与点击量数据代入进去可得:

误差太大,我们要做的就是让误差变小,使得预测值接近实际值,这种求误差的方法也叫作最小二乘法

要让E(θ)越来越小,就要去不停参数θ的值,然后再去与实际值一次次进行比较修改,这样太麻烦,正确做法是使用微分。

示例:

有一个二次函数为g(x)=(x-1)*2

首先对g(x)进行微分:

可以知道它的增减表:

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

在另一侧的x=-1这一点,为了使g(x)的值变小,我们需要向右移动x,也就是必须增加x

也就是说根据导数的符号来决定移动x的方向,与导数符号相反的方向移动,g(x)就会沿着最小值的方向前进。

把上面说的话总结起来,用表达式来表示:

这就是最速下降法或梯度下降法

A:=B这种写法,它的意思是通过B来定义A,参数自动更新。简单来说,就是用上一个x来定义新的x。

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

所以η的取值很重要,如η=1,从x=3开始

 

这样就会陷入死循环。

设η=0.1,同样从x=3开始

如果η较大,那么x:=x-η(2x-2)会在两个值上跳来跳去,甚至有可能远离最小值。这就是发散状态。而当η较小时,移动量也变小,更新次数就会增加,但是值确实是会朝着收敛的方向而去。

现在我们再来讨论广告费与点击量的目标函数:

但是这个目标函数中包含fθ(x),fθ(x)拥有θ0和θ1两个参数。也就是说这个目标函数是拥有θ0和θ1的双变量函数,所以不能用普通的微分,而要用偏微分

求表达式θ0的偏微分:

E(θ)中有fθ(x),而fθ(x)中又有θ0,所以可以使用复合函数

阶梯型地进行微分

先从u对v微分的地方开始计算

再v对θ0进行微分

v替换回fθ(x) 

再v对θ0进行微分

最后得到参数θ0和θ1的更新表达式:

只要根据这个表达式来更新θ0和θ1,就可以找到正确的一次函数fθ(x)了。

用这个方法找到正确的fθ(x),然后输入任意的广告费,就可以得到相应的点击量。这样我们就能根据广告费预测点击量了。

4 多项式回归

之前是将图像拟合成了一条直线,但是,在实际情况中,曲线比直线拟合的效果会更好。

曲线对应的二次函数:

或者使用更大次数的表达式也可以:

但是,并不是函数次数越好,拟合的就越好,可能会出现过拟合问题。

最终的参数更新表达式:

像这样增加函数中多项式的次数,然后再使用函数的分析方法被称为多项式回归

5 多重回归

之前我们是根据广告费来预测点击量,即只有一个变量(广告费x),但是在实际中要解决的很多问题是变量超过两个的复杂问题。

比如,除了广告费,点击量的多少还受到广告展示位置和广告版面大小等多个要素,即多个变量x。

为了让问题尽可能地简单,这次我们只考虑广告版面的大小,设广告费为x1、广告栏的宽为x2、广告栏的高为x3,那么fθ可以表示如下:

然后就可以对函数做微分了,但是在这之前可以了解一下表达式的简化形式。

简化方法:把参数θ和变量x看做向量

为了方便计算,两边对齐

把θ转置之后,与x相乘的结果

所以,在实际编程时,只需要用普通的一维数组表示就可以:

求微分时是与之前一样的,所以只需要求v对θj的微分就好了

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

这样包含多个变量的回归称为多重回归

6 随机梯度下降法

前面讲的梯度下降算法有两个缺点,一个是一次次更新x,花费的时间长,还有就是容易陷入局部最优解

比如下面这种函数:

从不同地方选择最开始的x,会陷入局部最优解。

随机梯度下降法是以最速下降法为基础的。

最速下降法的参数更新表达式:

这个表达式使用了所有训练数据的误差。而在随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。

表达式中的k就是被随机选中的数据索引。最速下降法更新1次参数的时间,随机梯度下降法可以更新n次。此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解。

此外还有随机选择m个训练数据来更新参数的做法:

设随机选择m个训练数据的索引的集合为K

假设训练数据有100个,那么在m=10时,创建一个有10个随机数的索引的集合,例如K={61, 53, 59, 16, 30, 21, 85,31, 51, 10},然后重复更新参数就行了。

这种方法叫做小批量梯度下降法

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

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

相关文章

SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论 有监督的分类任务实现 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D x∈RD 的深度神经网络 Φ Φ Φ ,即 x Φ ( I ) x Φ ( I ) xΦ(I)。使用有N个样本 I 1 , … , I N I_1 , … , I_N I1​,…,IN​, 且具有标签 y 1 , … , y N ∈ { 1 , … , K }…

Office如何通过VSTO进行WORD插件开发?

文章目录 0.引言1.工具准备2.WORD外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…

华为ospf路由协议在局域网中的高级应用案例

关键配置: 1、出口为ospf区域0,下联汇聚依次区域1、2…,非骨干全部为完全nssa区域 2、核心(abr)上对非骨干区域进行路由汇总,用于解决出口两台路由的条目数量 3、ospf静默接口配置在汇聚下联接接入交换机的…

在Microsoft Excel中如何快速将上下两行数据合并为一行?

合并单元格是电子表格初学者最常用的选项之一。当一组单元格、行或列需要标题或标签时,合并单元格是一种常用的技术。 合并单元格时,仅保留区域左上角单元格中的值或公式,并将其显示在合并后的单元格中。将丢弃任何其他值或公式,那么如何在新的空白单元格中将两行数据合并…

基于FPGA的按键消抖

文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四:总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动:按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性…

Makefile学习笔记

Makefile思想: 一个简单的 Makefile 文件包含一系列的“规则”,其样式如下: 目标:依赖 tab命令 例如: test : main.c sub.c sub.h gcc -o test main.c sub.c如果“依赖文件”比“目标文件”更加新,那么执…

如何保证消息的可靠性+延迟队列(TTL+死信队列+延迟队列)

目录 1.如何保证消息的可靠性 1.1.消息的可靠投递 confirm机制 return机制 1.2.如何保证消息在队列中不丢失 1.3.确保消息能可靠的被消费掉 2.延迟队列 2.1.TTL 2.2.死信队列 2.3.延迟队列 3.如何防止消费者重复消费消息 1.如何保证消息的可靠性 1.1.消息的可靠投递…

Ajax详解

文章目录 1. 概述1.1 Ajax工作原理1.2 Ajax的作用1.3 同步异步 2. 原生Ajax3. Axios3.1 Axios的基本使用3.2 Axios快速入门3.3 请求方法的别名 1. 概述 Ajax 是 “Asynchronous JavaScript and XML”(异步 JavaScript 和 XML)的缩写。它是一种在无需重新…

RabbitMQ知识掌握 【进阶篇】

一、如何保证消息的可靠性 🍉 1.保证消息的可靠性投递 🥝 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是&#xff0…

微服务Gateway网关(自动定位/自定义过滤器/解决跨域)+nginx反向代理gateway集群

目录 Gateway网关 1.0.为什么需要网关? 1.1.如何使用gateway网关 1.2.网关从注册中心拉取服务 1.3.gateway自动定位 1.4.gateway常见的断言 1.5.gateway内置的过滤器 1.6.自定义过滤器-全局过滤器 1.7.解决跨域问题 2.nginx反向代理gateway集群 2.1.配置…

什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的传输层协议。它们都用于在网络上传输数据,但是它们之间有很多不同之处。本文将介绍TCP和UDP的基本概念,以及在Java中如何…

ubuntu20.04配置vscode

下载: https://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.debhttps://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.deb 安装&#xff1a…

Ubuntu 放弃了战斗向微软投降

导读这几天看到 Ubuntu 放弃 Unity 和 Mir 开发,转向 Gnome 作为默认桌面环境的新闻,作为一个Linux十几年的老兵和Linux桌面的开发者,内心颇感良多。Ubuntu 做为全世界Linux界的桌面先驱者和创新者,突然宣布放弃自己多年开发的Uni…

回首2023上半年:成长、思考、感恩

文章目录 每日一句正能量前言一、目标达成情况总结二、工作和学习成果总结三、下半年规划总结四、个人想法 后记附录 每日一句正能量 做一个向日葵族,面对阳光,不自艾自怜,每天活出最灿烂的自己。曾经拥有的,不要忘记。不能得到的…

day52

思维导图 比较指令结果的条件码 练习 汇编实现1-100的累加 .text .global _strat _start: mov r0,#0mov r1,#0 add_fun:add r0,r0,#1cmp r0,#100addls r1,r1,r0bls add_fun .end

Vue 项目路由、自定义指令、api方法自动引入资源(require.context使用)

前端项目(当前我以Vue项目为例)当我们把api挂载在main上后 // 将api挂载到vue的原型上 import api from /api Vue.prototype.$apiapi在src下会有一个api文件夹,结构如下: 通常情况下,api文件夹的index.js文件我们通常…

ChatGPT 最佳实践指南之:使用外部工具

Use external tools 使用外部工具 Compensate for the weaknesses of GPTs by feeding them the outputs of other tools. For example, a text retrieval system can tell GPTs about relevant documents. A code execution engine can help GPTs do math and run code. If a …

8.postgresql--Update join 和 Delete using

Update join Update join用于基于另一张表更新表数据,语法如下: UPDATE t1 SET t1.c1 new_value FROM t2 WHERE t1.c2 t2.c2;CREATE TABLE product_segment (id SERIAL PRIMARY KEY,segment VARCHAR NOT NULL,discount NUMERIC (4, 2) );INSERT INTO…

基于C/S架构工作原理序号工作步骤和理论的区别

基于C/S架构工作原理序号工作步骤和理论的区别 SSH 概念 对称加密linux 系统加密,就是加密和揭秘都是使用同一套密钥。 非对称加密有两个密钥:“私钥”和“公钥”。私钥加密后的密文,只能通过对应的公钥进行揭秘。而通过私钥推理出公钥的…

不满足于RPC,详解Dubbo的服务调用链路

系列文章目录 【收藏向】从用法到源码,一篇文章让你精通Dubbo的SPI机制 面试Dubbo ,却问我和Springcloud有什么区别? 超简单,手把手教你搭建Dubbo工程(内附源码) Dubbo最核心功能——服务暴露的配置、使用…