• Hinge Loss 解释

  SVM 求解使通过建立二次规划原始问题,引入拉格朗日乘子法,然后转换成对偶的形式去求解,这是一种理论非常充实的解法。这里换一种角度来思考,在机器学习领域,一般的做法是经验风险最小化 ERM ,即构建假设函数为输入输出间的映射,然后采用损失函数来衡量模型的优劣。求得使损失最小化的模型即为最优的假设函数,采用不同的损失函数也会得到不同的机器学习算法,比如这里的主题 SVM 采用的是 Hinge Loss ,Logistic Regression 采用的则是负 $\log$ 损失,

\[L(Y,P(Y|X)) = - \log P(Y|X)\]

  从二项分布的角度来考虑 Logistic 回归:

\begin{aligned}
P(Y=1|X) &= \frac{1}{1 + e^{- \theta x}}\\
P(Y=0|X) &= 1- P(Y=1|X)
\end{aligned}

  这里另 $z = \theta^Tx$ ,  $\delta$ 为 sigmod 映射,则:

\[E(z) = - \log (\delta(z)) \]

  $E(z)$ 的图形如下图的红色曲线,可见 $z$ 越接近 1 , $E(z)$ 的取值越小,即损失越小。反之另:

\[E(z) = 1- \log (\delta(z)) \]

  此时得到的图像应该为关于 $E(z)$ 对称的红色的线(没画出),此时 $z$ 越接近 -1,$E(z)$ 的取值越小,即损失越小。

  注: 图中绿色的线为 square loss ,蓝色的线为 hinge loss, 红的的线为负 log 损失。

  • 二分类问题

  给定数据集  $T = \left \{ (x_i,y_i)\right \}_{i=1}^N $ , 要用这些数据做一个线性分类器,即求得最优分离超平面 $w\cdot x + b = 0$ 来将样本分为正负两类,给定数据集后只需求得最优的参数  $w , b$ 即可,为了解决这个问题,首先做出如下线性映射函数

\[y = w \cdot x + b\]

  根据经验风险最小化原则, 这里引入二分类的 Hinge Loss :

\[max(0, 1- y_i(w \cdot x_i + b))\]

  上图中对应的 $E(z) = max(0,1-z)$ ,所以SVM可以通过直接最小化如下损失函数二求得最优的分离超平面:

\[ \min_{w,b} \sum_{i=1}^N max(0, 1- y_i(w \cdot x_i + b)) + \lambda ||w||^2 \]

  • 多分类问题

对于多分类问题,现在要用这些数据做一个 k 类的线性分类器 ,现在需要优化的参数变为 $W ,b$ , 此时的 $W \in \mathbb{R} ^{k \times n}$,为一个 $k \times n$ 的矩阵,$b \in \mathbb{R}^k$ 为一个向量,现在的映射关系如下 :$s =W x_i +b$,此时有 $s \in \mathbb{R}^k$  ,$s$ 中的每个分量代表分类器在该类别的得分,样本 $x_i$ 的标签  $y_i \in \mathbb{R}^k$ , 这里若 $x_i$ 属于类别 $k$ ,则 $y_i$ 中除了第 $k$ 个分量外其余元素全为 0 ,比如 5 分类问题, $x_i$  属于第 3 类,则有  $y_i = [0,0,1,0,0]$  , 用 $s_j$ 表示得分向量 $s$ 中的第 $j$ 个分量 , $s_{y_i}$ 表示对应 $y_i = 1$ 的分量,则单个样本多分类的Hinge Loss可表示为:

\[\sum_{j \ne y_i} max(0,s_j - s_{y_i} + 1)\],

所以 $k$ 分类线性分类SVM 的 Hinge Loss表示为:

\[\min_{W,b} \sum_{i=1}^N\sum_{j \ne y_i} max(0,s_j - s_{y_i} + 1) + \lambda \sum_k \sum_nW_{k,n}^2\]

