机器学习 | 回归算法原理——最小二乘法

Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于广告费预测点击量》项目,欢迎大家交流学习!

目录

一、最小二乘法概述

二、案例分析

1. 设置问题

2. 定义模型

3. 最小二乘法


一、最小二乘法概述

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和min E(\theta))寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法同梯度下降类似,都是一种求解无约束最优化问题的常用方法,并且也可以用于曲线拟合,来解决回归问题。


二、案例分析

下面根据《基于广告费预测点击量》这一项目展开最小二乘法的介绍和分析。

1. 设置问题

假设存在这样一个前提:投入的广告费越多,广告的点击量就越高,进而带来访问数的增加。这样看这种假设类似于线性关系,但实际上两者之间未必是简单的线性关系

根据广告费和实际点击量的对应关系数据,可以将两个变量用下面的图展示出来,如下图(图中的值是随便选的)。

我们看着这张图可以猜猜,如果花了200日元的广告费,广告的点击量会是多少呢?通过探索估计,大概在500次左右吧。

这就是机器学习。我们所做的事情正是从数据中进行学习,然后给出预测值。接下来我们就要使用机器学习,像我们刚才做的那样尝试进行根据广告费预测点击量的任务

当然,实际要使用机器学习来解决的问题都会更复杂,很多问题无法像这样画出图来。现在我们为了加深理解才用了这样一个简单的例子,后面的例子会越来越难的。

2. 定义模型

那我们如何应用机器学习呢?就刚刚的例子,如下图所示,我们可以把图想象为函数。只要知道通过图中各点的函数的形式就能根据广告费得知点击量了。但是点击量经常变化,这叫作“点击量中含有噪声”,所以函数并不能完美地通过所有的点。

这样看便是我们初中便学过的一次函数,考虑到后面的学习(为了防止当未知数增加时,表达式中大量出现 a、b、c、d…这样的符号),我们常常使用如下的\theta + 数字下标”的形式来表示未知数和推测值,进而定义一次函数的表达式。

y=\theta_0+\theta_1 x

比如,我们先任取两个数作为 \theta_{0}\theta_{1},假设 \theta_{0} =1\theta_{1} =2,那么当广告费为 100 日元时,点击量的计算过程如下:

y = 1 + 2x = 1 + 2 \times 100 = 201

函数 y = 1 + 2x 的部分点信息如下:

但实际上我们再看一下刚才的图会发现,如果广告费为 100 日元,那 么点击量应该大于 400。

这说明我们刚才确定的参数 \theta_{0} =1\theta_{1} =2 完全不正确。 接下来我们就要使用机器学习来求出正确的 \theta_{0} 和 \theta_{1}  的值。

3. 最小二乘法

假设有 n 个训练数据, 那么它们的误差之和可以用下面的表达式 E(\theta) 表示。这个表达式称为目标函数(其中,E(\theta) 的 E 是误差的英语单词 Error 的首字母)。(ps:计算误差般不用绝对值,而用平方。因为之后要对目标函数进行微分,比起绝对值,平方的微分更加简单。)

E(\theta)=\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_\theta\left(x^{(i)}\right)\right)^2

其中,f_\theta(x) 表达式为:

f_\theta(x)=\theta_0+\theta_1 x

其次,x^{(i)}y^{(i)} 中的 i 不是 i 次幂的意思,而是指第 i 个训练数据

再者,误差解释一下,如下图所示,图中的双向虚线箭头表示训练数据的点和 f_\theta(x) 图像的误差。

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

\begin{aligned} E(\theta) & =\frac{1}{2} \sum_{i=1}^4\left(y^{(i)}-f_\theta\left(x^{(i)}\right)\right)^2 \\ & =\frac{1}{2} \times\left((374-117)^2+(385-141)^2+(375-163)^2+(401-169)^2\right) \\ & =\frac{1}{2} \times(66049+59536+44944+53824) \\ & =112176.5 \end{aligned}

上述结果 112 176.5 这个值本身没有什么意义,我们要通过一些方法修改参数 \theta,如之后所学习的神经网络中的调参等方式,使得这个值变得越来越小。这种做法称为最小二乘法

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

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

相关文章

Ollama Linux 升级

Ollama 是一个开源的 LLM 部署工具,一键部署,超级好用,在 Mac 上支持自动更新,但是到了 LInux 就有些麻烦了,本文讲述如何在 Linux 下更新 Ollama。 重新安装 安装时使用的是如下脚本,升级时我们只要重新…

如何学习Doris:糙快猛的大数据之路(从入门到专家)

引言:大数据世界的新玩家 还记得我第一次听说"Doris"这个名字时的情景吗?那是在一个炎热的夏日午后,我正在办公室里为接下来的大数据项目发愁。作为一个刚刚跨行到大数据领域的新手,我感觉自己就像是被丢进了深海的小鱼—周围全是陌生的概念和技术。 就在这时,我的…

