机器学习--损失函数

损失函数(Loss Function),也称为代价函数(Cost Function)或误差函数(Error Function),是机器学习和统计学中的一个重要概念。它用于量化模型预测值与真实值之间的差异。损失函数的值越小,表示模型的预测越准确。
在这里插入图片描述

损失函数的定义

损失函数根据具体的任务和目标会有所不同。常见的损失函数包括:

  1. 均方误差(Mean Squared Error, MSE)
    适用于回归问题,计算预测值与真实值之间的平方差的平均值。
    M S E {MSE} MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 n1i=1n(yiy^i)2

    其中, ( y i ) ( y_i ) (yi)是真实值, ( y ^ i ) ( \hat{y}_i) (y^i)是预测值, ( n ) ( n ) (n) 是样本数量。

  2. 均方根误差(Root Mean Squared Error, RMSE)
    MSE 的平方根,用于回归问题,更直观地反映误差的尺度。
     RMSE \ \text{RMSE}  RMSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} n1i=1n(yiy^i)2

  3. 平均绝对误差(Mean Absolute Error, MAE)
    计算预测值与真实值之间绝对差的平均值。

    MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i

  4. 交叉熵损失(Cross-Entropy Loss)
    适用于分类问题,特别是二分类和多分类问题
    二分类交叉熵损失:
    Binary Cross-Entropy = − 1 n ∑ i = 1 n [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] \text{Binary Cross-Entropy} = - \frac{1}{n} \sum_{i=1}^{n} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] Binary Cross-Entropy=n1i=1n[yilog(y^i)+(1yi)log(1y^i)]
    多分类交叉熵损失:
    Categorical Cross-Entropy = − 1 n ∑ i = 1 n ∑ c = 1 C y i , c log ⁡ ( y ^ i , c ) \text{Categorical Cross-Entropy} = - \frac{1}{n} \sum_{i=1}^{n} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c}) Categorical Cross-Entropy=n1i=1nc=1Cyi,clog(y^i,c)
    其中, ( C ) (C) (C)是类别数,(( y i , c y_{i,c} yi,c) 是样本 ( i ) 在类别 ( c ) 的真实标签(通常为0或1), ( y ^ i , c ) ( \hat{y}_{i,c} ) (y^i,c) 是预测概率。

如何定义合理的损失函数

定义合理的损失函数需要考虑以下几个方面:

  1. 任务目标:根据具体任务选择合适的损失函数。例如,回归任务通常使用MSE或MAE分类任务则使用交叉熵损失

  2. 误差特性:考虑误差的性质和分布。MSE 对异常值(outliers)较为敏感,因为平方误差会放大大误差值的影响,而MAE 对异常值较为鲁棒。

  3. 模型的可解释性:选择容易解释和调试的损失函数。MAE 的物理意义更容易理解,因为它直接反映了平均预测误差的大小。

  4. 优化难度:选择优化过程中梯度计算和收敛性较好的损失函数。例如,MSE 的梯度是线性的,优化相对简单,而有些复杂损失函数可能导致优化过程中的梯度不稳定。

  5. 应用场景:根据具体应用场景选择损失函数。例如,在推荐系统中,可以使用带权重的损失函数,来更关注某些重要用户或物品的预测准确性。

举例说明

例子1:房价预测(回归问题)

假设我们在做房价预测,可以选择MSE作为损失函数:
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2
选择MSE是因为它在回归问题中广泛使用,计算简单且误差放大效果有助于模型尽量减少大误差。

例子2:图片分类(分类问题)

假设我们在做手写数字识别,可以选择多分类交叉熵损失:
Categorical Cross-Entropy = − 1 n ∑ i = 1 n ∑ c = 1 C y i , c log ⁡ ( y ^ i , c ) \text{Categorical Cross-Entropy} = - \frac{1}{n} \sum_{i=1}^{n} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c}) Categorical Cross-Entropy=n1i=1nc=1Cyi,clog(y^i,c)
选择交叉熵损失是因为它能够很好地处理分类概率分布,帮助模型最大化正确分类的概率。

总结

损失函数是评估和优化机器学习模型的重要工具。定义合理的损失函数需要结合具体任务、误差特性、模型的可解释性、优化难度和应用场景等多个因素。选择合适的损失函数能够帮助我们构建更准确和有效的机器学习模型。

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

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

相关文章

毫米波雷达深度学习技术-1.6目标识别2

1.6.4 自动编码器和变体自动编码器 自编码器包括一个编码器神经网络,随后是一个解码器神经网络,其目的是在输出处重建输入数据。自动编码器的设计在网络中施加了一个瓶颈,它鼓励原始输入的压缩表示。通常,自编码器旨在利用数据中的…

Spring boot项目

一. Spring boot 安装地址 https://start.spring.io/ 二. 选择 三. idea配置 找到下载的文件解压缩,打开pom.xml(选择从idea打开)

