机器学习之线性模型

news2024/12/29 8:35:28

在这里插入图片描述

定义

线性模型非常常见,但详细了解其中原理是必要的。

一般将样本特征进行线性组合达到预测的目标,如表达式 y = f ( X ; W ) + b y=f(X;W)+b y=f(X;W)+b,其中 X X X为输入的样本数据, W W W为权重系数, b b b为偏置系数。

如对于图片样本,一种处理方式为将图片像素矩阵转化为维度向量,如 X = [ x 1 , x 2 , . . . , x n ] , W = [ w 1 , w 2 , . . . , w m ] , b = [ b 1 , b 2 , . . . , b n ] X=[x_1,x_2,...,x_n],W=[w_1,w_2,...,w_m],b=[b_1,b_2,...,b_n] X=[x1,x2,...,xn],W=[w1,w2,...,wm],b=[b1,b2,...,bn],输出 y y y y y y可以表示为类别0或者1,而0或者1代表不同类别,从而实现预测。

在实际运用中,如分类问题,y只有两个离散值0或者1,那么如果使用函数值直接输出(此函数值域为实数),无法达到0或者1的唯二输出目的。存在的一种解决方案有:通过使用决策函数(非线性函数)输出预测结果,如用 g ( y ) g(y) g(y)表示,也即 g ( f ( X ; W ) + b ) g(f(X;W)+b) g(f(X;W)+b),该决策函数在二分类中可为 s g n sgn sgn函数(下图从百度知道获取)
在这里插入图片描述
当然,对于此处的二分类,我们忽略 x = 0 x=0 x=0的取值,不进行预测。


二分类与多分类

从数学层面上来讲,对于二分类的问题,如果将输入的样本视为高维空间中的点,如三位空间,那么进行二分类就是寻找一个超平面(或称为决策平面),将这些样本点从空间上分为两个部分,每个部分对应一个类别。

每一个样本点到决策平面的距离可根据点到直线的(有向)距离公式求得,即 d i s t = f ( X ; W ) + b ∣ ∣ W ∣ ∣ dist=\frac{f(X;W)+b}{||W||} dist=∣∣W∣∣f(X;W)+b(为了便于描述,若二分类问题,样本的特征向量为二维向量,那么只需要对于二维组成的平面找一条决策线即可将二维平面分为两部分,所以此处使用的是点到直线的距离公式)

进一步定义
f ( X ; W ) + b > 0    i f   y = 1 f ( X ; W ) + b < 0    i f   y = − 1 \begin{aligned} f(X;W)+b &> 0 \space \space if \space y = 1\\ f(X;W)+b &< 0 \space \space if \space y = -1\\ \end{aligned} f(X;W)+bf(X;W)+b>0  if y=1<0  if y=1
找到该决策直线的关键点在于找到线性模型中的参数 w w w的最优解,满足 y ( f ( X ; W ) + b ) > 0 y(f(X;W)+b) > 0 y(f(X;W)+b)>0
采取的损失函数在后续内容涉及

在实际应用中,二分类常常不满足需要,多分类需要被纳入讨论。

  • 最直接的办法是将多分类的问题分解为多个二分类的问题,如分为猫、狗、猪三类,我们可以分为猫和其他类、狗和其他类、猪和其他类,但是该方法较为繁琐且时间复杂度高。
  • 在第一种方法进行改进,分类的目的在于把每一个不同的类型识别出来,那么由完全图的关系可知,若有n个类别,那么我们需要进行n(n-1)/2次二分类操作,较于方法一,在比较次数上有所减少。
  • 最后,如果能够实现只需一个过程可以同时判别n个类别,那么将会是最好的解决方案。

