线性分类器(KNN,SVM损失,交叉熵损失,softmax)

KNN

工作机制

k-近邻算法的工作机制可以分为两个主要阶段:训练阶段和预测阶段。

训练阶段

在训练阶段,k-近邻算法并不进行显式的模型训练,而是简单地存储训练数据集。每个样本由特征向量和对应的标签组成。此阶段的主要任务是准备好数据,以便在预测阶段进行有效的相似性比较。

预测阶段

在预测阶段,k-近邻算法的工作流程如下:

  1. 输入待分类样本:接收一个待分类的样本,其特征向量为 xx。
  2. 计算距离:计算待分类样本与训练集中所有样本之间的距离。常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离。
  3. 选择k个最近邻:根据计算得到的距离,选择距离待分类样本最近的k个训练样本。
  4. 投票机制
    • 分类任务:对这k个样本的类别进行投票,选择出现次数最多的类别作为预测结果。
    • 回归任务:对这k个样本的值进行平均,得到预测值。
距离度量函数

距离度量是k-近邻算法的关键部分,影响着算法的性能和预测结果。以下是几种常用的距离度量方法:

  • 欧氏距离:最常用的距离度量,适用于连续特征。计算公式为: d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i=1}^n(x_i-y_i)^2} d(x,y)=i=1n(xiyi)2
  • 曼哈顿距离:适用于特征值较小或特征之间差异较大的情况。计算公式为: d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\sum_{i=1}^n|x_i-y_i| d(x,y)=i=1nxiyi
  • 闵可夫斯基距离:是欧氏距离和曼哈顿距离的推广,参数p决定了距离的类型。计算公式为: d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d(x,y)=(\sum_{i=1}^n|x_i-y_i|^p)^{\frac{1}{p}} d(x,y)=(i=1nxiyip)p1
     选择合适的距离度量对于k-近邻算法的效果至关重要,通常需要根据具体问题进行实验和调整。
超参数K的选择

k值的选择直接影响k-近邻算法的性能。k值过小可能导致模型对噪声敏感,容易出现过拟合;而k值过大则可能导致模型过于平滑,无法捕捉到数据的局部结构。

具体请看下图
![[Pasted image 20241221162004.png]]

因此,我们可以使用K折交叉验证来完成。当然,你也可以简单的使用单一训练集+验证集+测试集的方法,不过效果可能不一定好,这取决于你的数据集的质量。一般在数据集质量一般的时候,可以采用K折交叉验证。

它将数据集分成 k 个折叠,每个折叠都会被用作一次测试集。然后我们使用剩下的 k-1 个折叠作为训练集来训练模型,并在每个折叠上进行评估结果为Ei。最终,我们将所有 k 次评估的结果平均,得到最终的模型性能评估。

![[Pasted image 20241221164055.png]]

通过交叉验证,我们可以选择出综合性能更好的K值(超参数)

线性分类器

![[Pasted image 20241221164055.png]]

将输入图像展平,然后与矩阵相乘得到每个类别对应的分数。

![[Pasted image 20241221164320.png]]

视觉角度理解

![[Pasted image 20241221164348.png]]

就是对图像的每个像素点训练出对应的权重。

几何角度

![[Pasted image 20241221164514.png]]

多分类问题损失函数SVM

为了训练网络,我们必然需要建立损失函数
假设有三张图片以及三种分类
![[Pasted image 20241221171959.png]]

这是SVM损失的具体定义:
在这里插入图片描述

SVM 损失的设置是,SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。再上图中,Δ为1
可以看下图,蓝色代表的是 s y i − s j s_{y_i}-s_j syisj
可以看到,loss函数的目的就是为了让正确类别的得分比错误类别高1分。

在这里插入图片描述

SoftMax Loss

softmax 函数

![[Pasted image 20241221175748.png]]
主要作用就是将得分转化为概率分布

交叉熵损失

交叉熵函数推导CrossEntropy_交叉熵推导-CSDN博客

可以看这篇文章,写的很好。这里主要介绍一下:
假设有一个概率分布X

信息量

I ( x 0 ) = − l o g ( P ( x 0 ) ) I(x_0)=−log(P(x_0)) I(x0)=log(P(x0))
概率越少,信息量越大

信息熵

信息熵就是信息量的期望
H ( x ) = − ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) H(x)=−∑^n_{i=1}P(x_i)log(P(x_i)) H(x)=i=1nP(xi)log(P(xi))

