机器学习一:线性回归

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

向量关于向量的偏导数 对于 𝑀 维向量 𝒙 ∈ ℝ𝑀 和函数 𝒚 = 𝑓(𝒙) ∈ ℝ𝑁,则
𝑓(𝒙)关于𝒙的偏导数(分母布局)为

在这里插入图片描述

向量函数及其导数
∂ 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 多项式回归

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法与数据结构】28、LeetCode实现strStr函数

文章目录 一、题目二、暴力穷解法三、KMP算法四、Sunday算法五、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、暴力穷解法 思路分析:首先判断字符串是否合法,然后利用for循环&#xff…

2023年全国节能宣传“节能低碳,你我同行”主题有奖竞答

2023年的7月10日至16日是第33个全国节能宣传周,主题是“节能降碳,你我同行”。 为践行低碳生活,切实做到节能降碳,各大企事业单位纷纷举办“节能低碳,你我同行”主题2023年全国节能宣传有奖竞答。 有奖知识竞答活动方…

Prometheus实现自定义指标监控

1、Prometheus实现自定义指标监控 前面我们已经通过 PrometheusGrafana 实现了监控,可以在 Grafana 上看到对应的 SpringBoot 应用信息了, 通过这些信息我们可以对 SpringBoot 应用有更全面的监控。 但是如果我们需要对一些业务指标做监控,…

【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B

【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B 简介环境配置环境搭建依赖安装 代码及模型权重拉取拉取 Chinese-LLaMA-Alpaca拉取 llama-30b-hf 模型权重及代码拉取 chinese-llama-lora-33b 模型权重及代码 合并模型权重先转换 pth 类型的模型权重&…

只出现一次的数字

题目链接 只出现一次的数字 题目描述 注意点 1 < nums.length < 30000-30000 < nums[i] < 30000除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次 解答思路 最初想到使用一种数据结构将元素存储起来&#xff0c;但是空间复杂度为O(n)&#xff0…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册6

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…

大语言模型的百家齐放

基础语言模型 概念 基础语言模型是指只在大规模文本语料中进行了预训练的模型&#xff0c;未经过指令和下游任务微调、以及人类反馈等任何对齐优化。 如何理解 只包含纯粹的语言表示能力,没有指导性或特定目标。 只在大量无标注文本上进行无监督预训练,用于学习语言表示。 …

git 新建分支,切换分支,上传到远程分支

git 在使用的过程中&#xff0c;有的时候我们需要更换一个分支才存贮数据&#xff0c;作为版本的一个迭代或者是阶段性成果的一个里程碑。 如何来做操作呢&#xff1f; 在git中&#xff0c;可利用checkout命令转换分支&#xff0c;该命令的作用就是切换分支或恢复工作树文件&a…

【微信小程序开发】第 9 课 - 小程序的协同工作和发布

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、协同工作 1.1、了解权限管理需求 1.2、了解项目成员的组织结构 1.3、小程序的开发流程 2、小程序成员管理 2.1、成员管…

Nftables栈溢出漏洞(CVE-2022-1015)复现

背景介绍 Nftables Nftables 是一个基于内核的包过滤框架&#xff0c;用于 Linux 操作系统中的网络安全和防火墙功能。nftables 的设计目标是提供一种更简单、更灵活和更高效的方式来管理网络数据包的流量。 钩子点&#xff08;Hook Point&#xff09; 钩子点的作用是拦截数…

DMDSC共享存储集群启动、关闭及介绍

DMDSC介绍 DM 共享存储数据库集群&#xff08;DMDSC&#xff09;。DM共享存储数据库集群&#xff0c;允许多个数据库实例同时访问、操作同一数据库&#xff0c;具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入&#xff0c;某一个数据库实例故障后…

使用GeoPandas进行地理空间数据可视化

大家好&#xff0c;在当今数据驱动的世界中&#xff0c;将信息可视化到地图上可以提供有价值的见解&#xff0c;帮助有效地传达复杂的模式。GeoPandas是一个建立在pandas和shapely之上的Python库&#xff0c;使用户能够通过将地理空间数据与各种变量合并来创建令人惊叹的地图。…

深度学习(23)——YOLO系列(2)

深度学习&#xff08;23&#xff09;——YOLO系列&#xff08;2&#xff09; 文章目录 深度学习&#xff08;23&#xff09;——YOLO系列&#xff08;2&#xff09;1. model2. dataset3. utils4. test/detect5. detect全过程 今天先写YOLO v3的代码&#xff0c;后面再出v5&…

C语言:猜凶手

题目&#xff1a; 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了真话&#xff0c;1个人说的是假话。…

2023,中国电商重回元老时代

中国的历史上不缺“太上皇”&#xff0c;但“太上皇”再度站到台前的很少。公元1457年&#xff0c;被囚禁在南宫的“太上皇”朱祁镇复位&#xff0c;上演了中国历史上少见的南宫复辟。而危机时刻被推举为皇帝的朱祁钰&#xff0c;后来的庙号是代宗&#xff0c;阴阳怪气十足。 …

Spark Sql 4/5

4. 用户自定义函数 通过spark.udf功能用户可以自定义函数。 4.1用户自定义UDF函数 Shellscala> val df spark.read.json("examples/src/main/resources/people.json")df: org.apache.spark.sql.DataFrame [age: bigint, name: string]​scala> df.show()--…

分布式运用——监控平台 Zabbix

分布式运用——监控平台 Zabbix 一、监控平台种类二、我们今天介绍Linux操作系统的传统监控平台——zabbix 6.0版本1.zabbix 是什么&#xff1f;2.**zabbix 监控原理&#xff1a;**3.Zabbix 6.0 新特性&#xff1a;4. Zabbix 6.0 功能组件&#xff1a;5.数据库6.Web 界面7.Zabb…

.NetCore gRpc 客户端与服务端的单工通信Demo

文章目录 .NetCore gRpc 客户端与服务端的单工通信Demo服务端方式一方式二 客户端proto协议文件syntax "proto3";import "google/protobuf/empty.proto";serviceproto3与.netCore 的类型对应日期和时间可为 null 的类型字节小数为 Protobuf 创建自定义 de…

Rust in Action笔记 第八章 网络

P253的图展示了网络各层用到的协议Box<dyn std::error::Error>表示一个指针指向的实现了标准错误库的类型&#xff0c;dyn表明这是一个特征对象&#xff08;trait object&#xff09;&#xff0c;是rust里多态的一种实现方式&#xff1b;特征对象和模板对象&#xff08;g…

物化视图功能验证

物化视图(Materialized View)和视图(View)类似&#xff0c;也是一个视图名字对应一个SQL查询查询语句。不同之处在于&#xff1a;物化视图定义时使用了额外的关键字materialized&#xff0c; 它把结果集保存在起来&#xff0c;查询的时候直接读取保存的结果集&#xff0c;而不必…