首页 > 其他分享 >常见损失函数用法及其比较

常见损失函数用法及其比较

时间:2023-02-01 14:26:39浏览次数:63  
标签:yi 似然 常见 函数 模型 样本 损失 用法

1.  损失函数

  损失函数(loss function)或代价函数(cost function)是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。在应用中,损失函数通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。例如在统计学和机器学习中被用于模型的参数估计。

机器学习中,给定独立同分布的学习样本(X,y)和模型f,损失函数是模型输出和观测结果间概率分布差异的量化。

式中W表示模型参数,上式右侧具体的量化方法视问题和模型而定,但要求满足损失函数的一般定义,即样本空间的非负可测函数。

更通俗的说,损失函数是用来描述模型的预测值与数据真实值的吻合程度。有时候把单个样本的预测与实际值的误差称为损失函数,对所有样本平均损失称为代价函数。除了以上,还有目标函数,我们通常说的目标函数是代价函数+正则化项。有时候并不严格区分损失函数、代价函数、目标函数。

2. 常见的损失函数

 

均方误差(MSE)

 

  均方误差是指所有样本预测值与真实值的平方差的平均值。常用于回归问题。当模型为线性时,基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。可以得到模型在样本数据上的预测与真实值的最小误差所对应的参数(关于最小二乘法公式本文没有给出,可以自己查阅)。以下为均方误差(MSE)公式,n为样本数量,括号内为真实值与预测值之差。

平均绝对误差(MAE)

  平均绝对误差的值越小,说明模型能有更好的精确度。通过MAE,可以了解预测的错误程度。使用MAE能较均方误差更好地发现异常值。

Hinge损失函数

  之前的用于二分类的SVM中就是使用的Hinge损失函数,其具有凸函数且连续可导的性质。式子如下:f(x)为预测值(范围为|f(x)|大于等于1),y为实际值(取值-1或1,代表两类)。很显然,当预测正确时,损失值为0。例如:y=-1,预测f(x)=-1.2表明该样本为-1所属的类.此时L=max(0,-0.2)=0。Hinge损失函数健壮性相对较高,对异常点、噪声不敏感。

 

对数似然损失函数

    在前面逻辑回归中对似然函数,对数似然函数,对数似然损失函数进行了说明。对于0,1二分类而言,对数似然损失函数的公式简化为:

对于上式,可能每个人的写法不同,重要的是理解,yi为标签的实际值0或者1,而P(yi)表示模型预测样本第i个样本为yi的概率(范围为0到1)。举个例子:

如yi=1时,预测概率接近或等于1,此时通过上式计算得到损失L越接近0或等于0。yi=0,预测概率接近或等于1时,损失L也接近或等于0.当yi=1,预测概率为0或接近0时,上式中的L会很大;yi=0的情况也一样。预测越正确损失值越小,预测越不准确,损失值越大。

交叉熵与二元交叉熵损失函数

  交叉熵是信息论中的概念,这里不过多讲解。以下为交叉熵,p为真实分布,q为非真实分布,若p=q,则式子变成了信息熵,可以理解为对X中的样本进行编码所需要的编码长度的期望值。以下为交叉熵计算公式,若为二分类,则二元交叉熵损失函数和对数似然损失函数一致。

指数损失函数

  AdaBoost迭代算法使用的是指数损失函数,目前还没学Adaboost,这里先给出标准公式:

其他损失函数

  除了上面介绍的损失函数外,还包括0-1 损失,对数损失、Huber、Focal等。

 

 

若存在不足之处,欢迎指正与评论!

参考资料:

https://baike.baidu.com/item/%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0/1783236?fr=aladdin

https://zhuanlan.zhihu.com/p/182983435

 

标签:yi,似然,常见,函数,模型,样本,损失,用法
From: https://www.cnblogs.com/wancy/p/17082381.html

相关文章

  • Jmeter函数助手之__time函数
    time:有2个参数格式:非必填项,格式如果不填那么就是默认获取当前时间的毫秒数(此项也常被用于接口参数中那些不允许重复的字段);参数名称:非必填项,如果填了,则生成的时间会被放......
  • forward函数在LSTM模型中
    "forward"函数是指在LSTM(长短时记忆网络)模型中所执行的一次正向传播。在LSTM中,这个函数的作用是根据当前的输入以及之前的状态来计算当前的输出和更新网络中的隐藏状态。具......
  • Java基础系列二、代码结构+函数
    代码结构顺序结构判断结构选择结构循环结构if语句的三种格式第一种if(条件表达式){...;}...;第二种if(条件表达式){...;}else{...;}......
  • php 3种常见设计模式
    1、工厂模式<?phpnamespaceFacebab;classFactory{staticfunctioncreateDatabase(){returnnewDatabase();}}$db=Facebab\Factory::createDatabas......
  • spl_autoload_register装在函数的正确写法
    AutoLoading\loading<?phpnamespaceAutoLoading;classLoadind{publicstaticfunctionautoload($className){//根据PSR-O的第4点把\转换层(目录风格......
  • php使用魔法函数和不使用魔法函数比较
    /***usemagic0.31868386268616s*notusemagic0.11876797676086s*/classTest{private$varstr="123";function__get($name){return$this->vars......
  • Swift开篇003->控制流、函数
    PART_A控制流​​for​​​​for...in​​forindexin1...5{print(index)}letnames=["cat","dog","fish"]fornameinnames{print(name)}letnums=......
  • 读Java8函数式编程笔记07_设计和架构的原则
    1. SOLID原则1.1. 开发良好面向对象程序的准则1.2. Liskovsubstitution里氏替换1.3. Interfacesegregation接口隔离1.4. Singleresponsibility单一功能原则1......
  • 嵌入式开发中一些少见的C语言用法
    使用STM32开发的朋友不知道是否有发现过这样的一些宏定义?如下:#ifdefined(__CC_ARM)#pragmaanon_unions#endif看到上面的语句一开始确实搞不懂为什么要写这些东西,通过上......
  • jQuery对象和JS对象区别与转换 jQuery事件绑定&入口函数&样式控制
    jQuery对象和JS对象区别与转换  JQuery对象和JS对象区别与转换1.JQuery对象在操作时,更加方便。2.JQuery对象和js对象方法不通用的.3.两者相互转换......