机器学习(1)——线性回归、线性分类与梯度下降

文章目录

  • 线性回归
  • 线性分类
    • 线性可分数据
    • 线性不可分数据
    • 逻辑回归
    • 支持向量机
  • 梯度下降
    • 批量梯度下降
    • 随机梯度下降
    • 批量随机梯度下降

线性回归

概述:

在一元线性回归中,我们假设目标变量y与特征变量x存在线性关系,模型表达式为:
y = W 0 + W 1 x 1 + W 2 x 2 + ⋯ + W n x n + ϵ y=W_0+W_1x_1+W_2x_2+\cdots+W_nx_n+\epsilon y=W0+W1x1+W2x2++Wnxn+ϵ
其中:

  • W 0 W_0 W0是截距(bias)
  • W 1 , W 2 , . . . , W n W_1,W_2,...,W_n W1,W2,...,Wn是回归系数(权重)
  • ε是噪声或误差项

对于多个样本的情况,可以将特征表示为矩阵X,目标值为向量y。在这种情况下,线性回归模型可以写作:
y ^ = X W \hat{y}=XW y^=XW
其中:

  • X是输入特征矩阵(包含所有样本)
  • W是权重向量
  • y ^ \hat{y} y^是模型的预测值向量

损失函数(MSE):

为了让模型拟合数据,通常我们会使用均方误差(MSE)作为损失函数,来度量模型的预测值 y ^ \hat{y} y^与实际值y之间的差异:
J ( W ) = 1 2 m ∑ i = 1 m ( y ^ i − y i ) 2 = 1 2 m ( X W − y ) T ( X W − y ) J(W)=\frac1{2m}\sum_{i=1}^m(\hat{y}_i-y_i)^2=\frac1{2m}(XW-y)^T(XW-y) J(W)=2m1i=1m(y^iyi)2=2m1(XWy)T(XWy)
其中m是样本数

线性回归的闭式解: 指通过直接求解方程组,得到回归模型的参数(即权重向量)的解析解,而不需要通过迭代的优化算法(如梯度下降)来找到最优解

闭式解的推导:

最小化损失函数 J ( W ) J(W) J(W)以找到最优权重W。通过对 W W W求导并让导数为0,可以得到线性回归的解析解。首先对损失函数求导:
∂ J ( W ) ∂ W = 1 m X T ( X W − y ) \frac{\partial J(W)}{\partial W}=\frac1mX^T(XW-y) WJ(W)=m1XT(XWy)
将导数设置为0,求解 W W W
X T ( X W − y ) = 0 X T X W = X T y \begin{gathered} X^T(XW-y)=0 \\ X^TXW=X^Ty \end{gathered} XT(XWy)=0XTXW=XTy
可以通过矩阵求逆的方式得到 W W W
W = ( X T X ) − 1 X T y W=(X^TX)^{-1}X^Ty W=(XTX)1XTy
这就是线性回归的闭式解公式

闭式解的核心思想:

  • 直接求解:通过解析方法一次性求出最优权重 W W W,不需要像梯度下降一样逐步优化
  • 线性代数运行:通过矩阵转置、乘法和求逆等线性代数运算实现
  • 适用场景:对于小规模数据集、闭式解可以快速得到结果。然而当数据量非常大时,计算 X T X X^TX XTX的逆矩阵可能非常耗时,因此在大数据集上通常采用梯度下降等数据优化方法

