目标函数,损失函数和代价函数

基本概念:

损失函数:计算的是一个样本的误差

代价函数:是整个训练集上所有样本误差的平均

目标函数:代价函数 + 正则化项

通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的算法使用的损失函数不一样。

实际应用:

损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,举例说明:

我们给定x,这三个函数都会输出一个f(X),这个输出的f(X)与真实值Y可能是相同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度。这个函数就称为损失函数(loss function),或者叫代价函数(cost function)。

损失函数越小,就代表模型拟合的越好。那是不是我们的目标就只是让loss function越小越好呢?还不是。这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集,f(X)关于训练集的平均损失称作经验风险(empirical risk),所以我们的目标就是最小化经验风险。

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的ΦΦ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θθ值。下面主要列出几种常见的损失函数。

过拟合(over-fitting)。为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。

这个时候就定义了一个函数J(f),这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有L1, L2范数。到这一步我们就可以说我们最终的优化函数是:

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

即最优化经验风险和结构风险,而这个函数就被称为目标函数

常用损失函数

常见的损失误差有五种:
1.  铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中;
2. 交叉熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中;
3. 平方损失(Square Loss):主要是最小二乘法(OLS)中;
4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中;
5. 其他损失(如0-1损失,绝对值损失)

1 平方误差损失函数

最小二乘法是线性回归的一种方法,它将回归的问题转化为了凸优化的问题。最小二乘法的基本原则是:最优拟合曲线应该使得所有点到回归直线的距离和最小。通常用欧几里得距离进行距离的度量。平方损失的损失函数为:

损失函数:

分类实例:

优点:容易优化(一阶导数连续)

缺点:对outlier点很敏感(因为惩罚是指数增长的,左图的两个outlier将分类面强行拉到左边,得不到最优的分类面)

2 Logit损失函数(Logistic 回归)

逻辑斯特回归的损失函数就是对数损失函数,在逻辑斯特回归的推导中,它假设样本服从伯努利分布(0-1)分布,然后求得满足该分布的似然函数,接着用对数求极值。逻辑斯特回归并没有求对数似然函数的最大值,而是把极大化当做一个思想,进而推导它的风险函数为最小化的负的似然函数。从损失函数的角度上,它就成为了log损失函数。

损失函数:

优点:稳定的分类面,严格凸,且二阶导数连续

3 Hinge损失函数(SVM)

