首页 > 编程语言 >机器学习 | 回归算法原理——多项式回归

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

时间:2024-07-24 22:27:13浏览次数:13  
标签:函数 多项式 回归 算法 拟合 表达式 定义

Hi,大家好,我是半亩花海。接着上次的最速下降法(梯度下降法)继续更新《白话机器学习的数学》这本书的学习笔记,在此分享多项式回归这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目,欢迎大家交流学习!

目录

一、多项式回归概述

二、案例分析

1. 设置问题

2. 定义模型

3. 多项式回归


一、多项式回归概述

多项式回归是一种基于多项式函数的回归分析方法,用于拟合数据中的非线性关系。与简单的线性回归不同,多项式回归通过引入多项式项来建模数据的非线性特征,从而提高了模型的灵活性和适用性。


二、案例分析

1. 设置问题

还记得前两节我们定义的用于预测的一次函数吗?

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

因为是一次函数,所以它的图像是直线。

不过,对于一开始我在图中添加的数据点来说,直线一定是最好的拟合方式吗?曲线拟合的效果会更好吗?

2. 定义模型

通过清晰直观地观察下图,并经过探索我们会发现,其实曲线相对来说会比直线拟合得更好

如此看来,曲线似乎看起来更拟合数据。在此,我们可以把 f_\theta(x) 定义为二次函数,便能用它来表示这条曲线,如下所示:

f_\theta(x)=\theta_0+\theta_1 x+\theta_2 x^2

再或者,用更大次数的表达式也可以。这样就能表示更复杂的曲线了,如下所示:

f_\theta(x)=\theta_0+\theta_1 x+\theta_2 x^2+\theta_3 x^3+\cdots+\theta_n x^n

在找出最合适的表达式之前,需要不断地去尝试。当然这里有个误区,并不是说函数次数越大,拟合得就越好,难免也会出现过拟合的问题(在深度学习中会接触到)。

3. 多项式回归

回到我们定义的二次函数中,我们增加了 \theta _2 这个参数,接下来得需要推导出 \theta _2 更新表达式,和上一节“最速下降法”里面的原理一样,用目标函数对 \theta _2 进行偏微分便就能求出来。

u=E(\theta)v=f_\theta(x),再将 u\theta _2 偏微分,求出更新表达式。 uv 微分即 \frac{\partial u}{\partial v} 的部分应该和前一节里的求法是一样的,如下式。

\begin{aligned} \frac{\partial u}{\partial v} & =\frac{\partial}{\partial v}\left(\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-v\right)^2\right) \\ & =\frac{1}{2} \sum_{i=1}^n\left(\frac{\partial}{\partial v}\left(y^{(i)}-v\right)^2\right) \\ & =\frac{1}{2} \sum_{i=1}^n\left(\frac{\partial}{\partial v}\left(y^{(i)^2}-2 y^{(i)} v+v^2\right)\right) \\ & =\frac{1}{2} \sum_{i=1}^n\left(-2 y^{(i)}+2 v\right) \\ & =\sum_{i=1}^n\left(v-y^{(i)}\right) \end{aligned}

所以我们只要求 v 对 \theta _2 的微分即可,如下式。

\begin{aligned} \frac{\partial v}{\partial \theta_2} & =\frac{\partial}{\partial \theta_2}\left(\theta_0+\theta_1 x+\theta_2 x^2\right) \\ & =x^2 \end{aligned}

得出最终的参数更新表达式如下所示:

\begin{aligned} & \theta_0:=\theta_0-\eta \sum_{i=1}^n\left(f_\theta\left(x^{(i)}\right)-y^{(i)}\right) \\ & \theta_1:=\theta_1-\eta \sum_{i=1}^n\left(f_\theta\left(x^{(i)}\right)-y^{(i)}\right) x^{(i)} \\ & \theta_2:=\theta_2-\eta \sum_{i=1}^n\left(f_\theta\left(x^{(i)}\right)-y^{(i)}\right) x^{(i)^2} \end{aligned}

那么即使增加参数,比如有 \theta _3\theta _4 等,我们依然可以用同样的的方法求出它们的更新表达式。像这样增加函数中多项式的次数,然后再使用函数的分析方法(偏微分)被称为多项式回归

