十大机器学习算法之一:线性回归

news2024/11/17 19:34:51

十大机器学习算法之一:线性回归

  • 1 知识预警
    • 1.1 线性代数
    • 1.2 矩阵微积分
  • 2 什么是回归分析?
  • 3 线性回归
    • 3.1 一元线性回归
    • 3.2 多元线性回归
  • 4 多项式回归

1 知识预警

1.1 线性代数

( A T ) T = A (A^\mathrm{T})^\mathrm{T}=A (AT)T=A$
( A + B ) T = A T + B T (A+B)^\mathrm{T}=A^\mathrm{T}+B^\mathrm{T} (A+B)T=AT+BT
( λ A ) T = λ A T (\lambda A)^\mathrm{T}=\lambda A^\mathrm{T} (λA)T=λAT
( A B ) T = B T A T (AB)^\mathrm{T}=B^\mathrm{T}A^\mathrm{T} (AB)T=BTAT
( A − 1 ) − 1 = A (A^{-1})^{-1}=A (A1)1=A
( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1

1.2 矩阵微积分

为了书写简便,我们通常把单个函数对多个变量或者多元函数对单个变量的偏导数写成向量和矩阵的形式,使其可以被当成一个整体处理.矩阵微积分(Matrix Calculus)是多元微积分的一种表达方式,即使用矩阵和向量来表示因变量每个成分关于自变量每个成分的偏导数。

标量关于向量的偏导数:对于M维向量 x ∈ R x \in \mathbb{R} xR和函数 y = f ( x ) ∈ R y=f(x) \in \mathbb{R} y=f(x)R,则关于 x x x的偏导数为:

∂ y ∂ x = [ ∂ y ∂ x 1 , ⋯   , ∂ y ∂ x M ] ⊤ ∈ R M × 1 , \frac{\partial y}{\partial \boldsymbol{x}}=\left[\frac{\partial y}{\partial x_{1}}, \cdots, \frac{\partial y}{\partial x_{M}}\right]^{\top} \quad \in \mathbb{R}^{M \times 1}, xy=[x1y,,xMy]RM×1,
向量关于标量的偏导数:对于标量𝑥 ∈ ℝ和函数𝒚 = 𝑓(𝑥) ∈ R N \mathbb{R}^N RN,则𝒚关于𝑥 的
偏导数为
∂ y ∂ x = [ ∂ y 1 ∂ x , ⋯   , ∂ y N ∂ x ] ∈ R 1 × N \frac{\partial \boldsymbol{y}}{\partial x}=\left[\frac{\partial y_{1}}{\partial x}, \cdots, \frac{\partial y_{N}}{\partial x}\right] \quad \in \mathbb{R}^{1 \times N} xy=[xy1,,xyN]R1×N

向量关于向量的偏导数 对于 𝑀 维向量 𝒙 ∈ ℝ𝑀 和函数 𝒚 = 𝑓(𝒙) ∈ ℝ𝑁,则
𝑓(𝒙)关于𝒙的偏导数(分母布局)为
∂ f ( x ) ∂ x = [ ∂ y 1 ∂ x 1 ⋯ ∂ y N ∂ x 1 ⋮ ⋱ ⋮ ∂ y 1 ∂ x M ⋯ ∂ y N ∂ x M ] ∈ R M × N \frac{\partial f(\boldsymbol{x})}{\partial \boldsymbol{x}}=\left[\begin{array}{ccc} \frac{\partial y_{1}}{\partial x_{1}} & \cdots & \frac{\partial y_{N}}{\partial x_{1}} \\ \vdots & \ddots & \vdots \\ \frac{\partial y_{1}}{\partial x_{M}} & \cdots & \frac{\partial y_{N}}{\partial x_{M}} \end{array}\right] \in \mathbb{R}^{M \times N} xf(x)= x1y1xMy1x1yNxMyN RM×N

向量函数及其导数
∂ x ∂ x = I \frac{\partial \pmb x}{\partial \pmb x} = I xx=I ∂ A x ∂ x = A T \frac{\partial \pmb A \pmb x}{\partial \pmb x} = \pmb A^\mathrm{T} xAx=AT ∂ x T A ∂ x = A \frac{ \partial \pmb x^\mathrm{T} A}{\partial \pmb x} = \pmb A xxTA=A

2 什么是回归分析?

回归分析这是一个来自统计学的概念。回归分析是指一种预测性的建模技术,主要是研究自变量和因变量的关系。通常使用线/曲线来拟合数据点,然后研究如何使曲线到数据点的距离差异最小。如果使用直线进行拟合,则为线性回归(一元线性回归、多元线性回归);如果是对非线性关系进行建模,则为多项式回归。
例如,存在以下数据(左图)。然后我们拟合一条曲线 f ( x ) f(x) f(x)右图,回归分析的目标就是要拟合一条曲线,让图中红色线段加起来的和最小。

3 线性回归

线性回归(Linear Regression)是回归分析的一种,是机器学习和统计学中最基础和最广泛应
用的模型,是一种对自变量和因变量之间关系进行建模的回归分析.自变量数量为1时称为简单回归,自变量数量大于1时称为多元回归。

  1. 假设目标值(因变量)与特征值(自变量)之间线性相关,即满足一个多元一次方程,如: f ( x ) = ( w 1 x 1 + … + w n x n + b ) f(x)=(w_1x_1+…+w_nx_n+b) f(x)=(w1x1++wnxn+b)

  2. 然后构建损失函数。

  3. 最后通过令损失函数最小来确定参数。(最关键的一步)

3.1 一元线性回归

一元线性回归(一元:只有一个未知自变量;线性:自变量 x x x的次数都为1次)。

f ( x ) = w x + b \begin{align} f(x)=wx+b \end{align} f(x)=wx+b
N N N组数据,自变量 x = ( x ( 1 ) , x ( 2 ) , … , x ( n ) ) x=(x^{(1)},x^{(2)},…,x^{(n)}) x=(x(1),x(2),,x(n)),因变量 y = ( y ( 1 ) , y ( 2 ) , … , y ( n ) ) y=(y^{(1)},y^{(2)},…,y^{(n)}) y=(y(1),y(2),,y(n)),则训练集 D = { ( x ( n ) , y ( n ) ) } n = 1 N \mathcal{D}=\{(x^{(n)} ,y^{(n)})\}_{n=1}^N D={(x(n),y(n))}n=1N,然后我们假设它们之间的关系是:
y ^ ( n ) = f ( x ) = w x ( n ) + b \begin{align}\hat y^{(n)}=f(x)=wx^{(n)}+b \end{align} y^(n)=f(x)=wx(n)+b
那么线性回归的目标就是如何让 f ( x ) f(x) f(x) y y y之间的差异最小,换句话说就是 a a a b b b取什么值的时候 f ( x ) f(x) f(x) y y y最接近。
这里我们得先解决另一个问题,就是如何衡量 f ( x ) f(x) f(x) y y y之间的差异。在回归问题中,均方误差是回归任务中最常用的性能度量。记 J ( a , b ) J(a,b) J(a,b) f ( x ) f(x) f(x) y y y之间的差异,即预测值和真实值的差异:

给定一组包含N个训练样本的数据集 D = { ( x ( n ) , y ( n ) ) } n = 1 N \mathcal{D}=\{(x^{(n)} ,y^{(n)})\}_{n=1}^N D={(x(n),y(n))}n=1N,则假设函数为:

L ( w , b ) = ∑ i = 1 N ( f ( x ( n ) ) − y ( n ) ) 2 = ( w x ( n ) + b − y ( n ) ) 2 \begin{align} \mathcal{L}(w,b) &=\sum_{i=1}^N \left(f(x^{(n)}) - y^{(n)}\right)^2 \\ &=(wx^{(n)}+b-y^{(n)})^2 \end{align} L(w,b)=i=1N(f(x(n))y(n))2=(wx(n)+by(n))2
这里称 L ( w , b ) \mathcal{L}(w,b) L(w,b)为损失函数,明显可以看出 L ( w , b ) \mathcal{L}(w,b) L(w,b)是二次函数,所以有最小值。当 L ( w , b ) \mathcal{L}(w,b) L(w,b)取最小值的时候, f ( x ) f(x) f(x) y y y的差异最小,然后我们可以通过最小化 L ( w , b ) \mathcal{L}(w,b) L(w,b)来确定 a a a b b b的值。求解该问题有很多方法,首先可以想到求偏导。

3.2 多元线性回归

现实中的数据可能是比较复杂的,自变量也可能不止一个,例如,影响房屋价格也很可能不止房屋面积一个因素,可能还有是否在地铁附近,房间数,层数,建筑年代等诸多因素,表示为 x = ( x 1 , x 2 , . . . , x D ) x=(x_1,x_2,...,x_D) x=(x1,x2,...,xD)。不过,这些因素对房价影响的权重是不同的,因此,我们可以使用多个权重 w = ( w 1 , w 2 , . . . , w D ) w=(w_1,w_2,...,w_D) w=(w1,w2,...,wD)来表示多个因素与房屋价格的关系:
y ^ = f ( x ) = ( w 1 x 1 + … + w D x D + b ) \begin{align} \hat{y}=f(x)&=(w_1x_1+…+w_Dx_D+b)\\ \end{align} y^=f(x)=(w1x1++wDxD+b)
给定一组包含 N N N个训练样本的数据集 D = { ( x ( n ) , y ( n ) ) } n = 1 N \mathcal{D}=\{(x^{(n)} ,y^{(n)})\}_{n=1}^N D={(x(n),y(n))}n=1N,则假设函数为:
y ^ ( n ) = f ( x ) = ( w 1 x 1 ( n ) + w 2 x 2 ( n ) + … + w D x D ( n ) + b ) = ∑ d = 1 D w d x d ( n ) + b \begin{align} \hat{y}^{(n)}=f(x) &=(w_1x_1^{(n)}+w_2x_2^{(n)}+…+w_Dx_D^{(n)}+b) \\ &= \sum_{d=1}^Dw_dx_d^{(n)}+b \end{align} y^(n)=f(x)=(w1x1(n)+w2x2(n)++wDxD(n)+b)=d=1Dwdxd(n)+b
写成向量形式:

y ^ ( n ) = f ( x ( n ) ) = w x ( n ) + b \begin{align} \hat{\pmb{y}}^{(n)}=f( \pmb{x}^{(n)})=\pmb{w} \pmb{x}^{(n)}+b \end{align} y^(n)=f(x(n))=wx(n)+b

为表示方便,重新定义向量 w : = w ⨁ b = [ w 1 w 2 ⋮ w D b ] \pmb w:= \pmb w \bigoplus b=\begin{bmatrix} w_{1} \\ w_{2} \\ {\vdots}\\ w_{D} \\ b \\ \end{bmatrix} w:=wb= w1w2wDb x : = x ⨁ 1 = [ x 1 x 2 ⋮ x D 1 ] \pmb x:=\pmb x \bigoplus 1=\begin{bmatrix} x_{1} \\ x_{2} \\ {\vdots}\\ x_{D} \\ 1 \\ \end{bmatrix} x:=x1= x1x2xD1 ,写成增广向量的形式:

y ^ = f ( x ) = w T x \begin{align} \hat{\pmb{y}}=f( \pmb{x})=\pmb{w ^\mathrm T} \pmb{x} \end{align} y^=f(x)=wTx

尽管公式 ( 7 ) (7) (7)可以描述变量之间的关系,但是一般机器学习领域更喜欢使用公式 ( 9 ) (9) (9)这样的向量乘法的形式。这不仅因为这样表示起来更简单,也是因为现代计算机对向量计算做了大量优化,无论是CPU还是GPU都喜欢向量计算,并行地处理数据,可以得到成百上千倍的加速比。需要注意的是,公式中不加粗的表示标量,加粗的表示向量或矩阵。

比一元线性回归更为复杂的是,多元线性回归组成的不是直线,是一个多维空间中的超平面,数据点散落在超平面的两侧。多元线性回归的损失函数仍然使用预测值-真实值的平方来计算,损失函数为所有样本点距离超平面的距离之和:

L ( w , b ) = ∑ n = 1 N ( f ( x ( n ) ) − y ( n ) ) 2 = ∑ n = 1 N ( w 1 x 1 ( n ) + w 2 x 2 ( n ) + + … + w D x D ( n ) + b − y ( n ) ) 2 = ∑ n = 1 N ( ( ∑ d = 1 D w d x d ( n ) + b ) − y ( n ) ) 2    ⟺    1 2 ∑ n = 1 N ( ( ∑ d = 1 D w d x d ( n ) + b ) − y ( n ) ) 2 \begin{align} \mathcal{L}(w,b) &=\sum_{n=1}^N \left(f(x^{(n)}) - y^{(n)}\right)^2 \\ &=\sum_{n=1}^N(w_1x_1^{(n)}+w_2x_2^{(n)}++…+w_Dx_D^{(n)}+b -y^{(n)})^2\\ &=\sum_{n=1}^N \left( \left( \sum_{d=1}^Dw_dx_d^{(n)}+b \right)-y^{(n)} \right)^2\\ &\iff \textcolor{red}{\frac{1}{2} }\sum_{n=1}^N \left( \left( \sum_{d=1}^Dw_dx_d^{(n)}+b \right)-y^{(n)} \right)^2\\ \end{align} L(w,b)=n=1N(f(x(n))y(n))2=n=1N(w1x1(n)+w2x2(n)+++wDxD(n)+by(n))2=n=1N((d=1Dwdxd(n)+b)y(n))221n=1N((d=1Dwdxd(n)+b)y(n))2

写成矩阵形式,令 X = [ x 1 ( 1 ) x 1 ( 2 ) … x 1 ( N ) x 2 ( 1 ) x 2 ( 2 ) … x 2 ( N ) ⋮ ⋮ ⋮ ⋮ x D ( 1 ) x D ( 2 ) … x D ( N ) 1 1 … 1 ] \pmb X=\begin{bmatrix} x_{1}^{(1)} & x_{1}^{(2)} & {\dots} &x_{1}^{(N)}\\ x_{2}^{(1)} & x_{2}^{(2)} & {\dots} &x_{2}^{(N)}\\ {\vdots} & {\vdots} & {\vdots} & {\vdots}\\ x_{D}^{(1)} &x_{D}^{(2)} & {\dots}&x_{D}^{(N)} \\ 1 & 1 & {\dots} & 1\\ \end{bmatrix} X= x1(1)x2(1)xD(1)1x1(2)x2(2)xD(2)1x1(N)x2(N)xD(N)1 X \pmb X X的每一列代表一个样本, y = [ y ( 1 ) y ( 2 ) ⋮ y ( N ) ] \pmb y=\begin{bmatrix} y^{(1)}\\y^{(2)}\\ \vdots \\y^{(N)}\end{bmatrix} y= y(1)y(2)y(N) 则写成矩阵形式:
L ( w ) = 1 2 ( X T w − y ) T ( X T w − y ) = 1 2 ∣ ∣ X T w − y ∣ ∣ 2 \begin{align} \mathcal{L}(w) &=\frac{1}{2} ( \pmb X^\mathrm{T} \pmb w- \pmb y)^\mathrm{T}( \pmb X^\mathrm{T} \pmb w- \pmb y)\\ &=\frac{1}{2} || \pmb X^\mathrm{T} \pmb w-\pmb y ||^2 \end{align} L(w)=21(XTwy)T(XTwy)=21∣∣XTwy2
目标是最小化损失函数式(15),这是一个无约束多元函数求极值问题,有梯度下降、牛顿法、共轭梯度法,智能优化算法(粒子群算法等、遗传算法、鲸鱼算法等),但首先想到的解法是求导令 ∂ L ( w ) ∂ w = 0 \frac{\partial \mathcal L(w)}{\partial w}=0 wL(w)=0

∂ ∂ w L ( w ) = X ( X T w − y ) = X X T w − X y = 0 X X T w = X y w = ( X X T ) − 1 X y \begin{align} \frac{\partial}{\partial w} \mathcal L(w) &=\pmb X (\pmb X^\mathrm{T} \pmb w-\pmb y)\\ &=\pmb X \pmb X^\mathrm{T}\pmb w - \pmb X\pmb y = 0 \\ \pmb X \pmb X^\mathrm{T}\pmb w&=\pmb X\pmb y\\ \pmb w&= (\pmb X \pmb X^\mathrm{T})^{-1}\pmb X \pmb y \end{align} wL(w)XXTww=X(XTwy)=XXTwXy=0=Xy=(XXT)1Xy

以上求偏导令=0的解法,就是最小二乘法,这里的二乘表示用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”);“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小,是minimize最小化。

