• Kernel Methods (4) Kernel SVM


    (本文假设你已经知道了hard margin SVM的基本知识.)
    如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep learning打败. 但这个打败也仅仅是在Computer Vision 领域. 可以说对现在的AI研究来说, 第一火的算法当属deep learning. 第二火的仍是SVM. 单纯的SVM是一个线性分类器, 能解决的问题不多. 是kernel methods为SVM插上了一双隐形的翅膀, 让它能翱翔于AI研究的天空, 因为kernel methods可以将线性SVM变成非线性的.

    问题描述

    • 给定:
      • 一个training set (D), 由(m)个二元组((x_i, y_i))组成.
        • (x_i)是一个(d)维列向量, (x_i in R^d)
        • (y_i = pm 1), 代表(x_i)所属类别
        • (i in [1, m])
      • 一个kernel function (kappa)
    • 目标: 用D训练一个kernel svm分类器, 判断测试样本(x otin D)的类别(y)

    目标函数

    假设(kappa)对应的feature mapping function为(Phi), 那么(Phi(x))(x)从原始输入空间(chi:R^d)映射到一个线性可分的特征空间(H:R^n). 这时用SVM对新得到的训练数据((Phi(x_i), y_i))进行线性分类.
    SVM的优化目标是maximum margin. 这个margin是指正负两类decision boundaries的距离.
    两个decision boundaries的方程为:

    [w^T Phi(x) + b = pm 1 ]

    它们的距离为:

    [margin = frac {2}{||w||} ]

    最大化(d)的值就是最小化(||w||)的值, 所以SVM的优化目标又可以写为:

    [minimize : J(w) = frac 12 w^T w ]

    因为需要正确分类所有的training data, 所以需要满足的约束条件为:

    [y_i(w^T Phi(x_i) + b) ge 1, forall iin[1,m] ]

    对偶问题

    上述优化问题的Lagrange multipliers function为:

    [J(w, b, alpha_1, dots alpha_m) = frac 12 w^Tw - sum_{i = 1}^m alpha_i[y_i(w^TPhi(x_i) + b) - 1], alpha_i ge 0 ]

    它取得最小值的必要条件为

    [frac {partial J}{partial w} = w - sum_{i = 1}^m alpha_i y_i Phi(x_i) = 0 ]

    [frac {partial J}{partial b} = sum_{i = 1}^m alpha_i y_i = 0 ]

    [ o w = sum_{i = 1}^m alpha_i y_i Phi(x_i) = Z^T eta ]

    其中

    [Z = left[ egin{matrix} Phi(x_1)^T\ Phi(x_2)^T\ vdots \ Phi(x_m)^T end{matrix} ight] qquad eta = left[ egin{matrix} alpha_1y_1\ alpha_2y_2\ vdots \ alpha_my_m end{matrix} ight] ]

    ( o)

    [w^Tw = eta^T Z Z^T eta = eta^TKeta ]

    [w^TPhi(x_i) = eta^T Z Phi(x_i) = eta^T k_i^T = k_ieta ]

    其中, (K)是kernel matrix, (k_i)(K)的第(i)行.
    代入 (J(w, b, alpha_1, dots alpha_m)), 就得到了对偶问题:

    [maximumize: W(alpha) = sum_{i=1}^m alpha_i + frac 12 eta^T K eta - sum_{i=1}^m alpha_iy_ik_ieta ]

    [= sum_{i=1}^m alpha_i + frac 12 eta^T K eta - eta^T K eta ]

    [= sum_{i=1}^m alpha_i - frac 12 eta^T K eta ]

    [= sum_{i=1}^m alpha_i - frac 12 sum_{i=1}^msum_{j=1}^m alpha_ialpha_j y_i y_j kappa(x_i, x_j) ]

    它需要满足两个约束条件:
    ((1)sum_{i = 1}^m alpha_i y_i = 0)
    ((2)alpha_i ge 0)
    可以解出(W(alpha))里包含的未知参数(alpha = (alpha_1,dots, alpha_m)).具体解法先略过.

    得到(w)(b)

    (alpha)已知后, 可以求得(w):

    [w = sum_{i = 1}^m alpha_i y_i Phi(x_i) ]

    现在就差(b)了. 如何求(b)呢? 现在回头想想SVM里的Support Vector的概念. 对于位于decision boudaries上的样本, 它们的(y_i(w^TPhi(x_i) + b) = 1). 所以(b)可以根据支持向量, 即(alpha_i eq 0)对应的(Phi(x_i))来求得, 用(Phi(x_{sv}))表示.

    [b = y_{sv} - w^TPhi(x_{sv}) = y_{sv} - sum_{i = 1}^m alpha_i y_i Phi(x_i)^T Phi(x_{sv}) = y_{sv} - sum_{i=1}^m alpha_i y_i kappa(x_i, x_{sv}) ]

    SV会存在多个, 理论上每个SV求出来的(b)应该是相等的. 但在现实情况中会存在计算误差, 所以一个更robust的做法是利用所有的SV求出各自的(b), 然后取平均值.
    这个时候, (w)中还有(Phi), 真实值是未知的, 但没关系. (b)则完全已知了.

    预测新样本的类别

    最后得到的SVM模型为

    [y = sgn(w^TPhi(x) + b) = sgn(sum_{i = 1}^m alpha_i y_i Phi(x_i)Phi(x) + b) = sgn(sum_{i = 1}^m alpha_i y_i kappa(x_i, x) + b) ]

  • 相关阅读:
    KindEditor自动过滤首行缩进和全角空格的解决方法
    网站流量、连接数等监控
    VSFTP的使用
    CentOs 设置静态IP
    MySQL 5.7版本sql_mode=only_full_group_by问题
    使用密钥登录CentOS系统(基于密钥的认证)
    FIRMWARE BUG – THE BIOS HAS CORRUPTED HW-PMU RESOURCES
    Ubuntu上的MySQL可以远程访问
    自动生成单据编号
    SQL Server 重置SA密码语句
  • 原文地址:https://www.cnblogs.com/dengdan890730/p/5523215.html
Copyright © 2020-2023  润新知