当然,数学家们提出一种解决方法(基于前面方法优化): f ( x ; w ) + b f(x;w)+b f(x;w)+b函数存在一个性质,满足对于某个样本,若属于类别 c 1 c_1 c1,不属于类别 c 1 c_1 c1使用 c 1 ^ \hat {c_1} c1^表示,那么 f c 1 ( x ; w c 1 ) + b > f c 1 ^ ( x ; w c 1 ^ ) + b f_{c_1}(x;w_{c_1})+b > f_{\hat {c_1}}(x;w_{\hat {c_1}})+b fc1(x;wc1)+b>fc1^(x;wc1^)+b。这个表示意思就是样本属于哪一个类别,则该类别的预测值最大,非该类别的预测值较小。
y = a r g   m a x   f c ( x ; w c ) , c ∈ [ 1 , C ] \begin{aligned} y=arg \space max \space f_c(x;w_c) ,c \in [1,C] \end{aligned} y=arg max fc(x;wc),c[1,C]
那么该函数对于不同类别的输出值不同的关键在于权重参数 w w w不同,如果存在n个类别,那么权重参数 w w w的维度应该为n,即 [ w 1 , w 2 , . . . , w n ] [w_1,w_2,...,w_n] [w1,w2,...,wn]

第三种方法与第一种方法相比,具有很大的类似之处,都需要n类别n个判别器,但是第三种方法较于第一种方法的好处在于第一种方法存在难以确定类别的情况,如对于某个样本,多个分类都说属于自己的类别,都满足类别阈值,造成难以区分境况,而第三种恰好弥补了该缺点,第三种为所有输出中取值最高。


Logistic回归

Logistic回归常用于处理线性模型中的二分类问题。

逻辑回归的关键点在于引入非线性函数 g ( f ) g(f) g(f),将预测值限制在(0,1)之间,也可称为概率。

如对于二分类问题,样本x, p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)为x属于类别1的后验概率,也可表示为 g ( f ( x ; w ) ) g(f(x;w)) g(f(x;w))

逻辑函数表示为
𝑝 ( 𝑦 = 1 ∣ 𝒙 ) = 1 1 + e − w T x 𝑝 ( 𝑦 = 0 ∣ 𝒙 ) = 1 − 1 1 + e − w T x = e − w T x 1 + e − w T x \begin{aligned} 𝑝(𝑦 = 1|𝒙)&=\frac{1}{1+e^{-w^Tx}}\\ 𝑝(𝑦 = 0|𝒙)&=1-\frac{1}{1+e^{-w^Tx}}\\ &=\frac{e^{-w^Tx}}{1+e^{-w^Tx}} \end{aligned} p(y=1∣x)p(y=0∣x)=1+ewTx1=11+ewTx1=1+ewTxewTx
该函数也就是常见的 s i g m o i d sigmoid sigmoid函数
在这里插入图片描述

对于二分类模型关键在于参数 w w w,那么对如对 𝑝 ( 𝑦 = 1 ∣ 𝒙 ) = 1 1 + e − w T x 𝑝(𝑦 = 1|𝒙)=\frac{1}{1+e^{-w^Tx}} p(y=1∣x)=1+ewTx1变换可得
w T x = l o g p ( y = 1 ∣ x ) 1 − p ( y = 1 ∣ x ) = l o g p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) \begin{aligned} w^Tx&=log \frac{p(y=1|x)}{1-p(y=1|x)}\\ &=log \frac{p(y=1|x)}{p(y=0|x)}\\ \end{aligned} wTx=log1p(y=1∣x)p(y=1∣x)=logp(y=0∣x)p(y=1∣x)

那么预测值即为 l o g p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) log \frac{p(y=1|x)}{p(y=0|x)} logp(y=0∣x)p(y=1∣x)或者 l o g p ( y = 0 ∣ x ) p ( y = 1 ∣ x ) log \frac{p(y=0|x)}{p(y=1|x)} logp(y=1∣x)p(y=0∣x),根据值的大小判定类别。

总之,逻辑回归分类通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(如大于0.5),另外的一个类别会标记为0(小于0.5)。