4 多项式回归

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

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

相关文章

OpenHarmony社区运营报告(2023年6月)

本月快讯 • 6月12日,以“OpenHarmony共建开放,共享未来”为主题的2023开放原子全球开源峰会OpenAtom OpenHarmony(以下简称“OpenHarmony”)分论坛在北京北人亦创国际会展中心第一报告厅圆满落幕,根深叶茂&#xff0c…

【Java】面向对象编程 面向对象基础

一、面向对象基础 面向对象编程,是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方法。 现实世界中,我们定义了“人”这种抽象概念,而具体的人则是“小明”、“小红”、“小军”等一个个具体的人。所以,…

uni-app 从零开始第三章:底部 tabBar

pages.json 页面路由 | uni-app官网 一、新建 home页面 找到pages目录,新增一个home的页面,勾选上同时新建文件夹 新建完成后,pages.json 中 会自动添加上刚刚新建的文件信息 二、新增tabBar数据 在 pages.json中新增以下代码 "tabB…

基于pyqt5实现一款简单的界面软件(radioButton、comboBox、pushButton、图片显示)

pyqt5使用记录涉及pyqt界面控件的基本介绍,使用designer设计界面ui,并将其转化为py代码。关于界面主要实现radioButton的互斥选中事件、comboBox的选中事件(依据list添加item)、pushButton的单击事件、槽函数自动绑定、图片的拖入…