标签:函数,多项式,回归,算法,拟合,表达式,定义
From: https://blog.csdn.net/ttrr27/article/details/140667239

相关文章

  • 关于珞石机器人二次开发SDK的posture函数的算法RX RY RZ纠正 C#
    在珞石SDK二次开发的函数钟,获取当前机器人位姿的函数posture函数在输出时会发现数据不正确,与示教器数据不一致。其中第一个数据正确第二三各数据为相反第四五六各数据为弧度制转换方法为(弧度/PI)*180度然后发现第四个数据还要加上180度第五六各数据要取反,,所以设计了以下......
  • 七大基于比较的排序算法
    目录一、基于比较的排序算法概述1.插入排序(InsertionSort)2.选择排序(SelectionSort)3.冒泡排序(BubbleSort)4.归并排序(MergeSort)5.快速排序(QuickSort)6.堆排序(HeapSort)7.希尔排序(ShellSort)二、排序算法的性能分析三、Java中的常用排序方法 在计算机科......
  • 算法介绍(一):LLCNN低光照
    对于一张灰度图片,像素值越大则亮度越高,像素值越小则亮度越低在数字图像处理领域有一种很简单的图像亮度调整算法——伽马变换伽马变换是一种用于调整图像亮度和对比度的非线性操作,其基本公式为(I'=I^\gamma),其中(I')是输出图像的灰度值,(I)是输入图像的灰度值,而(\g......
  • java中的一些经典算法code
    //1.importjava.util.LinkedList;importjava.util.Queue;publicclassCandyGame{//定义一个点的类,用于记录位置和当前累计的糖果数量staticclassPoint{intx,y,steps,candies;Point(intx,inty,intsteps,intcandies){......
  • 改进的灰狼优化算法(GWO)(附完整matlab代码)
    1.灰狼优化算法灰狼优化算法作为一种高效率群体智能优化算法,其结构简单,收敛速度快,调节参数少,在时间序列预测,机械设计,结构设计,聚类分析等工程问题上都有着十分广泛的应用。但是在应用过程中发现,其存在种群多样性差,后期收敛速度缓慢,容易陷入局部最优以及局部搜索和全局搜索不均......
  • 2024 | 大模型算法工程师相关面试题汇总及答案解析
    前言在准备大模型的面试时,我们需要对模型的基础理论、进阶应用、微调策略、以及特定技术如LangChain、参数高效微调(PEFT)等有深入的理解。这里给大家整理了一份详细的面试题,帮助大家提前进行面试复习,同时对自己的技术进行查漏补缺。一、大模型基础面试题目前主流的开源模......
  • 算法笔记|Day6哈希表基础II
    算法笔记|Day6哈希表基础II☆☆☆☆☆leetcode454.四数相加II题目分析代码☆☆☆☆☆leetcode383.赎金信题目分析代码☆☆☆☆☆leetcode15.三数之和题目分析代码☆☆☆☆☆leetcode18.四数之和题目分析代码☆☆☆☆☆leetcode454.四数相加II题目链接:leetco......
  • 数据结构与算法,剑指Offer 50题
    队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。对列的添加insertappend队列的取值列表[-1]列表[0]队列的删......
  • MVO-CNN多输入分类预测|多元宇宙算法-卷积神经网络|Matlab
    目录一、程序及算法内容介绍:基本内容:亮点与优势:二、实际运行效果三、算法介绍:四、完整程序下载:一、程序及算法内容介绍:基本内容:本代码基于Matlab平台编译,将MVO(多元宇宙算法)与CNN(卷积神经网络)结合,进行多输入数据分类预测输入训练的数据包含12个特征,1个响应值,即......
  • Python实现RSA加密算法,让你的信息更加安全
    一、什么是编码    想要实现加密就必须要先了解什么是编码。    编码是信息从另一种形式或格式转换为另一种形式或格式的过程,解码则是编码的逆过程。字符编码(CharacterEncoding)是把字符集中的字符编码为指定集合中的某个对象,以便信息在计算机中传输。在密码......