相对熵(KL散度)

同一随机变量x,有两个单独的概率分布P(x)和Q(x)。用KL散度来衡量P(x)和Q(x)两个独立分布之间的差异的。KL散度值越小,表示P和Q的分布越接近、
D K L ( P ∣ ∣ Q ) = ∑ i = 1 n P ( x i ) l o g ( P ( x i ) Q ( x i ) ) D_{KL}(P||Q)=∑^n_{i=1}P(x_i)log(\frac{P(x_i)}{Q(xi)}) DKL(P∣∣Q)=i=1nP(xi)log(Q(xi)P(xi))
log里面是除号,因此就是两者相减

交叉熵损失

带入真实场景,我们需要比较的两个概率分布:一个是真实的target,另一个是预测值。
真实的target是确定的,而且只有对应的位置概率为100%,其余都是0.

因此带入KL散度 D K L ( P ∥ Q ) = ∑ i = 1 n P ( x i ) l o g ( P ( x i ) ) − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) ) D_{KL}(P∥Q)=∑^n_{i=1}P(x_i)log(P(x_i))−∑^n_{i=1}P(x_i)log(Q(x_i)) DKL(PQ)=i=1nP(xi)log(P(xi))i=1nP(xi)log(Q(xi))
我们发现式子前半部分是定值。这对于损失函数来说有没有都一样,因此可以删去。所以最后交叉熵损失函数如下: H ( P , Q ) = − ∑ i = 1 n P ( x i ) l o g ( Q ( x i ) ) H(P,Q)=−∑^n_{i=1}P(x_i)log(Q(x_i)) H(P,Q)=i=1nP(xi)log(Q(xi))
其实较真的来说, P ( x i ) P(x_i) P(xi)中只有一项有意义(=1),所以损失函数其实只有一项(样本只能属于单一类别)
![[Pasted image 20241221200609.png]]

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

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

相关文章

知乎 PB 级别 TiDB 数据库集群管控实践

以下文章来源于知乎技术专栏 ,作者代晓磊 导读 在现代企业中,数据库的运维管理至关重要,特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库,TiDB 在高可用、高扩展性和强一致性方…

Git版本控制工具--基础命令和分支管理

1.Git仓库的基本概念和流程 版本库的概念:版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何…

EMQX构建简易的云服务

基本思路: 使用EMQX作为Mqtt brokermqtt-receive-server服务,用于接收设备上报的数据mqtt-sender-service服务,用于下发数据给设备KafKa实现数据解耦,mqtt-receive-server服务接收的数据简单处理下直接扔到Kafka中云服务各业务系…

基于MindSpore NLP的PEFT微调

创建notebook 登录控制台 创建notebook 如果出现提示按如下操作 回到列表页面创建notebook参数如下: 配置mindnlp环境 打开GitHub - mindspore-lab/mindnlp: Easy-to-use and high-performance NLP and LLM framework based on MindSpore, compatible with model…

半连接转内连接 | OceanBase SQL 查询改写

查询优化器是关系型数据库系统的核心模块,是数据库内核开发的重点和难点,也是衡量整个数据库系统成熟度的“试金石”。为了帮助大家更好地理解 OceanBase 查询优化器,我们撰写了查询改写系列文章,带大家更好地掌握查询改写的精髓&…

imx6ull qt多页面控制系统(正点原子imx系列驱动开发)

开题答辩完了也考完了四六级,赶紧来更新一下一个月前留下的坑吧 QAQ首先,因为毕业设计需要用到这些知识所以就从网络上找了一个智能车机系统,借鉴了一下大佬的项目思路,缝缝补补一个月终于完成了这一内容。 在这里先感谢从两位大佬…

Intel-ECI之Codesys PLC + Ethercat 远端IO + Codesys IDE编程

目录 一、 准备工作 二、安装Codesys 软件 PLC 三、 使用Codesys IDE 编程测试 CODESYS* 是领先的独立于制造商的 IEC 61131-3 自动化软件,适用于工程控制系统。它用于 Intel Edge Controls for Industrial(Intel ECI 或 ECI),…

vscode的keil assistant 中搜索不到全局变量

搜不到 但是在包含的文件中输入 ../../../,就是全局搜索的结果 我的文件结构是:\Desktop\LVGL文件系统移植(lvgl8.3)\Projects\MDK-ARM 盲猜是keil assistant 当前文件夹打开的时候是进入到了MDK-ARM文件夹层次&…

