机器学习一:线性回归

news2024/11/28 0:57:16

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 多项式回归

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

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

相关文章

C#加载 ToolBlock简单示例

可以用visionpro的VPPVersion.exe 工具查看文件格式。 在安装路径最后一个 官方示例文件路径 简单实例 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; …

Spark学习(二)---Spark运行架构和核心概念

1.Spark运行架构 Spark框架的核心是一个计算引擎,它采用了master-slave的结构。 图形中的 Driver 表示 master, 负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。 1.1 核心组件 由此可以得出&#xf…

接口(Interface)

接口 基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。 class 类名 implements 接口{自己属性;自己方法;必须实现的接口的抽象方法; // 只需要重写抽象方法即可 }接口中的方法…

硬盘接口损坏换电路板

1.有一块西数1T的蓝盘,SATA接口L形塑料掰断了,顾换块板解决接触不良问题 2.买板子,看好板子上印刷的版号,2060-771829-005 REV A,tb上买一片通型号的,十几块 3.用烙铁焊下原来烂板的8个脚的BIOS芯片&…

java.lang.noclassdeffounderror: com/fasterxml/jackson/core/util/jacksonfeature

建议直接查看我的原博 1.问题 环境&#xff1a; springboot2.3.10.RELEASE jdk1.8 elasticsearch8.8.1 根据官网&#xff0c;使用es时pom文件需要引入json工具&#xff0c;这里使用了jackson-databind&#xff1a; <dependency><groupId>co.elastic.clients…

栈(单位数计算器)

方法&#xff1a; 判断优先级 判断字符还是数字 计算方法 查看栈顶元素 思路 个位数计算器的代码&#xff1a; package calculator;public class Calculator {public static void main(String[] args) {String exp "78*9-2";Stack num new Stack(10);Stack op…

【CSS】浮动

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;HTMLCSS &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 浮动浮动的规则浮动的案例浮动的清除 浮动 float属性可以指定一个元素应沿其容器的…

Linux中配置sudo用户访问权限

文章目录 一、如何在 Linux 中配置 sudo 的访问权限1.1、添加一个Linux普通用户有 sudo 权限1.2、测试普通用户的 sudo 权限1.3、添加多个Linux普通用户有 sudo 权限1.4、验证sudo 权限 一、如何在 Linux 中配置 sudo 的访问权限 1.1、添加一个Linux普通用户有 sudo 权限 [ro…

部分抓包测试

linux下使用tcpdump抓包&#xff0c;生成pcap格式文件&#xff0c;利用wireshark打开&#xff0c;进行数据包分析 tcpdump常用选项&#xff1a; -a&#xff1a;尝试将网络和广播地址转换成名称&#xff1b; -c<数据包数目>&#xff1a;收到指定的数据包数目后&#xff0…

又一款国产AI聊天工具360智脑

介绍 360智脑是一个基于深度学习技术的大型语言模型&#xff0c;能够进行自然语言理解和生成。它拥有海量的语料库和强大的计算能力&#xff0c;可以应用于智能客服、智能问答、机器翻译等多种场景&#xff0c;为用户提供高效准确的服务和支持。 功能测试 写代码 功能齐全 …

使用Flask Web创建一个调用ChatGPT API的网页--简单示例(Windows环境下)

前提&#xff1a;你应该要有一个能正常使用chatGPT的openAI账号&#xff1b;即你已经成功注册了chatGPT&#xff0c;并能正常使用。 文章目录 一、主要组成部分二、示例代码2.1 工程结构&#xff1a;2.2 说明2.3 依赖环境2.4 app.py代码2.5 index.html代码 三、搭建环境步骤 一…

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()--…

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输&#xff08;OT&#xff09;的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

wails+vue3实现一个简单Monitor

介绍 本来呢最近是在学Rust,顺便看看Tauri相关的内容.然后刷评论区突然看到有人提到go生态中也有类似的框架—Wails,所以下午花了点时间来动手玩一下. 首先看一下最终的运行效果,前端样式懒得调整所以界面很丑只是实现一下功能 开始 这次的目标就是做一个功能类似于nvidia-s…

C#基础学习_字段与属性的比较

C#基础学习_字段与属性的比较 字段: 字段主要是为类的内部做数据交互使用,字段一般是private修饰; 字段可以赋值也可以读取; 当需要为外部提供数据的时候,请将字段封装为属性,而不是使用公有字段,这是面对对象编程所提倡的。 //字段:学号private int studentID;属性: …

语义分割大模型RSPrompter论文阅读

论文链接 RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model 开源代码链接 RSPrompter 论文阅读 摘要 Abstract—Leveraging vast training data (SA-1B), the foundation Segment Anything Model (SAM) propo…

vue动态组件component详解

附上代码 <template><div class"export-full-data-manage"><div class"main"><div class"left"><ul><li v-for"item in menus" :key"item.value" :class"[item.valuecurrent?curre…

【UE5 Cesium】11-Cesium for Unreal 切换Dynamic Pawn为其它Pawn

前言 我们知道在Cesium for Unreal中默认使用的是DynamicPawn来浏览地图场景。DynamicPawn适用全球浏览&#xff0c;可以按自定义曲线进行飞行。但是DynamicPawn是使用的是地理参考坐标系&#xff0c;并不是标准的UE坐标系&#xff0c;当我们全球浏览结束后&#xff0c;可能需要…

2023年6月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩)发布!

飞瓜轻数发布2023年6月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。 飞…

工作是EXCEL的天下

文章目录 EXCEL单元格内的换行筛选某一列的重复值批量删除重复值以某一列为联结&#xff0c;合并两个表格中的内容 本篇博文记录了笔者在工作中常用的EXCEL操作方法&#xff0c;持续更新中…… EXCEL单元格内的换行 AltEnter 筛选某一列的重复值 选中需要查找重复值的一列→…