Shell以及Shell编程

Shell的任务 ①分析命令; ②处理通配符、变量替换、命令替换、重定向、管道和作业控制; ③搜索命令并执行。 内部命令:内嵌在Shell中。 外部命令:存在于磁盘上的独立可执行文件。 #!/bin/bash #! 称为一个幻数&…

【Vue3】理解toRef() 和 toRefs()

历史小剧场 知道可能面对的困难和痛苦,在死亡的恐惧中不断挣扎,却仍然能战胜自己,选择这条道路,这才是真正的勇气。----《明朝那些事儿》 前言 toRef 和 toRefs 是Vue3中的响应式转换工具函数 toRef: 不影响源对象的情况下&#x…

DIO控制卡,IRIG-B码卡,PCI-E总线接口卡,百兆数据采集卡

DIO控制卡 ● 4路继电器输出(5A250VAC) ● 4路开关量输入(24VDC) ● 1路IDE接口 ● 端口浪涌保护 IRIG-B码卡 ● 1路IRIG-B对时接口(RS485/光纤) ● 1路IEEE1588 V2对时接口(RJ45/光纤&#…

Python在股票交易分析中的应用:布林带与K线图的实战回测

引言 在股票交易的世界中,技术分析是投资者们用来预测市场动向的重要工具。布林带(Bollinger Bands)作为一种动态波动范围指标,因其直观性和实用性而广受欢迎。本文将通过Python代码,展示如何使用布林带结合K线图来分…

数据结构之计数排序算法【图文详解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

【python报错】TypeError: dict.get() takes no keyword arguments

【Python报错】TypeError: dict.get() takes no keyword arguments 在Python中,字典(dict)是一种非常灵活的数据结构,用于存储键值对。dict.get()方法是用来从字典中获取与给定键(key)相关联的值&#xff0…

WordPress网站更换域名后如何重新激活elementor

在创建WordPress网站时,我们常常需要更改域名。但是,在更换域名后,你可能会遇到一个问题:WordPress后台中的Elementor插件授权状态会显示为不匹配。这时,就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…

数据结构之ArrayList与顺序表(下)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 ArrayList的具体使用 118. 杨辉三角 扑克洗牌算法 接上篇:数据结构之ArrayLis…

mqtt-emqx:简单安装emqx

安装依赖 yum install -y epel-release libatomic下载 cd /chz/install/emqx wget https://www.emqx.com/en/downloads/broker/5.7.0/emqx-5.7.0-el7-amd64.tar.gz解压 mkdir -p emqx && tar -zxvf emqx-5.7.0-el7-amd64.tar.gz -C emqx后台运行 cd /chz/install/e…

ChatGPT-4o体验demo

OpenAI 最近推出了其最新的人工智能语言模型——GPT-4O。该模型是在原有 GPT-4 的基础上进行优化而成,旨在提升生成质量和响应速度。GPT-4O 采用了更加高效的架构设计,使其在处理复杂文本时表现出更快的速度和更高的准确性。GPT-4O 在训练过程中融入了最…

【每日刷题】Day59

【每日刷题】Day59 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1103. 分糖果 II - 力扣(LeetCode) 2. 1051. 高度检查器 - 力扣&#xff08…

C语言详解(动态内存管理)2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

CTF Show MISC做题笔记

MISCX 30 题目压缩包为misc2.rar,其中包含三个文件:misc1.zip, flag.txt, hint.txt。其中后两个文件是加密的。 先解压出misc1.zip, 发现其中包含两个文件:misc.png和music.doc。其中后面文件是加密的。 解压出misc.png,发现图片尾部有消息:flag{flag…

竞拍商城系统源码后端PHP+前端UNIAPP

下载地址:竞拍商城系统源码后端PHP前端UNIAPP

使用CodeGen进行程序综合推理

Program Synthesis with CodeGen — ROCm Blogs (amd.com) CodeGen是基于标准Transformer的自回归语言模型家族,用于程序合成,正如作者所定义的,它是一种利用输入-输出示例或自然语言描述生成解决指定问题的计算机程序的方法。 我们将测试的…

哈希桶封装unordered_map、unordered_set

哈希桶源代码 我们将由下列的哈希桶来模拟封装STL库中的unordered_map和unordered_set 注意&#xff1a;为了实现封装unordered_map和unordered_set&#xff0c;我们需要对下列源码进行优化。 //哈希桶 namespace hashbucket {template<class K,class V>struct HashNo…

双列集合基础知识

package exercise;import java.util.HashMap; import java.util.Map;public class Demo1 {public static void main(String[] args) {Map<String, String> map new HashMap<>();//在添加数据的时候&#xff0c;如果键不存在&#xff0c;那么直接把键值对对象添加到…

Linux下线程的互斥与同步详解

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…