Unity A*算法实现+演示

注意: 本文是对基于下方文章链接的理论,并最终代码实现,感谢作者大大的描述,非常详细,流程稍微做了些改动,文末有工程网盘链接,感兴趣的可以下载。 A*算法详解(个人认为最详细,最通俗易懂的一…

格式工厂,各类文件格式转换

今天给大家推荐一个老牌的软件格式工厂。这个软件早就能支持转换视频、音频、图片、文档等市面上主流格式的软件了,现在也很能打。 格式工厂 各类文件格式转换 软件无需安装,打开这个图标就能直接使用。 屏幕录像功能还是非常强大的,可以全屏…

Java web的发展历史

目录 前言: 一.Model I和Model II 1.Model I开发模式 ​编辑 2.Model II开发模式 二. MVC模式 前言: 该篇文章主要介绍了Java web的发展历史,以及MVC相关内容 一.Model I和Model II 1.Model I开发模式 Model1的开发模式是&#xff…

Pyqt6在lineEdit中输入文件名称并创建或删除JSON文件

1、创建JSON文件 代码 import osdef addModulekeyWordFile(self):if "" ! self.lineEdit_module.text():moduleFile self.lineEdit_module.text() .jsonelse:self.toolLogPrinting(请输入模块名称)returnfilePath modulekeyWordFileDir moduleFileif os.path.e…

练习题 最小栈

最小栈 最小栈 class MinStack {private Stack<Integer> stack;private Stack<Integer> minstack;public MinStack() {stacknew Stack<>();minstacknew Stack<>();}public void push(int val) {stack.push(val);if(minstack.empty()){minstack.push(…

概率论得学习和整理32: 用EXCEL描述正态分布,用δ求累计概率,以及已知概率求X的区间

目录 1 正态分布相关 2 正态分布的函数和曲线 2.1 正态分布的函数值&#xff0c;用norm.dist() 函数求 2.2 正态分布的pdf 和 cdf 2.3 正态分布的图形随着u 和 δ^2的变化 3 正态分布最重要的3δ原则 3.0 注意&#xff0c;这里说的概率一定是累计概率CDF&#xff0c;而…

食家巷大烤馍:岁月沉淀下的麦香传奇

在繁华都市的街角巷尾&#xff0c;隐藏着许多不为人知的美食宝藏&#xff0c;食家巷大烤馍便是其中之一。它宛如一位低调的美食大师&#xff0c;默默散发着独特的魅力&#xff0c;用最质朴的味道&#xff0c;征服着每一个过往食客的味蕾。 初见食家巷大烤馍&#xff0c;你会被…

wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势

开发CuteMySQL/CuteSqlite开源客户端的时候&#xff0c;需要使用Scintilla编辑器&#xff0c;来高亮显示SQL语句&#xff0c;作为C/C领域最成熟稳定又小巧的开源编辑器&#xff0c;Scintilla提供了强大的功能&#xff0c;wxWidgets对Scintilla进行包装后的是控件类&#xff1a;…

【基础还得练】数值分析中的样条插值

什么是三次样条&#xff08;Cubic Spline&#xff09;&#xff1f; 三次样条&#xff08;Cubic Spline&#xff09;是一种常用于数据插值和曲线拟合的数学方法&#xff0c;它利用多个三次多项式函数来平滑连接数据点&#xff0c;使得拟合曲线不仅通过所有数据点&#xff0c;同时…

AMS1117芯片驱动电路·降压芯片的驱动电路详解

目录 AMS1117常见封装 AMS1117不同系列 AMS1117驱动电路 参考数据手册 编写不易&#xff0c;仅供学习&#xff0c;请勿搬运&#xff0c;感谢理解 相同LDO芯片驱动专栏文章 LM7805系列降压芯片驱动电路降压芯片驱动电路详解-CSDN博客 ME6211C系列降压芯片驱动电路降压芯片…

[项目代码] YOLOv8 遥感航拍飞机和船舶识别 [目标检测]

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLO 遥感航拍飞机和船舶识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90163939YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为…

《Qt Creator 4.11.1 教程》

《Qt Creator 4.11.1 教程》 一、Qt Creator 4.11.1 概述&#xff08;一&#xff09;简介&#xff08;二&#xff09;界面构成 二、常用设置指南&#xff08;一&#xff09;环境设置&#xff08;二&#xff09;文本编辑器设置&#xff08;三&#xff09;构建和运行设置 三、构建…