百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

机器学习常见的损失函数以及何时使用它们

toyiye 2024-06-21 12:08 8 浏览 0 评论


每一个机器学习工程师都应该知道机器学习中这些常见的损失函数以及何时使用它们。

在数学优化和决策理论中,损失函数或成本函数将一个或多个变量的值映射为一个实数,该实数直观地表示与该事件相关的一些"成本"。


损失函数是机器学习算法中的一个重要部分,主要用于进行算法对特征数据集建模效果的评估,衡量算法的性能。

损失函数是每个样本预测值和真实值的差值,而成本函数是所有损失函数的平均值。但是一般两者语义没有明显的区分。 损失函数直接反映了机器学习模型的预测结果。一般而言,损失函数越低,所建立的模型所提供的结果就越好。所以损失函数被用于评估模型的性能,通常人们想要损失函数最小化。

广义地说,损失函数根据应用场景可以分为两大类:分类问题和回归问题。在分类问题中,任务是预测问题所处理的所有类的各自概率。相反,在回归问题中,任务是预测一组给定的独立特征对学习算法的连续值。

假定符号如下:

n/m——训练样本的数量;

i——第i个训练样本;

y(i)——第i个样本的真实值;

y_hat(i)——第i个样本的预测值。

分类问题中的损失函数

1. 二值交叉熵损失/对数损失(Binary Cross-Entropy Loss / Log Loss)

这是分类问题中最为常见的损失函数。交叉熵损失随着预测概率准确度的提高而降低,能够被用于反映分类模型(输出为0-1之间的概率)的性能。

当类别数量为2时,是二值分类问题:


当类别数量大于2时,是多分类问题:



交叉熵损失公式由正则似然函数导出,但进行了对数处理。

1. 铰链损失(Hinge Loss)

用于分类问题的第二个最常见的损失函数是铰链损失函数,也是交叉熵损失函数的替代方法,主要用于支持向量机(SVM)模型评估。



铰链损失不仅对错误的预测做出惩罚,也对概率较低的正确预测做出惩罚。它主要用于分类标签为-1和1的支持向量机分类器。使用过程中需要确保将恶性类标签从0更改为-1。


回归问题中的损失函数

1. 均方误差/二次损失/L2损失(Mean Square Error / Quadratic Loss / L2 Loss)

均方误差是指真实值和预测值之间的平方差的均值。是最常用的回归问题损失函数。



相应的代价函数是这些平方误差(MSE)的平均值。MSE损失函数通过平方化误差来惩罚模型的误差,这种性质使得MSE代价函数对异常值的鲁棒性降低。因此,如果数据容易出现许多异常值,则不应使用它。

1. 平均绝对误差/L1损失 (Mean Absolute Error / L1 Loss)

评价绝对误差定义为实际值与预测值之间绝对差值的平均值。它是第二个最常用的回归损失函数。它测量一组预测中误差的平均大小,而不考虑它们的方向。



相应的成本函数是这些绝对误差(MAE)的平均值。与MSE损失函数相比,MAE损失函数对异常值具有更强的鲁棒性。因此,如果数据有很多异常值,可以考虑使用它。

1. Huber损失/平滑平均绝对误差(Huber Loss / Smooth Mean Absolute Error)

Huber损失函数是MSE和MAE的组合,当误差较大时,取平均绝对误差,当误差变得很小时,取均方误差。转换条件由超参数(delta)控制。



delta值的选择非常关键,因为它决定了我们将什么视为异常值。因此,与基于超参数值的MSE损失函数相比,Huber损失函数对异常值不太敏感。如果数据容易出现离群值,可以考虑使用它。

1. 对数余弦损失(Log-Cosh Loss)

对数余弦损失函数定义为预测误差双曲余弦的对数。它是回归任务中使用的另一个函数,比MSE损失函数平滑得多。它具有Huber损失函数的所有优点,而且它在任何地方都是两次可微的,不像Huber损失函数不具有可微性质。而一些学习算法,如XGBoost使用牛顿法来寻找最佳值,因此需要二阶导数(Hessian)。



当x较小时,log(cosh(x))约等于(x**2)/2,当x较大时,约等于abs(x)-log(2)。这意味着"logcosh"的工作原理与均方误差类似,但不会受到偶尔出现的显著错误预测的强烈影响。

1. 分位数损失( Quantile Loss)

分位数是指一组中有一小部分样本低于该值。顾名思义,分位数回归损失函数用于预测分位数。对于一组预测,损失将是其平均值。



当我们对预测一个区间而不是仅仅对点预测感兴趣时,分位数损失函数是十分有用的。


作者:Sparsh Gupta

deephub翻译组:Oliver Lee

相关推荐

Python 驱动的 AI 艺术批量创作: 免费的Bing 绘图代码解析

这篇文章将深入分析一段Python代码,该代码利用Bing的AI绘图功能,即bing的images/create,根据用户提供的文本提示生成图像。我们将详细探讨其工作原理、代码结构、...

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

Qt开发,使用Qt for Python还是Qt C++ Qt开发,使用Qt for

Qt开发使用QtforPython还是QtC++?1.早些年写过一个PyQt5的项目,最近几年重构成QtC++了,其中有个人原因,如早期代码写得烂,...

最简单方法!!用python生成动态条形图

最近非常流行动态条形图,在B站等视频网站上,此类视频经常会有上百万的播放量,今天我们通过第三方库:bar_chart_race(0.2版本)来实现动态条形图的生成;生成的效果如图:问题:...

Asterisk通道和ARI接口的通信(aau通道数)

Asterisk通道和ARI详解什么是通道Asterisk中,通道是介于终端和Asterisk自己本身的一个通信媒介。它包含了所有相关信息传递到终端,或者从终端传递到Asterisk服务器端。这些信...

取消回复欢迎 发表评论:

请填写验证码