嵌入式开发之上位机工业风界面实现

在做测控类的嵌入式系统开发时,一个精美的上位机控制软件UI是可以为系统增色不少,一般会采用组态软件来开发,我们来看看下面的界面 是不是非常直观有工业质感,还可以根据实时数据进行动态的显示和动画效果,那这些炫酷的…

自定义切换整行上下位置快捷键

自定义切换整行上下位置快捷键 在File菜单中选择Settings选项,搜索move li 先删掉原来的快捷键 再添加你要设置的快捷键 确认就可以了。

word转Markdown文件的几个方法

word转Markdown文件的几个方法 1、 安装writage 软件,但是writage 需要收费了。 如果只是markdown文本编辑,可以直接安装typora来。 2. 利用Pandoc软件来转换word文件到markdown文件 注意doc文件需要保存docx文件格式才可以使用下面命令行 pandoc &q…

C++多线程学习(十六、STL算法中的并行版本,sequenced_policy)

目录 sequenced_policy 使用代码: 准备 代码 结果: sequenced_policy 增加参数:sequenced_policy提供相应并行版算法 execution::seq并行算法执行可以不并行化execution::par并行算法执行可以并行化execution::par_unseq并行算法执行的可以并行以…

C#基础学习_泛型集合List<T>

C#基础学习_泛型集合List 为什么要使用集合? 数组元素个数是固定的,数组一旦定义,就无法改变元素总数。如果需求变化,则必须修改源码。 如果初始化元素总数非常大,则会造成浪费。 集合的特点: 根据需要动态增加元素个数,没有限制 List泛型集合的存储结构,与数组类似,…

