zoukankan      html  css  js  c++  java
  • 02-36 支持向量回归


    更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

    支持向量回归

    传统回归模型如线性回归,对于样本((x,y))是直接基于模型,通过预测值(f(x_i){y})和真实值(y)之间的差别计算损失,并且当(f(x_i){y}=y)时损失才为零。

    支持向量回归(support vector regression, SVR)则可以容忍(f(x_i){y})(y)之间有最多(epsilon)的偏差,即当(|f(x_i){y}-y|>epsilon)的时候才计算损失,这相当于以(f(x_i){y})为中心,构建了一个宽度为(2epsilon)的间隔带,如果样本落入间隔带,则他的分类就是正确的。

    一、支持向量回归学习目标

    1. 支持向量机和支持向量回归的优化问题
    2. 支持向量回归目标函数的对偶形式
    3. 支持向量回归模型系数的稀疏性
    4. 核支持向量回归
    5. 支持向量机的优缺点

    二、支持向量回归详解

    2.1 支持向量机目标函数优化问题回顾

    线性可分SVM目标函数优化问题为

    [egin{align} & underbrace{min}_{omega,b} {frac{1}{2}}{||omega||}^2 \ & s.t. quad y_i(omega{x_i}+b)geq1, quad i=1,2,ldots,m end{align} ]

    线性SVM由于在目标函数中加入了松弛因子(xi_i>0),目标函数优化问题为

    [egin{align} & underbrace{min}_{omega,b,xi} {frac{1}{2}}{||omega||}^2 + Csum_{i=1}^mxi_i \ & s.t. quad y_i(omega{x_i}+b)geq1-xi_i, quad i=1,2,ldots,m \ & quadquad xi_igeq0, quad i=1,2,ldots,m end{align} ]

    2.2 支持向量回归损失度量函数

    支持向量回归由于有一个间隔带,因此它的损失度量函数为

    [l(f(x_i),y_i) = egin{cases} 0, & if\,|f(x_i)-y_i|leqepsilon \ |f(x_i)-y_i|-epsilon, & if\,|f(x_i)-y_i|>epsilon \ end{cases} ]

    2.3 支持向量回归目标函数优化问题

    由于SVR的间隔带是自己引入的,所以SVR的目标函数变为

    [underbrace{min}_{omega,b}\,{frac{1}{2}}{||omega||}^2 + Csum_{i=1}^ml(f(x_i)-y_i) ]

    如果和线性SVM一样引入松弛因子,但是由于我们的误差度量中的(|f(x_i)-y_i|leqepsilon)是绝对值小于,因此这个不等式其实是两个不等式,则SVR需要引入两个松弛因子(xi_i)(hat{xi_i}),则SVR的优化问题将变成

    [underbrace{min}_{omega,b,xi_i,hat{xi_i}}{frac{1}{2}}||w||^2+Csum_{i=1}^m(xi_i+hat{xi_i}) ]

    [egin{align} s.t. & f(x_i)-y_ileqepsilon+xi_i, \ & y_i-f(x_i)leqepsilon+hat{xi_i}, \ & xi_igeq0,hat{xi_i}geq0,\,i=1,2,cdots,m end{align} ]

    对SVR的优化问题引入拉格朗日乘子(mu_igeq0,hat{mu_i}geq0,alpha_igeq0,hat{alpha_i}geq0),通过拉格朗日乘子法即可得到拉格朗日函数

    [egin{align} & L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu}) \ & = frac{1}{2}||w||^2+Csum_{i=1}^m(xi_i+hat{xi_i})-sum_{i=1}^mmu_ixi_i-sum_{i=1}^mhat{mu_i}hat{xi_i} \ & +sum_{i=1}^malpha_i(f(x_i)-y_i-epsilon-xi)+sum_{i=1}^mhat{alpha_i}(y_i-f(x_i)-epsilon-hat{xi_i}) end{align} ]

    2.4 支持向量回归目标函数对偶形式

    通过拉格朗日即可得到支持向量回归目标函数的原始形式

    [underbrace{min}_{w,b,xi_i,hat{xi_i}} quad underbrace{max}_{mu_igeq0,hat{mu_i}geq0,alpha_igeq0,hat{alpha_i}geq0} L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu}) ]

    可以发现支持向量回归的目标函数的原始形式也满足KTT条件,即可以通过拉格朗日对偶将我们的问题转化为等价的对偶问题,即

    [underbrace{max}_{mu_igeq0,hat{mu_i}geq0,alpha_igeq0,hat{alpha_i}geq0} quad underbrace{min}_{w,b,xi_i,hat{xi_i}}L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu}) ]

    首先求优化函数对让({w,b,xi_i,hat{xi_i}})的极小值,再求拉格朗日乘子({mu_i,hat{mu_i},alpha_i,hat{alpha_i}})的极大值,即先得到拉格朗日函数(L(w,b,alpha,hat{alpha},xi,hat{xi},mu,hat{mu}))分别对(w,b,xi_i,hat{xi_i})求偏导为0可得

    [egin{align} & w = sum_{i=1}^m(hat{alpha_i}-alpha_i)x_i, \ & 0 = sum_{i=1}^m(hat{alpha_i}-alpha_i), \ & C = alpha_i + mu, \ & C = hat{alpha_i} + hat{mu_i}, end{align} ]

    将拉格朗日函数对(w,b,xi_i,hat{xi_i})的偏导代入拉格朗日函数,即可得SVR的对偶问题

    [underbrace{max}_{alpha,hat{alpha}} sum_{i=1}^my_i(hat{alpha_i}-alpha_i)-epsilon(hat{alpha_i}+alpha_i) - frac{1}{2} sum_{i=1}^msum_{j=1}^m(hat{alpha_i}-alpha_i)(hat{alpha_i}-alpha_j)x_i^Tx_j ]

    [egin{align} s.t. & sum_{i=1}^m(hat{alpha_i}-alpha_i)=0 \ & 0leqalpha_i,hat{alpha_i}leq{C} end{align} ]

    对于上述SVR的目标函数的对偶形式取对数,即可变成最小化目标函数的优化问题,即

    [underbrace{min}_{alpha,hat{alpha}} -sum_{i=1}^my_i(hat{alpha_i}-alpha_i)+epsilon(hat{alpha_i}+alpha_i) + frac{1}{2} sum_{i=1}^msum_{j=1}^m(hat{alpha_i}-alpha_i)(hat{alpha_i}-alpha_j)x_i^Tx_j ]

    [egin{align} s.t. & sum_{i=1}^m(hat{alpha_i}-alpha_i)=0 \ & 0leqalpha_i,hat{alpha_i}leq{C} end{align} ]

    对于这个目标函数,依然可以使用SMO算法求出对应的(alpha_i,hat{alpha_i}),进而求出回归模型的(w,b)

    2.5 支持向量回归模型系数的稀疏性

    在对支持向量回归的目标函数优化的时候,我们假设该目标函数满足KKT条件,该KKT条件为

    [egin{cases} alpha_i(f(x_i)-y_i-epsilon-xi_i)=0, \ hat{alpha_i}(y_i-f(x_i)-epsilon-hat{xi_i})=0, \ alpha_ihat{alpha_i}=0,xi_ihat{xi_i}=0, \ (C-alpha_i)xi_i=0,(C-hat{alpha_i}hat{xi_i}=0 end{cases} ]

    从上式可以看出,只有当(f(x_i)-y_i-epsilon-xi_i=0)的时候(alpha_i)才可以为非0解,并且只有当(y_i-f(x_i)-epsilon-hat{xi_i}=0)的时候(hat{alpha_i})才可以为非0解。

    首先根据松弛变量的定义,如果(|f(x_i)-y_i-epsilon-xi_i|<epsilon),则样本点落在间隔带中,则(xi_i=0,hat{xi_i}=0),既可以得到(f(x_i)-y_i-epsilon-xi_i eq0,y_i-f(x_i)-epsilon-hat{xi_i} eq0),则可以得到(alpha_i=0,hat{alpha_i}=0),则(hat{alpha_i}-alpha_i=0)

    即只有样本点((x_i,y_i))不落入间隔带中才能使得相应的(alpha_i)(hat{alpha_i})为非0解,并且由于样本点既不能同时在分隔超平面的两边,即(f(x_i)-y_i-epsilon-xi_i=0)(y_i-f(x_i)-epsilon-hat{xi_i}=0)不能同时存在,即(alpha_i)(hat{alpha_i})至少有一个为0并且不能同时为0,则(hat{alpha_i}-alpha_i eq0)

    假设(alpha_i)已经通过SMO算法得到,则可以得到(w=sum_{i=1}^m(hat{alpha_i}-alpha_i)x_i),即可得SVR的分离超平面为

    [f(x) = sum_{i=1}^m(hat{alpha_i}-alpha_i)x_i^Tx+b ]

    从上式可以看出当样本点落在间隔带,由于(hat{alpha_i}-alpha_i=0),即(w=0),则(w)不受这些间隔带内点的影响,对于间隔带外的样本点,则会对(w)造成影响,即这些点为SVR的支持向量。并且由于SVR的支持向量仅仅是训练样本的一部分,所以SVR的解(w)具有稀疏性。

    SVR对于(b)的求解类似于SVM,由于能得到多个(b)值,所以最后对(b)取平均值。

    2.6 核支持向量回归

    上一节得到了SVR的分离超平面为

    [f(x) = sum_{i=1}^m(hat{alpha_i}-alpha_i)x_i^Tx+b ]

    如果我们使用和SVM一样的核技巧,即对SVR训练数据做一个样本映射,即另(phi(x))表示(x)映射后的特征向量。则分离超平面可以变为

    [egin{align} f(x) & = sum_{i=1}^m(hat{alpha_i}-alpha_i)phi{(x_i)}^Tphi{(x)}+b \ & = sum_{i=1}^m(hat{alpha_i}-alpha_i)k(x,x_i)+b end{align} ]

    其中(k(x,x_i))为核函数。

    三、小结

    SVR除了可以支持回归问题外,其他方面和SVM差不多,由于SVR也算作是SVM的一个分支,此处不多说什么,参考SVM即可。

  • 相关阅读:
    使用SignalR实现即时通讯功能
    SignalR入门篇
    Mongodb关闭开源许可感想
    RaspberryPi学习教程系列4(串口通信篇)
    RaspberryPi学习教程系列3(编程实验篇-双色LED实验)
    RaspberryPi学习教程系列1(系统安装篇)
    RaspberryPi学习教程系列2(编程前准备篇)
    关于Entity Framework,园里有非常多误人子弟的`
    Java多线程1:使用多线程的几种方式以及对比
    Django编写RESTful API(六):ViewSets和Routers
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11686731.html
Copyright © 2011-2022 走看看