那么如何更新权重系数 w w w我们关心的问题,常用的一种方法即使用交叉熵损失函数与梯度下降法进行参数更新。

对于样本数据 x , y {x,y} x,y,预测输出值 y ^ = σ ( w T x ) \hat y= \sigma(w^Tx) y^=σ(wTx)。在二分类中,样本真实标签为两类值(0 and 1),输出为如下所示
𝑝 ( 𝑦 = 1 ∣ 𝒙 ) = y 𝑝 ( 𝑦 = 0 ∣ 𝒙 ) = 1 − y \begin{aligned} 𝑝(𝑦 = 1|𝒙)&=y\\ 𝑝(𝑦 = 0|𝒙)&=1 - y \end{aligned} p(y=1∣x)p(y=0∣x)=y=1y
实际情况下存在损失,损失函数可表示为
L o s s = − 1 N ∑ n = 1 N ( 𝑝 ( 𝑦 = 1 ∣ 𝒙 ) l o g y ^ + 𝑝 ( 𝑦 = 0 ∣ 𝒙 ) l o g ( 1 − y ^ ) ) = − 1 N ∑ n = 1 N ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) \begin{aligned} Loss &= -\frac{1}{N} \sum_{n=1}^{N}(𝑝(𝑦 = 1|𝒙)log\hat y + 𝑝(𝑦 = 0|𝒙)log(1-\hat y))\\ &= -\frac{1}{N} \sum_{n=1}^{N}(ylog\hat y + (1-y)log(1-\hat y)) \end{aligned} Loss=N1n=1N(p(y=1∣x)logy^+p(y=0∣x)log(1y^))=N1n=1N(ylogy^+(1y)log(1y^))

对参数 w w w求导可得, w = − 1 N ∑ n = 1 N ( x ( y − y ^ ) ) w= -\frac{1}{N} \sum_{n=1}^{N}(x(y-\hat y)) w=N1n=1N(x(yy^))
更新参数, w = w + α 1 N ∑ n = 1 N ( x ( y − y ^ ) ) w=w+\alpha \frac{1}{N} \sum_{n=1}^{N}(x(y-\hat y)) w=w+αN1n=1N(x(yy^))


Softmax回归

softmax回归是对于logistic回归的扩展,从二分类延伸到多分类问题。

二分类中使用0或者1代表两个类别,而多分类(若有n个类别)中使用n个数字代表类别,那么后验概率可表示为
𝑝 ( 𝑦 = c ∣ 𝒙 ) = e − w c T x ∑ c = 1 C e − w c T x \begin{aligned} 𝑝(𝑦 = c|𝒙)&=\frac{e^{-w_{c}^Tx}}{\sum_{c=1}^{C}e^{-w_{c}^Tx}} \end{aligned} p(y=cx)=c=1CewcTxewcTx

同理,交叉熵损失函数为(此处芦苇不同于二分类原因在于多分类损失函数将每一个类损失都相加,二分类中同时将两个类别的损失相加)
L o s s = − 1 N ∑ n = 1 N ∑ c = 1 C y c l o g y ^ c \begin{aligned} Loss=-\frac{1}{N}\sum_{n=1}^{N} \sum_{c=1}^{C}y_clog \hat y_c \end{aligned} Loss=N1n=1Nc=1Cyclogy^c
其他处理一致。

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

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

相关文章

兔年春晚一大怪像,影视演员变成了万能,专业歌手却被晾在一边

怪事年年有&#xff0c;今年特别多。谁也没有想到&#xff0c;兔年春节还没有过去&#xff0c;就出现了一种奇怪的现象。中央电视台春晚&#xff0c;曾经执全国春晚之牛耳&#xff0c;然而谁能想到&#xff0c;四十多年后的今天&#xff0c;曾经的扛把子却变成了鸡肋。 今年央视…

【C++初阶】七、STL---vector(总)|vector的介绍|vector的使用

