hinge loss

文章目录

  • 一、Hinge loss概念
    • 1.1 简介
    • 1.2 公式
    • 1.3 矢量化实现
    • 1.4 变种
  • 二、Hinge loss用法
  • 三、Hinge loss在SVM中的应用
  • 有趣的事,Python永远不会缺席
  • 培训说明

一、Hinge loss概念

1.1 简介

  在机器学习中,hinge loss作为一个损失函数(loss function),通常被用于最大间隔算法(maximum-margin),在网上也有人把hinge loss称为铰链损失函数,它可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的损失函数。而最大间隔算法又是SVM(支持向量机support vector machines).
  用到的重要算法(注意:SVM的学习算法有两种解释:1. 间隔最大化与拉格朗日对偶;2. Hinge Loss)。

1.2 公式

  Hinge Loss的定义如下:

  L(y) = max(0,1−t * y) 还使用了一个边界值margin,取值为1

  损失是0,否则损失就是 1−t * y 。1−t * y 作为每个分类的评分,正确分类的分值越大越好,错误分类的分值越小越好。

  其中, t=±1, 需要注意的是 y 并不是分类的label,而只是决策函数的输出。例如在线性SVM中, y=wx+b, x 是待分类点, w 和 b 构成分类超平面。
  其中,y是预测值(-1到1之间),t为目标值(1或 -1)。其含义为,y的值在 -1到1之间即可,并不鼓励 |y|>1,即让某个样本能够正确分类就可以了,不鼓励分类器过度自信,当样本与分割线的距离超过1时并不会有任何奖励。目的在于使分类器更专注于整体的分类误差。
  从定义可以很容易看出,当 t 和 y 符号一致(表示 y 分类正确) ,且 ∥y∥≥1时,Hinge Loss L(y)=0; 当符号不一致时,L(y)=0 随 y 线性增加。

1.3 矢量化实现

Def Li_vecterized(x,y,W):
Score =W.dot(x)
Margins = np.maximum(0,scores-scores[y]+1)
Margins[y]=0
Loss_i = np.sum(margins)
Return Loss_i

1.4 变种

  在实际应用中,一方面,预测值y并不总是属于[-1,1],也可能属于其他的取值范围;另一方面,很多时候我们希望训练的是两个元素之间的相似关系,而非样本的类别得分。所以下面的公式可能会更加常用:

  L( y, y′) = max( 0, margin – (y–y′) )
      = max( 0, margin + (y′–y) )
      = max( 0, margin + y′ – y)

  其中,y是正确预测的得分,y′是错误预测的得分,两者的差值可用来表示两种预测结果的相似关系,margin是一个由自己指定的安全系数。我们希望正确预测的得分高于错误预测的得分,且高出一个边界值 margin,换句话说,y越高越好,y′ 越低越好,(y–y′)越大越好,(y′–y)越小越好,但二者得分之差最多为margin就足够了,差距更大并不会有任何奖励。这样设计的目的在于,对单个样本正确分类只要有margin的把握就足够了,更大的把握则不必要,过分注重单个样本的分类效果反而有可能使整体的分类效果变坏。分类器应该更加专注于整体的分类误差。

二、Hinge loss用法

  Hinge loss专用于二分类问题,标签值y=±1,预测值y∈R。该二分类问题的目标函数的要求如下:
  当y大于等于+1或者小于等于-1时,都是分类器确定的分类结果,此时的损失函数loss为0;而当预测值y∈(−1,1)时,分类器对分类结果不确定,loss不为0。显然,当y=0时,loss达到最大值。

三、Hinge loss在SVM中的应用

  SVM在简单情况下(线性可分情况下)使用的就是一个最大间隔算法。几何意义如下图所示(实心的数据点就是该类别的支持向量),最大化分离超平面到两个类别的支持向量之间的距离 。

hinge loss_第1张图片
https://www.cnblogs.com/wangxiu/p/5668659.html
hinge loss_第2张图片

注:还是不太懂,后期在研究

有趣的事,Python永远不会缺席

欢迎关注小婷儿的博客

    文章内容来源于小婷儿的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

    如需转发,请注明出处:小婷儿的博客python    https://www.cnblogs.com/xxtalhr/

博客园 https://www.cnblogs.com/xxtalhr/

CSDN https://blog.csdn.net/u010986753

有问题请在博客下留言或加作者:
     微信:tinghai87605025 联系我加微信群
     QQ :87605025
     python QQ交流群:py_data 483766429

培训说明

OCP培训说明连接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

     小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。重要的事多说几遍。。。。。。

你可能感兴趣的:(SVM)