zoukankan      html  css  js  c++  java
  • SVM

    SVM

    什么是超平面

    • 超平面的表达式为(omega^Tx+b=0), 其中(omega)为超平面的一个法向量, b为超平面的偏移量
    • 更多:
      • 在几何中, 直线, 平面, 超平面无一例外都可以被表示成( heta^Tx+b=0)或者(omega^Tx+b=0), 其中, 因为x没有包含偏移量, 所有加上一个b, ( heta)(omega)为系数向量, 其实就是对应的平面或者直线的法向量, 这里很能有一些人不能理解为什么(omega)成了法向量了, 下面给一个例子
      • 一个平面方程: (Ax_1+Bx_2+Cx_3+D=0)
      • 首先, 如果我们学过高等数学的话, 希望还记得(A, B, C)就是这个平面的法向量这个结论, 这样的话, ((A, B, C)^T(x_1, x_2, x_3)=0), 截距(D)是不影响的, 显然(omega^Tx=0), (omega)为平面的法向量
      • 下面来推导
        • ((x_0, y_0, z_0))是平面(Ax_1+Bx_2+Cx_3+D=0)上的一点, 则有方程$$Ax_0+By_0+Cz_0+D=0$$
        • 则可以有$$A(x_1-x_0)+B(x_2-y_0)+C(x_3-z_0)=0$$
        • 将上述的方程写成向量式为((A, B, C)^T(x_1-x_0, x_2-y_0, x_3-z_0)=0), 显然((x_1-x_0, x_2-y_0, x_3-z_0))为平面(Ax_1+Bx_2+Cx_3+D=0)上的一条直线, 向量((A, B, C))与他的内积为0表示((A, B, C))为平面(Ax_1+Bx_2+Cx_3+D=0)的法向量
        • 将平面方程写成((A, B, C)^T(x_1, x_2, x_3)+D=0), 进一步的, (omega^Tx+D=0), 在上面一步我们一定得出了(omega)为平面的法向量, (x)为平面上的一条直线

    SVM类型

    • 线性可分SVM

      • 在不修改维度的前提下, 可以线性的分隔, 得到一个线性分类器
    • 非线性SVM

      • 在不修改维度的前提下, 不能通过线性的分隔所有的样本, 如果需要需要分类样本需要借助核函数
      • 核函数将当前的特征的维度进行映射, 映射到一个高维度
    • SVM是一个二次规划问题

      • 目标函数(min({1over{2}}||omega||^{2}))
      • 约束为

        [egin{cases} omega^Tx_0+b >= 1 & if & y = +1 \ omega^Tx_0+b <= -1 & if & y = -1 end{cases} ]

      • 上面是多个式子, 通过一个技巧将多个式子合成一个
        • (y(omega^Tx_0)+b)>=1), 这个就是我们的新的约束条件, 只要(y(omega^Tx_0+b)<1)则超平面(omega^Tx+b)不符合我们的要求; 如果(y(omega^Tx_0+b)>=1)则超平面(omega^Tx+b)确实符合我们的约束条件, 但是不一定符合(min({1over{2}}||omega||^{2})), 所有可能有多个超平面符合约束条件但是不是最优的

    凸优化

    • 对于式子
      • [min({1over{2}}||omega||^{2}) ]

      • [ egin{cases} omega^Tx_0+b >= 1 & if & y = +1 \ omega^Tx_0+b <= -1 & if & y = -1 end{cases} ]

    • 目标函数是二次的, 约束条件是线性的, 使用拉格朗日乘数法计算
      • (L(omega, alpha, eta)=f(omega)+sum_{i=1}^{k}alpha_{i}g_i(x)+sum_{i=1}^{k}eta_ih_i(x))
      • 得到最终的目标函数(L(omega, b, alpha)=min({1over{2}}||omega||^{2})-sum_{i=1}^{m}{alpha_i}(y^{i}(omega^Tx_i+b)-1)), 其中(y^{i}(omega^Tx_i+b)-1)是约束条件的进行简单变换的形式, (alpha)为拉格朗日因子
      • 现在我们只需要求出(min(L(omega, b, alpha)))即可
      • 因为要求极值, 就要求出偏导, 在这里, 分别对(omega)(b)求偏导, 得到

        [egin{cases} omega=sum_{i=1}^{m}{alpha}y^{i}x^{i} & (1) & 对omega的偏导\ sum_{i=1}^{m}alpha_{i}y^{i}=0 & (2) & 对b的偏导 end{cases} ]

      • 将公式(1)和(2)带入到目标函数中, 消掉(omega)(b), 这样就得到了一个只含有(alpha)的式子了, 因为(1)告诉我们(omega)(alpha)的关系, 所有只要求出(alpha)就可以得出(omega)(b), 有了(omega)(b)就能计算出最优的超平面了
      • 关于计算出最终的结果, 需要使用SMO算法
      • 额外的, 如果我们不对原始的问题添加松弛变量的话, 则会导致过拟合的现象, 所有我们还需要修改原始公式添加松弛变量和正则化参数

    拉格朗日乘数法(二次优化问题)

    • 拉格朗日乘数法知识将原始的问题转换了一下, 我们并不是通过拉格朗日求出最后的结果, 而是为了使用SMO(一个流弊的算法)求出最后的结果做准备
    • 借别人的话就是
      • 分类间隔,引入SVM。
      • 使用拉格朗日乘子来简化SVM问题的优化。
      • 非线性分类(核函数)以及松弛变量。
      • SMO算法实现简单的SVM分类器。

    Hinge + L2损失函数

    • 这是从另外给一个角度解决SVM

    MATLAB实现SVM

    • 将原始问题转换为拉格朗日对偶式, 显然这个也是一个二次规划问题, 调用matlab自带的qualprog函数得到支持向量(得到(alpha)的解)
  • 相关阅读:
    不可小视视图对效率的影响力
    Maximum Margin Planning
    PhysicsBased Boiling Simulation

    Learning Behavior Styles with Inverse Reinforcement Learning
    Simulating Biped Behaviors from Human Motion Data
    Nearoptimal Character Animation with Continuous Control
    Apprenticeship Learning via Inverse Reinforcement Learning
    回报函数学习的学徒学习综述
    Enabling Realtime Physics Simulation in Future Interactive Entertainment
  • 原文地址:https://www.cnblogs.com/megachen/p/10018497.html
Copyright © 2011-2022 走看看