目录 一、vector的介绍 二、vector的使用 2.1 Construct 2.2 operator 2.3 Iterators 2.4 Capacity 2.5 Element access 2.6 Modifiers 一、vector的介绍 前面学习了 string类&#xff0c;所以 vector 的学习成本很低&#xff0c;因为接口都大致相同&#xff0c;功能也…

【促进开发】上海道宁与DHTMLX为您提供易于使用且功能丰富的JavaScript组件

DHTMLX提供 有效且专业设计的 JavaScript/HTML5工具 使开发人员 能够以更少的时间和精力 创建具有丰富界面和快速性能的 复杂Web和移动应用程序 DHTMLX使用 JavaScript UI 库促进开发 易于使用且功能丰富的 JavaScript组件 非常适合您在任何领域和 任何复杂性中的解…

SpringCloud微服务项目实战 - 7.kafka及文章上下架

一步一步地苦熬苦掖&#xff0c;终于我们也看见了花团锦簇&#xff0c;我们也知道了彩灯佳话。那一夜&#xff0c;我也曾梦见百万雄兵。 系列文章目录 项目搭建App登录及网关App文章自媒体平台&#xff08;博主后台&#xff09;内容审核(自动)延迟任务 文章目录系列文章目录一…

并查集应用

一、并查集模板 int find(int x) {if(p[x]!x) p[x]find(p[x]);return p[x]; }并查集高效率的核心是一旦更新过一次后&#xff0c;就会将路径压缩掉&#xff0c;避免后续重复遍历路径。 二、并查集应用 1、格子游戏 分析&#xff1a;每构成一个方框&#xff0c;当最后两个点连…

RA4M2开发(2)----基于IIC驱动OLED

概述 在e2studio中创建新的工程并导入必要的文件&#xff0c;包括I2C驱动代码和SSD1306 OLED显示驱动代码。配置RA4M2的I2C接口&#xff0c;使其作为I2C master进行通信。初始化SSD1306 OLED显示驱动代码&#xff0c;并配置显示屏的物理地址和分辨率。通过I2C驱动代码将数据写…

【Linux】初识环境变量

文章目录环境变量引入初见环境变量和环境变量有关的指令如何通过代码获取环境变量getenv()main函数的命令行参数第三方变量environ程序变量可以继承给子进程环境变量引入 Linux中有各种指令&#xff0c; 每个指令其实都是一个可执行程序&#xff1a; 和我们自己写的C语言代码…

API自动化测试【postman生成报告】

PostMan生成测试报告有两种&#xff1a; 1、控制台的模式 2、HTML的测试报告 使用到一个工具newman Node.js是前端的一个组件&#xff0c;主要可以使用它来开发异步的程序。 一、控制台的模式 1、安装node.js 双击node.js进行安装&#xff0c;安装成功后在控制台输入node…

Ansys Zemax | 多模光纤耦合

本文展示了利用几何图像分析特性来计算多模光纤耦合效率的方法。 还有使用IMAE操作数优化多模光纤耦合效率的方法。该方法只适用于包含大量模式的多模光纤。 下载 联系工作人员获取附件 简介 我们可以使用OpticStudio中的几何图像分析&#xff08;Geometric Image Analysi…

已解决error: legacy-instal1-failure

已解决&#xff08;pip install wxPython安装失败&#xff09;error: legacy-instal1-failure Encountered error while trying to install package.wxPython note: This is an issue with the package mentioned above&#xff0c;not pip. hint : See above for output from …

ChatGPT 回答什么是敏捷测试

Jenkins 官方文档&#xff1a;https://jenkins.io/doc/JUnit 插件文档&#xff1a;JUnit | Jenkins pluginTestNG 插件文档&#xff1a;https://plugins.jenkins.io/testng-plugin/Jenkins 教程&#xff1a;https://jenkins.io/doc/tutorials/JUnit 教程&#xff1a;JUnit 5 Us…