Ceres-Solver 官方文档

Ceres-Solver 官方文档 Non-linear Least Squares1. Introduction2. Hello World!3. Derivatives3.1 Numeric Derivatives3.2 Analytic Derivatives3.3 More About Derivatives 4. Powell’s Function5. Curve Fitting6. Robust Curve Fitting7. Bundle Adjustment8. Other Exa…

hive on spark小文件问题【hive.merge.sparkfiles参数不生效】

hive on spark小文件问题【hive.merge.sparkfiles参数不生效】 我也是查看了我们目前集群的版本是spark是3.2.3版本 hive是3.1.3版本,都是比较新的版本,正常是支持这个参数的 在测试环境中,如果在sql中不使用group by函数其实可以可以生效的…

响应式编程实战(08)-WebFlux,使用注解编程模式构建异步非阻塞服务

1 引言 明确了 Spring 家族中 WebFlux 组件诞生的背景和意义。作为一款新型的 Web 服务开发组件: 充分考虑了与原有 Spring MVC 在开发模式上的兼容性,开发人员仍然可以使用基于注解的编程方式来创建响应式 Web 服务WebFlux 也引入了基于函数式编程的全…

Linux下有名管道mkfifo使用

Linux下实现进程通信的方式有很多种,今天要说的是有名管道,有名管道比命名管道的优势是可以在任何进程之间传递数据。有名管道通信是依赖于管道文件这种特殊类型文件来进行的。 目录 1.mkfifo命令 2.mkfifo库函数 1.mkfifo命令 mkfifo命令可以创建管…

