当前位置: 首页 > article >正文

线性分类器(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]]


http://www.kler.cn/a/447245.html

相关文章:

  • 如何测量分辨率
  • WPF 使用LibVLCSharp.WPF实现视频播放、停止、暂停功能
  • SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频
  • 「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
  • 大数据机器学习算法和计算机视觉应用07:机器学习
  • 数字时代的医疗挂号变革:SSM+Vue 系统设计与实现之道
  • 微信小程序-生成骨架屏
  • nbcio-vue版本第一次登录出现404问题
  • Docker安全性与最佳实践
  • Hive其五,使用技巧,数据查询,日志以及复杂类型的使用
  • 【VSCode】常用插件汇总
  • linux应用编程(点亮LED)
  • VSCode 中 Git 功能比较:内置 Git、GitLens 与 Git History 插件
  • 腾讯游戏安全移动赛题Tencent2016A
  • gesp(二级)(8)洛谷:B3866:[GESP202309 二级] 数字黑洞
  • 云手机测评:云端赋能的智能移动新势力
  • 解决vscode ssh远程连接服务器一直卡在下载 vscode server问题
  • 5G 模组 初始化状态检测
  • 深耕灾备国产化,YashanDB与鼎甲科技联合推出“流式备份”解决方案
  • 黄历宜忌算法 API:黄道吉日 PHP 计算方法
  • ELK系列-(五)指标收集-MetricBeat(下)
  • 部署 K8s 1.28.2(一主两从)-亲测无坑
  • 基础设施即代码初探-开发Terraform Provider管理私有云MySQL实例
  • 探索计算机存储层次体系:从寄存器到磁带
  • 6_HTML5 SVG (2) --[HTML5 API 学习之旅]
  • 周末紫蓬山行车见闻