SVM(支持向量机)之Hinge Loss解释的更多相关文章

  1. 支持向量机之Hinge Loss 解释

    Hinge Loss 解释 SVM 求解使通过建立二次规划原始问题,引入拉格朗日乘子法,然后转换成对偶的形式去求解,这是一种理论非常充实的解法.这里换一种角度来思考,在机器学习领域,一般的做法是经验风 ...

  2. logistic regression svm hinge loss

    二类分类器svm 的loss function 是 hinge loss:L(y)=max(0,1-t*y),t=+1 or -1,是标签属性. 对线性svm,y=w*x+b,其中w为权重,b为偏置项 ...

  3. 损失函数 hinge loss vs softmax loss

    1. 损失函数 损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示. 损失函数越小,模型的鲁 ...

  4. 机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)

    https://blog.csdn.net/u010976453/article/details/78488279 1. 损失函数 损失函数(Loss function)是用来估量你模型的预测值 f( ...

  5. Hinge Loss、交叉熵损失、平方损失、指数损失、对数损失、0-1损失、绝对值损失

    损失函数(Loss function)是用来估量你模型的预测值 f(x) 与真实值 Y 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x)) 来表示.损失函数越小,模型的鲁棒性就越好. 损失 ...

  6. SVM | 支持向量机原理讲解(二)

    一.线性可分的支持向量机存在的问题 在支持向量机一中,我们介绍了当数据集是线性可分的时候,我们可以使用线性可分的支持向量机将数据进行分类(由于隔了很长时间才更新,因此忘记了支持向量机一的读者可以回看支 ...

  7. 机器学习实战 - 读书笔记(06) – SVM支持向量机

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...

  8. SVM 支持向量机算法-实战篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...

  9. Python实现SVM(支持向量机)

    Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...

随机推荐

  1. Linux中如何通过设备号找到设备

    关于Linux中的设备文件,设备文件用来为操作系统和用户提供它们代表的设备接口.所有的Linux设备文件均位于/dev目录下,是根(/)文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须 ...

  2. YourSQLDba遭遇.NET Framework Error 6522

    一工厂的SQL Server数据库服务器上的YourSQLDba_LogBackups作业做事务日志备份时,突然出现异常,异常的错误信息指向.NET Framework,出现这个问题时,一般我估计是该 ...

  3. Docker & pure-ftpd 快速加建 FTP 服务器

    项目需要进行升级服务,现在需要基于centos 7使用docker来快速打架一个FTP环境来方便本地文件上传. 本次使用的是 pure-ftpd docker镜像,有关镜像使用的详细信息,本人是从 h ...

  4. [20180819]关于父子游标问题(11g).txt

    [20180819]关于父子游标问题(11g).txt --//sql语句存在父子游标,子游标堆6在父游标堆0里面.--//如果存在许多子游标的情况下,父游标堆0是否大小是发生变化呢.测试看看.--/ ...

  5. 自动化测试基础篇--Selenium中数据参数化之TXT

    摘自https://www.cnblogs.com/sanzangTst/p/7722594.html 一.搜索参数化 在TXT文件中保存需要搜索的内容: 测试代码: 1 #!/usr/bin/env ...

  6. iOS 验证码按钮倒计时

    在app 注册或者登录 需要验证码的地方.为了避免短时间内刷验证码.往往会加上一层验证. 倒计时结束后.可以重新获取! 代码实现如下: // _CountdownTime 倒计时总时间: //_tim ...

  7. GitHub-暂存区与版本回退

    参考博文:廖雪峰Git教程 1. 工作区和暂存区 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 1.1. 工作区(Working Directory) 就是你在电脑里能看到的目录 ...

  8. LeetCode算法题-Minimum Depth of Binary Tree(Java实现)

    这是悦乐书的第168次更新,第170篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第27题(顺位题号是111).给定二叉树,找到它的最小深度.最小深度是沿从根节点到最近的 ...

  9. Linux 小知识翻译 - 「RFC」

    这次聊聊「RFC」. 有很多人经常听说「RFC」的吧,上次介绍的NTP是由「RFC1305规定的」,HTTP是由「RFC2616规定的」. RFC是「Request For Comments」的简称, ...

  10. Java String、StringBuilder、StringBuffer[笔记]

    String对象是字符串常量(创建之后不可更改),StringBuilder和StringBuffer对象是字符串变量(可更改),三者主要区别在于执行速度和线程安全. 执行速度 执行速度:String ...