minJ(w)=1n∑i=1nH(yif(xi,w)),whereH(t)={−t+10t<1t≥0

优点:稳定的分类面,凸函数。对分对的但又不是很对的样本也进行惩罚(0-1之间),可以极大化分类间隔。

【问题】为什么不能用回归的损失函数来处理分类的问题

例子:

上例中,红圈中的样本是被正确分类了,但是回归损失函数还是会惩罚它们,而按照分类的观点是不应该惩罚的。

分类 != 回归

特例:1998年LeCun LeNet5 和 2016年的YOLO用回归解决分类问题,是因为它们的特征特别强。

4. 指数损失函数

AdaBoost就是一指数损失函数为损失函数的。
指数损失函数的标准形式:

5 感知机损失函数(L1 margin cost)

损失函数:

minJ(w)=1n∑i=1nH(yif(xi,w)),whereH(t)={−t0t<0t≥0

在t=0处不连续,所以不可导,但是可以求次梯度(导数)。

优点:稳定的分类面,次梯度可导

缺点:二阶不可导,有时候不存在唯一解

5 两种正则化方法

L1正则化假设了模型的先验概率分布服从拉普拉斯分布;L2正则化假设了模型的先验概率分布服从高斯分布。

【问题】什么样的损失函数是好的损失函数?

有明确的极大似然/后验概率解释,如果不满足,则满足以下几条:

minJ(w)=1n∑i=1nH(yif(xi,w))+Ω(w)

  • H(t)
  • 梯度需要有界,鲁棒性保障(反例:AdaBoost)
  • 将L1作为H(t)的渐近线,稳定的分类边界(L1满足最小误分样本数)
  • 大分类间隔,保障泛化性能
  • 选择正确的正则化方式(一般默认L2)

Reference

1 次导数 次梯度 小结
http://blog.csdn.net/bitcarmanlee/article/details/51896348

2 集智公开课 https://jizhi.im/course/dl_theory/6

[机器学习] 深入理解 目标函数,损失函数和代价函数相关推荐

  1. 机器学习中常见的损失函数和代价函数

    损失函数 (loss function) 是用来估量在一个样本点上模型的预测值 h(x) 与真实值 y 的不一致程度.它是一个非负实值函数,通常使用 L(y, h(x)) 来表示. 损失函数可由 y  ...

  2. 深入理解机器学习中的:目标函数,损失函数和代价函数

    参考知乎回答整理:https://www.zhihu.com/question/52398145 主要参考:https://www.zhihu.com/question/52398145/answer ...

  3. 机器学习中的目标函数、损失函数、代价函数有什么区别?

    作者:zzanswer 链接:https://www.zhihu.com/question/52398145/answer/209358209 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...

  4. 机器学习系列(三)——目标函数、损失函数以及代价函数

    机器学习基础(三) 机器学习系列(一)--基础概念及分类 机器学习系列(二)--分类及回归问题 文章目录 机器学习基础(三) 4. 代价函数 4.1 为什么要使用代价函数 4.2 目标函数的作用原理 ...

  5. 机器学习中目标函数、损失函数、代价函数之间的区别和联系

    首先给出结论:损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function) 举个例子解释一下:(图片来自And ...

  6. 机器学习中的目标函数、损失函数、代价函数的区别

    转载自:https://www.zhihu.com/question/52398145 基本概念: 损失函数:计算的是一个样本的误差 代价函数:是整个训练集上所有样本误差的平均 目标函数:代价函数 + ...

  7. 机器学习之线性回归 损失函数、代价函数、目标函数

    损失函数(Loss Function)定义在单个样本上,算的是一个样本的误差.比如: 其中 0-1损失函数: 感知器损失函数: 平方和损失函数: 绝对损失函数: 对数损失函数: 代价函数(Cost F ...

  8. 损失函数、代价函数和目标函数的区别

    目录 一.概念 二.常见的代价函数 1.平方误差损失函数 2.Logit损失函数(Logistic 回归) 3.Hinge损失函数(SVM) 4. 指数损失函数 5.感知机损失函数(L1 margin ...

  9. 损失函数(损失函数、代价函数、目标函数)、​​​​​​​MSE、0-1损失函数、绝对误差损失函数、分位数损失函数、Huber损失函数、感知损失函数、Hinge损失函数、指数损失函数、对数损失函数

    损失函数(损失函数.代价函数.目标函数).MSE.0-1损失函数.绝对误差损失函数.分位数损失函数.Huber损失函数.感知损失函数.Hinge损失函数.指数损失函数.对数损失函数 目录

最新文章

  1. sprintf函数做什么用?
  2. Grunt的配置和使用
  3. Domain Model
  4. allegro约束设置
  5. 洛谷 P1162 填涂颜色-dfs染色法
  6. python核心编程第六章练习6-12
  7. springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器
  8. Linux 第20天: (09月12日) Linux启动和内核管理
  9. 英语学习笔记2019-10-18
  10. MQTT 控制报文类型、功能及格式(报文结构) - 第2章
  11. TensorFlow精进之路(三):两层卷积神经网络模型将MNIST未识别对的图片筛选出来
  12. 多级评论单表结构设计
  13. SAP SD 销售中的借贷项凭证
  14. python语言编程培训班价值有多大?
  15. CVE PoC的精选列表(二)
  16. 福昕阅读器无法注释问题
  17. 人人都能成为闪电网络节点:第7章管理lnd
  18. nbiot开发需要掌握什么_NB-IoT开发都涉及哪些方面?
  19. 打开带参数的exe方法
  20. 中国计算机应用大会征稿通知,全球华人计算机教育应用大会(GCCCE)2015征稿启事...

热门文章

  1. C++调用opencv完成运动目标捕捉
  2. 闭关修炼(十)单例设计
  3. 如何通过云终端,让一台电脑能多台使用?
  4. java获取字典所有的key_java字典,多层字典,斗地主发牌,实例展示
  5. 【前端+后端】前后端分离之——前后端axios通信
  6. python最简单的爬取邮箱地址_python爬取邮箱的实例代码
  7. python 凸多边形面积
  8. ES中 同时使用should和must 导致只有must生效 解决方案
  9. css3 新属性的兼容性之--transform
  10. 码刀客-pandas中将一张表中数据拆分成多个sheet_name