舆情监测软件报价方案,TOOM舆情监控软件多少钱?

舆情监测软件的价格因公司不同而有所差异&#xff0c;通常在几百元至数千元不等。价格还可能受到功能复杂度、数据量、使用时长等因素的影响。建议您联系多家软件开发商或销售代表&#xff0c;对比各家的产品和报价&#xff0c;以找到适合您需求和预算的解决方案。舆情监测软件…

算法训练营DAY46|139.单词拆分、多重背包的介绍

这一期到了背包问题的最后一期&#xff0c;主要讲解一道leetcodee题&#xff0c;和对多重背包的一些简单介绍&#xff0c;由于leetcode没有对于多重背包的具体问题&#xff0c;且面试基本不会问到多重背包所以只是作为科普。 139. 单词拆分 - 力扣&#xff08;LeetCode&#x…

缺省参数,函数重载,引用的使用(C++)

前言 本文主要讲解的是缺省参数&#xff0c;函数重载&#xff0c;引用的使用. 文章目录 目录 前言 一、缺省参数是什么&#xff1f; 1.缺省参数的分类 二、函数重载是什么&#xff1f; 三、引用是什么&#xff1f; 1.引用特性 总结 提示&#xff1a;以下是本篇文章正文内容&am…

java中的NIO,BIO,AIO

IO&#xff0c;input和output&#xff0c;Java 为 I/O 提供了强大的而灵活的支持&#xff0c;使其更广泛地应用到文件传输和网络编程中。 IO是什么&#xff1f;为什么需要IO&#xff1f; java在1.4之前&#xff0c;提供的是BIO&#xff0c;也就是java.io包下的的东西&#xf…

SpringBoot(二):配置文件的作用、配置文件的格式、properties配置文件、yml配置文件

目录一、配置文件的作用二、配置文件的格式三、properties配置文件3.1 properties的基本语法3.2 properties的缺点3.3 配置自定义内容3.4 读取配置文件四、yml配置文件4.1 yml基本介绍4.2 yml基本语法4.3 使用yml配置不同的数据类型4.4 读取yml配置文件4.5 在yml中配置对象4.6 …

关于UWB汽车钥匙介绍

汽车钥匙经历了机械钥匙、遥控钥匙、PEPS、数字钥匙四个阶段&#xff0c;而数字钥匙又分为BLE/NFC/UWB三种技术路线。由于UWB安全性、定位精度、作用范围明显好于BLE和NFC&#xff0c;因此成为汽车数字钥匙的最优技术。PEPS与数字钥匙PEPS是指无钥匙进入/无钥匙启动系统&#x…

MySQL详解(三)——高级 1.0

MySQL高级 utf8只支持每个字符最多三个字节&#xff0c;而真正的 UTF-8 是每个字符最多四个字节 MySQL 的这个bug一直没有被修复&#xff0c;他们在 2010 年发布了一个叫作“utf8mb4”的字符集&#xff0c;绕过了这个问题。 MySQL优点 Mysql是开源的Mysql是可以定制的&…

CDN的那些事

CDN的那些事一、前言二、基础配置三、访问控制四、缓存配置五、HTTPS配置六、高级配置&#xff08;最重点来了&#xff09;七、结语一、前言 大家好&#xff0c;我是尝试中成长的站长&#xff0c;前段时间&#xff0c;群友的cdn被刷爆了&#xff0c;这就引起了我的恐慌&#x…

读书笔记:神经网络加法层与乘法层的实现及应用 buy_apple_orange.py ← 斋藤康毅

“层”是神经网络中功能的单位。通常把神经网络的“层”实现为一个类。“层”的实现中有两个共通的方法 forward() 和 backward()。forward() 对应正向传播&#xff0c;backward() 对应反向传播。加法结点的反向传播将上游的值原封不动地输出到下游&#xff0c;乘法结点的反向传…