zoukankan      html  css  js  c++  java
  • 支持向量机之Hinge Loss 解释

    Hinge Loss 解释

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

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

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

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

    这里另 $z = heta^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 损失。
    2.1 二分类问题

    给定数据集  $T = left { (x_i,y_i) ight }_{i=1}^N $ , 要用这些数据做一个线性分类器,即求得最优分离超平面 $wcdot 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 ]

    2.2 多分类问题

    对于多分类问题,现在要用这些数据做一个 k 类的线性分类器 ,现在需要优化的参数变为 $W ,b$ , 此时的 $W in mathbb{R} ^{k imes n}$,为一个 $k imes 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 e y_i} max(0,s_j - s_{y_i} + 1)],

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

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

  • 相关阅读:
    Ocelot一款.NET下的API网关介绍
    【Core】.NET Core 部署( Docker + CentOS)
    VS2019添加git源代码管理
    sql两个表组合到一起,字符串拼接后放在最后一列上
    sqlserver取随机数随机取数
    delphi时间戳(10位)
    消息 7356,级别 16,状态 1,第 1 行 链接服务器 "downloadschoolcardinfo" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 为列提供的元数据不一致。对象 ""VIEW_ZJK"."V_QDXQHIS_RYXX"" 的列 "XZZ" (编译时序号为 9)在编译时有 1 的 "LENGTH",但在运行时有 2。
    sqlserver简单的组合串
    Delphi提示:List Index out Of bounds(5)
    SQLserver简单的竖向转横向
  • 原文地址:https://www.cnblogs.com/ooon/p/5539687.html
Copyright © 2011-2022 走看看