优点与缺点:

  • 优点:直接得到最优解,计算速度快(适合小数据集
  • 缺点:对于高维度数据集,矩阵求逆的计算复杂度较高 O ( n 3 ) O(n^3) O(n3),在数据量过大时不适用

线性分类

概述: 线性分类器是基于线性决策边界进行分类的模型,形式上它会学到一个权重向量W和一个偏置b,其决策规则可以表示为:
f ( x ) = w T x + b f(\mathbf{x})=\mathbf{w}^T\mathbf{x}+b f(x)=wTx+b
在这种情况下,分类是根据f(X)的符号来进行的:

  • 如果f(x) > 0,则将数据点分类为正类
  • 否则为负类

这种方式只输出一个硬分类的结果,没有给出分类的概率

线性可分数据

概述: 指的是数据集中的不同类别可以通过一条直线(在二维空间中)或一个超平面(在高维空间中)完全分开,没有任何重叠或错误分类

特点:

  • 可以找到一个线性决策边界(如一条直线或一个超平面),使得数据集中所有点都可以准确分到正确的类别
  • 这种类比的数据适合使用线性分类器,如感知器、线性支持向量机(SVM)等

二维平面中的例子:

类别 A: (蓝色点)   类别 B: (红色点)蓝   蓝   蓝   蓝(直线)
红   红   红   红

在这种情况下,直线可以完全分开这两类点,没有任何交错

线性不可分数据

概述: 是指数据集中不同类别的点不能通过一条直线(或超平面)来完全分开,一些数据会落在错误的边界一侧,导致无法完美分类

特点:

  • 没有单一的线性边界可以准确分隔数据类别
  • 线性分类器在这种情况下表现不佳,因为它们依赖于线性分界线
  • 处理线性不可分数据的常用方法包括使用非线性模型(如核化支持向量机、决策树)或者对特征进行转换,,使数据在更高维空间中线性可分

二维平面中的例子:

类别 A: (蓝色点)   类别 B: (红色点)蓝   红   蓝   红
红   蓝   红   蓝

在这种情况下,无论如何放置一条直线,总会有一部分点被错误分类。

解决线性不可分问题:

  • 引入非线性分类器:如使用核支持向量机(SVM),将数据映射到高维空间,使其在高维空间中线性可分。
  • 增加特征:通过添加多项式特征或交互特征,可以在输入空间中创建一个更复杂的模型。
  • 使用核技巧 (Kernel Trick):这是 SVM 的一个重要特性,通过核函数将低维数据映射到高维空间,使原本线性不可分的数据在高维空间中变得线性可分。

逻辑回归

概述: 是一种用于二分类问题的线性模型,尽管名字里有回归,它实际上用于分类任务。可以说是线性分类的一种特例,但它采用了概率的方式进行分类决策。

核心思想:

逻辑回归的目标是通过学习到的模型预测某个输入属于某个类别的概率。其基本形式是将线性回归的输出通过Sigmoid函数转换为一个介于0到1之间的概率值

  • 线性部分:给定一个输入向量X和模型参数W,线性部分的输出为:
    z = W T X + b z=W^TX+b z=WTX+b
    这个W是权重向量,b是偏置

  • Sigmoid函数:将线性输出z转换为概率值p:
    p = 1 1 + e − z p=\frac1{1+e^{-z}} p=1+ez1
    这个p表示预测结果为正类的概率

  • 损失函数:逻辑回归的损失函数通常是交叉熵损失,用于评估模型预测的概率分布和实际标签之间的差异:
    J ( W ) = − 1 m ∑ i = 1 m [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] J(W)=-\frac1m\sum_{i=1}^m\left[y_i\log(\hat{y}_i)+(1-y_i)\log(1-\hat{y}_i)\right] J(W)=m1i=1m[yilog(y^i)+(1yi)log(1y^i)]
    其中, y ^ i \hat{y}_i y^i是第i个样本的预测概率, y i y_i yi是实际标签,m是样本数

  • Logistic回归的梯度公式:
    ∇ L ( W ) = X T ( sigmoid ( X W ) − y ) \nabla L(W)=X^T(\text{sigmoid}(XW)-y) L(W)=XT(sigmoid(XW)y)

训练逻辑回归的过程: 通过最小化损失函数的值,调整权重W和偏置b。最常用的优化算法是梯度下降,其中包括不同的变体。

支持向量机

概述: Support Vector Machine是一种更为强大的分类算法,特别适合于线性不可分的数据集。SVM的目标是在特征空间中找到一个最优的决策边界(超平面),并且它有一个非常独特的特点:最大化分类边界的间隔

原理:

  • 超平面:SVM在特征空间中寻找一个超平面,将数据点分类。对于线性可分数据,超平面的方程是:
    w T x + b = 0 w^Tx+b=0 wTx+b=0

  • 最大化间隔:SVM不仅寻找一个可以分开数据的超平面,还要找到那个离两类数据点最远的超平面,确保间隔最大化。这被称为最大化分类边界的间隔(Margin)。这样可以增强模型的鲁棒性,减少过拟合

  • 支持向量:距离决策边界最近的那些数据点被称为支持向量。这些点对决策边界有最重要的影响

损失函数:

  • 合页损失函数(Hinge Loss):是用于分类函数的损失函数,用来惩罚错误分类或分类边界附件的样本
    L ( y i , f ( x i ) ) = max ⁡ ( 0 , 1 − y i f ( x i ) ) L(y_i,f(x_i))=\max(0,1-y_if(x_i)) L(yi,f(xi))=max(0,1yif(xi))
    其中:

    • y i ∈ { − 1 , 1 } y_i \in \{-1, 1\} yi{1,1} 是样本i的真实标签(SVM通常处理二分类问题)
    • f ( x i ) = w ⊤ x i + b f(x_i)=\mathbf{w}^\top x_i+b f(xi)=wxi+b 是模型对样本 x i x_i xi的预测结果,表示超平面w和 x i x_i xi的内积再加上偏置b
    • 1 − y i f ( x i ) 1-y_if(x_i) 1yif(xi) 是衡量样本离决策边界的距离
    • 如果样本被正确分类且距离边界大于 1,损失为 0;否则,损失随着样本距离边界的接近或错误分类而增加。
  • 正则化项:SVM 模型的目标是找到能够最大化分类间距(margin)的超平面。因此,为了平衡分类误差和间距的最大化,损失函数通常还包括一个正则化项,用来控制模型的复杂度(即防止过拟合)。常见的正则化项是L2 正则化,其形式为:
    R ( w ) = 1 2 ∥ w ∥ 2 R(\mathbf{w})=\frac12\|\mathbf{w}\|^2 R(w)=21w2

  • 总损失函数:
    J ( w , b ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 m max ⁡ ( 0 , 1 − y i ( w ⊤ x i + b ) ) J(\mathbf{w},b)=\frac12\|\mathbf{w}\|^2+C\sum_{i=1}^m\max(0,1-y_i(\mathbf{w}^\top x_i+b)) J(w,b)=21w2+Ci=1mmax(0,1yi(wxi+b))

    • 其中:
      • C 是一个超参数,用于控制正则化项和合页损失之间的权衡。较大的 C 会减少分类错误,但可能导致过拟合;较小的 C 会增加容错性,防止过拟合。
      • m 是训练样本的数量。

梯度公式:

  • 对权重向量W的梯度:
    ∂ J ( w , b ) ∂ w = w − C ∑ i ∈ M y i x i \frac{\partial J(\mathbf{w},b)}{\partial\mathbf{w}}=\mathbf{w}-C\sum_{i\in\mathcal{M}}y_ix_i wJ(w,b)=wCiMyixi

  • 对偏置b的梯度:
    ∂ J ( w , b ) ∂ b = − C ∑ i ∈ M y i \frac{\partial J(\mathbf{w},b)}{\partial b}=-C\sum_{i\in\mathcal M}y_i bJ(w,b)=CiMyi

核技巧(kernel Trick): 当数据无法通过线性超平面分割时,SVM使用核技巧将数据映射到高维空间。常见的核函数包括:

  • 多项式核(Polynomial Kernel):将原始数据通过多项式映射到高维空间
  • 高斯核/径向基核(RBF Kernel):将数据点投影到无穷维空间,使得非线性数据在高维空间中变得线性可分

梯度下降

是一种用于优化线性回归和线性分类模型的迭代方法,通过计算损失函数的梯度,并沿着梯度的反方向迭代更新参数 W W W,逐步逼近最优解。梯度下降有三种主要变体:

  • 批量梯度下降(Batch Gradient Descent, BGD)
  • 随机梯度下降(Stochastic Gradient Descent, SGD)
  • 随机批量梯度下降(Mini-Batch Gradient Descent, MBGD)

样本数的对梯度公式的影响:

  • 如果不除以样本数,计算得到的梯度是累计的梯度,也就是每个样本的误差对权重的累积影响
  • 如果除以样本数,计算得到的是平均梯度,每次更新会使用平均误差对权重进行更新

参数更新公式:
W = W − η ∇ L ( W ) W=W-\eta\nabla L(W) W=WηL(W)
其中:

  • W W W是参数向量
  • η \eta η是学习率,控制更新的步长
  • 损失函数 J ( W ) J(W) J(W),在线性回归中有介绍,不同的模型可以选取不同的损失函数
  • ∇ L ( W ) \nabla L(W) L(W)是损失函数 J ( W ) J(W) J(W)对参数W的梯度(也就是求导,一般来说,如果损失函数是每个样本损失的平均值,也就是除以了样本数m,那损失的函数的梯度就不再需要除以样本数m了

批量梯度下降

概述: 在每次迭代中,使用整个训练集来计算梯度

过程:

  1. 首先,初始化模型参数
  2. 定义损失函数 J ( W ) J(W) J(W)
  3. 求解损失函数的导数,也就是损失函数的梯度函数 L ( W ) L(W) L(W)
  4. 根据上面给的参数更新公式更新W
  5. 重复迭代

优点:

  • 更新稳定,避免了由样本噪声引起的波动
  • 收敛到全局最优解,梯度方向更精确

缺点:

  • 计算成本高
  • 不适合大规模数据集

随机梯度下降

概述: 在每次迭代中,只使用一个样本计算梯度

SGD优缺点:

  • 优点:
    • 效率高:对于大规模数据集,SGD不需要每次都遍历整个数据集,它每次只对一个样本进行更新,使得计算更快
    • 内存友好:由于它只需要处理一个样本,内存消耗相对较低,适合处理大数据
    • 在线学习:SGD可以随着新数据的到来在线更新模型, 而不需要每次都从头开始训练
  • 缺点:
    • 噪声较大:由于每次更新使用的是单个样本,更新方向可能不是全局最优,因此SGD的收敛路径往往比较噪声且不稳定
    • 需要调整学习率:学习率 η \eta η的选择至关重要。如果学习率过大,参数更新可能会错过最优点;如果学习率过小,收敛速度将非常慢

学习率衰减策略:

为了解决噪声问题,常见的做法是在训练过程中逐渐减低学习率,这种方法可以在训练初期进行较大步长的更新,使得模型快速接近最优解,而在后期逐渐减小步长,使得模型在最优解附件收敛

学习率衰减公式的常见形式是:
KaTeX parse error: Expected 'EOF', got '_' at position 40: …1 + \text{decay_̲rate} \cdot t}
其中:

  • η 0 \eta_0 η0是初始学习率
  • t t t是当前的迭代次数
  • KaTeX parse error: Expected 'EOF', got '_' at position 12: \text{decay_̲rate}是学习率的衰减系数

伪代码:

初始化 W
for epoch in range(num_epochs):for i in range(m):  # m是样本数量随机选取一个样本 (x_i, y_i)计算该样本的梯度: grad = x_i * (x_i W - y_i)取负梯度方向更新参数: W = W - η * grad记录训练集或验证集的损失

批量随机梯度下降

概述: 每次使用一小批随机样本计算梯度

过程:

  1. 初始化权重W和b

  2. 选择批量大小B(比如32,64等

  3. 每次迭代时,从训练集中随机抽取一批样本,计算该批样本上的损失函数梯度,然后更新权重:
    W = W − η ∇ L ( W ) W=W-\eta\nabla L(W) W=WηL(W)
    其中 η \eta η是学习率, η ∇ L ( W ) \eta\nabla L(W) ηL(W)是对权重的梯度

优点:

  • 在每次更新时引入随机性,避免陷入局部最优解
  • 更新效率较高,能在大规模数据集上加速训练
  • 在批量计算中还可以利用并行化处理,进一步提高效率

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

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

相关文章

【hot100-java】【合并两个有序链表】

记忆中,两个指针合并即可。 建立哨兵节点dum /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { t…

Docker更换阿里容器镜像源

以Mac为例, 一、获取阿里容器镜像加速器地址 访问阿里云官网https://cn.aliyun.com/ 登录阿里云,没有账号就注册一个 登录完成后在搜索框搜索,容器镜像服务,并打开 点击管理控制台,进入管理控制台 左侧点击镜像加速…

【Python入门】20个Python自动化脚本,解放双手、事半功倍

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享! 在当今的快节奏工作环境中,自动化不再是一种奢侈,而是…

下一代性能怪兽RTX 5090最新规格更新与Blackwell架构解析

据悉,目前各家AIC厂商已经陆续收到NVIDIA的相关资料,RTX 5090、RTX 5080已经正式进入开案阶段,也就是厂商们开始设计各自的产品方案了。不出意外,年初的CES 2025上会看到RTX 5090/5080的发布。 作为NVIDIA的新一代GPU&#xff0c…

【车联网安全】车端知识调研

一、CAN总线: 1、定义: CAN 总线相当于汽车的神经网络,连接车内各控制系统,其通信采用广播机制,各连接部件均可收发控制消息,通信效率高,可确保通信实时性。当前市场上的汽车至少拥有一个CAN网络&#xff0…

如何进行“服务器内部错误”的诊断 | OceanBase诊断案例

本文作者:任仲禹,爱可生数据库高级工程师,擅长故障分析和性能优化。 的OMS迁移工具具备丰富的功能。但在实际运维场景中,我们可能会遇到各种问题,其中“服务器内部错误”便是一个较为棘手的问题,因为界面上…

【易上手快捷开发新框架技术】nicegui标签组件lable用法庖丁解牛深度解读和示例源代码IDE运行和调试通过截图为证

传奇开心果微博文系列 序言一、标签组件lable最基本用法示例1.在网页上显示出 Hello World 的标签示例2. 使用 style 参数改变标签样式示例 二、标签组件lable更多用法示例1. 添加按钮动态修改标签文字2. 点击按钮动态改变标签内容、颜色、大小和粗细示例代码3. 添加开关组件动…

美图AI短片创作工具MOKI全面开放 支持生成配乐、细节修改

人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 美图公司近日宣布,其研发的AI短片创作工具MOKI已正式向所有用户开放。这款专注于AI短片创作的工具,提供了包括动画短片、网文短剧等多种类型视频内容的生成能力,致力于为用户带来…

linux-CMake

linux-CMake 1.安装CMake工具2.单个源文件3.多个源文件4.生成库文件5.将源文件组织到不同的目录下6.可执行文件和库文件放置到单独的目录下7.常见的命令 CMake使用。 1.安装CMake工具 sudo apt-get install cmake2.单个源文件 1.先在文件夹里创建两个文件:main.c&…

Vscode超好看的渐变主题插件

样式效果: 插件使用方法: 然后重启,之后会显示vccode损坏,不用理会,因为这个插件是更改了应用内部代码,直接不再显示即可。

cesium实战代码

代码中有一点bug还没改 cesium地球 地形+地形 <html lang="en"><head><style>.cesium-animation-rectButton .cesium-animation-buttonGlow {filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain {fil…

Win32打开UWP应用

最近无意间发现Windows里一个神奇的文件夹。 shell:appsfolder 运行打开 这个文件夹后&#xff0c;你可以看到本机安装的所有应用程序。 我觉得这个挺方便的&#xff0c;所以做了一个简单的appFolderDialog包给C#用 项目地址&#xff1a;https://github.com/TianXiaTech/App…

基于单片机的多路温度检测系统

**单片机设计介绍&#xff0c;基于单片机CAN总线的多路温度检测系统设计 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探…

总结拓展十一:S4 HANA和ECC区别

第一节 S/4 HANA系统简介 SAP系统的产品线 R/1版本——主要财务模块R/3版本——基本实现全模块ECC6.0——2005年推出&#xff08;ECC是2004年推出&#xff09;HANA——数据库产品——属于内存数据库BW on HANA——HANA与数据分析相结合 拓展&#xff1a; 数据库类型&#x…

【如何在Linux系统本地快速部署Leanote蚂蚁笔记】

文章目录 前言1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装cpolar内网穿透4. 固定Leanote蚂蚁笔记公网地址 前言 本篇文章主要介绍如何在Linux系统本地快速部署Leanote蚂蚁笔记&#xff0c;并且结合cpolar内网穿透实现公网远程访问本地笔记编辑并制作个人博客等。 …

外卖点餐小程序源码系统 单店多门店自助切换 带完整的安装代码包以及搭建部署教程

系统概述 本外卖点餐小程序源码系统旨在帮助餐饮企业和商家快速搭建一个功能完善的在线外卖平台。系统支持单店与多门店的灵活切换&#xff0c;方便商家根据自身业务需求进行管理和运营。同时&#xff0c;系统还提供了丰富的营销工具和数据分析功能&#xff0c;助力商家实现精…

双端搭建个人博客

1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…

【高中数学/对数/指数】已知函数f(x)=e^x-ln(x+m),求证m<=2时,证明f(x)>0

【问题】 已知函数f(x)e^x-ln(xm),求证m<2时&#xff0c;证明f(x)>0 &#xff08;2013年高考全国卷II理科第21题&#xff09; 【出处】 《高中数学解题思维策略》P30 例2-11 杨林军编著 【解答】 对于ye^x,总有e^x>x1 (x0时去等) 对于yln(xm),总有yxm-1>ln(…

动手学深度学习(李沐)PyTorch 第 3 章 线性神经网络

3.1 线性回归 线性回归是对n维输入的加权&#xff0c;外加偏差 线性回归可以看作是单层神经网络 回归问题中最常用的损失函数是平方误差函数。 平方误差可以定义为以下公式&#xff1a; 常数1/2不会带来本质的差别&#xff0c;但这样在形式上稍微简单一些 &#xff08;因为当…

《C++》解密--单链表

目录 一、概念与结构 二、实现单链表 三、链表的分类 四、单链表算法题 一、概念与结构 1、节点 结点的组成主要有&#xff1a;当前结点要保存的数据和保存下一个节点的地址&#xff08;指针变量&#xff09; 图中指针变量plist保存的是第一个结点的地址&#xff0c;我们称p…