HuilderX 运行到 MUMU模拟器

1.网易官网下载MuMu模拟器,一定要打开MuMu模拟器; MuMu模拟器官方下载https://mumu.163.com/ 2.到MUMU模拟器的安装目录,找到adb.exe在的目录下,复制其路径; 举例 :D:/Program Files/MuMuPlayer-12.0/sh…

CSPM(项目管理专业人员能力评价)和软考有什么区别?

一、国标项目管理(项目管理专业人员能力评级)证书是什么? 《项目管理专业人员能力评价要求》(GB/T 41831-2022)是2022年10月12日开始实施的一项中国国家标准,归口于全国项目管理标准化技术委员会。 《项目…

一种环肽52661-98-0,cyclo(Gly-Ser),环(甘氨酰-L-丝氨酰),氨基酸中间体

资料编辑|陕西新研博美生物科技有限公司小编MISSwu cyclo(Gly-Ser)(CAS号:52661-98-0)一种环肽,一般作为氨基酸中间体,含有甘氨酰和丝氨酰,Ser Serine 丝氨酸,也称β羟基丙氨酸,丝氨…

促进协作、提高生产力:育碧选择Perforce Helix Core的原因

Perforce Helix Core成为育碧(Ubisoft)的主要源代码控制工具已经超过六年了,被团队中的程序员和美术人员在大部分项目中使用。在育碧蒙特利尔工作室,有超过1,200名的开发人员使用Perforce Helix Core来储存源代码和数字资产&#…

Appium xpath定位

xpath应该是最准确的定位方式,不管你有没有id、class或者其他的元素,uiautomator总是可以识别出xpath,因为手机APP的控件布局类似于HTML的树形结构。 如右图所示 xpath很长,显然不可能人手动来对其进行编写,最好的就是…

算法竞赛备赛之经典基础算法训练提升,暑期集训营培训

目录 1.排序 1.1.快速排序 1.2.归并排序 2.二分 2.1.整数 2.2.浮点数 3.高精度 3.1.高精度加法 3.2.高精度减法 3.3.高精度乘法 3.4.高精度除法 4.前缀和 5.差分 6.双指针算法 7.位运算 8.离散化 8.1.unique函数实现 9.区间合并 1.排序 1.1.快速排序 快速排…

vue 运行时正常,打包却报错

解决方法:删除vue-cli 自带的压缩 plugin:OptimizeCssnanoPlugin 具体操作:找到vue.config.再添加如下删除配置