C#初级——枚举

枚举 枚举是一组命名整型常量。 enum 枚举名字 { 常量1, 常量2, …… 常量n }; 枚举的常量是由 , 分隔的列表。并且,在这个整型常量列表中,通常默认第一位枚举符号的值为0,此后的枚举符号的值都比前一位大1。 在将枚举赋值给 int 类型的…

2024.7.26(shell脚本)

一、shell基础 1、shell 概念 shell英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。可以通过shell命令来操作和控制操作系统,比如Linux中的shell命令就包括Is、cd、pwd等等。 shell 在内核的基础上编写的一个应用程序,它连接了用户和Linux内核,从…

GPT-4o mini:AI技术的平民化革命

目录 引言一、GPT-4o mini简介二、性能表现三、技术特点四、价格与市场定位五、应用场景六、安全性与可靠性七、未来展望八、代码示例结语 引言 在人工智能的浪潮中,大模型技术一直是研究和应用的热点。然而,高昂的成本和复杂的部署常常让许多企业和开发…

03。正式拿捏ArkTS语言第一天

1, 打印日志命令 : console.log() 2, 三种基本数据类型: number 数字类型 (数字) string 字符串类型(例如:“我是字符串”) boolean 布尔类型 (true 或者 false) ***…

利用 ARP 欺骗,截获任意主机之间网络流量

ARP 欺骗实现原理: 通过伪造(未经请求)ARP 应答,从而改变受害端主机 ARP 表中的 IP-MAC 映射关系,将来自 LAN 上的受害端主机的数据包重定向到 LAN 上的另一台主机(攻击端,arpspoof 运行端&…

Idea 编译项目报错 java: java.lang.OutOfMemoryError:GC overhead limit exceeded

报错 java: java.lang.OutOfMemoryError: WrappedJavaFileObject[org.jetbrains.jps.javac.InputFileObjectpos13979: GC overhead limit exceeded解决 默认是700M,有的时候项目引入的依赖包比较大,可能超过了700M,需要扩大,根据实际情况设…

C++ 数字和数组解析

文章目录 1. 定义数字 2. 数学运算 3. 随机数 4. 数组 声明数组 初始化数组 5. 访问数组元素 6. 数组类型 7. 多维数组 二维数组 初始化二维数组 访问二维数组元素 8. 指向数组的指针 9. 传递数组给函数 10. 从函数返回数组 1. 定义数字 通常,当需要…

Unity UGUI 之 Mask

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是遮罩 遮罩是一…

基于springboot+vue+uniapp的养老院系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

SSM电子商务系统-计算机毕业设计源码68470

基于SSM框架的电子商务系统的设计与实现 摘 要 随着电子商务的迅猛发展和计算机信息技术的全面跃升,网上购物系统由于其迎合了人们诉求和期望而渗入社会生活各个层面和角落。本文设计并实现了一个基于SSM框架的电子商务系统。该系统旨在为用户提供一个舒适且快捷的…

子序列 392、524、521、522

392. 判断子序列(简单) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace…

C语言程序设计(二)

四.找素数 素数:除了1和它本身不再有其他因数的自然数。换句话说:一个大于1的自然数 ,如果只能被1和它本身整除,那就是素数(质数)。 在打印中遇到的问题就是,知道怎么写却总是运行不起来。主要…

尚硅谷vue全家桶(vue2+vue3)笔记

Vue2 一、Vue核心 01_简介 1.特点 采用组件化模式,提高代码复用率、且让代码更好维护。声明式编码,让编程人员无需直接操作DOM(命令式编码),提高开发效率。使用虚拟DOM优秀的Diff算法,尽量复用DOM节点。…

ks滑块验证码逆向分析与python识别

文章目录 1. 写在前面3. 接口分析3. 算法实现 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换

前言 图像目标检测领域有一个非常著名的数据集叫做COCO,基本上现在在目标检测领域发论文,COCO是不可能绕过的Benchmark。因此许多的开源目标检测算法框架都会支持解析COCO数据集格式。通过将其他数据集格式转换成COCO格式可以无痛的使用这些开源框架来训…

在MATLAB中使用importrobot导入机械臂刚体树时没有找到模型文件,只显示坐标;改为使用loadrobot

没有mesh文件夹,所以找不到模型文件 改为使用loadrobot,直接加载刚体树数据

【C++题解】1782. 字符图形2-星号倒直角

问题&#xff1a;1782. 字符图形2-星号倒直角 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3…

重生之我当程序猿外包

第一章 个人介绍与收入历程 我出生于1999年&#xff0c;在大四下学期进入了一家互联网公司实习。当时的实习工资是3500元&#xff0c;公司还提供住宿。作为一名实习生&#xff0c;这个工资足够支付生活开销&#xff0c;每个月还能给父母转1000元&#xff0c;自己留2500元用来吃…