支持向量机

支持向量机(SVM)的概念

  • 主要思想:可以在逻辑回归的基础上修改,修改代价函数,去掉1/m,正则项去掉\(\lambda\),代价项增加C;这些更改使得函数在保证算法性能的基础上减少运算量,同时直接给出预测结果而不是预测概率
      1)修改代价函数:
        原逻辑回归对针对一项样本的代价计算:\(-yln(h_{\theta}(x))-(1-y)ln(1-h_{\theta}(x))\)
        修改后y=1时针对一项样本的代价计算:\(cost_{1}(\theta^{T}x)\)
        修改后y=0时针对一项样本的代价计算:\(cost_{0}(\theta^{T}x)\)
        cost函数是对当y=1和y=0时近似模拟得到的曲线
    (图1)
      2)去掉1/m:整体的常数项系数并不影响整体的最小值求解
      3)正则项去掉\(\lambda\),代价项增加C:可以理解为C是\(\frac{1}{\lambda}\)
        对于逻辑回归的正则化函数可以理解为\(A+\lambda B\),其中\(\lambda\)是权衡A和B最小化的比重
        对于修改后的函数可以理解为\(CA+B\),其中C是权衡A和B最小化的比重,所以也可以理解上认为C是\(\frac{1}{\lambda}\)
  • 最终的代价函数以及预测函数\(h_{\theta}(x)\)的变化:
      其中对于\(h_{\theta}(x)\)来说-1到1的间距是一个安全因子

\[\underset{\theta}{min}C\sum_{i=1}^{m}[y^{(i)}cost_{1}(\theta^{T}x^{(i)})+(1-y^{(i)})cost_{0}(\theta^{T}x^{(i)})]+\frac{1}{2}\sum_{j=1}^{n}\theta_{j}^{2} \\h_{\theta}(x)=\left\{\begin{matrix} 1&\theta^{T}x\geq1\\ 0&\theta^{T}x\leq-1 \end{matrix}\right. \]

  • 大间隔分类器的直观理解
      当C很大时“大间隔”会比较形象的显现出来(大间隔是指样本到决策界限的间距,大间隔分类器通常使用尽可能大的间距分隔不同种类的样本)
  • 大间隔分类器的数学原理
      首要前提:当C很大时,相当于给优化问题增加了约束条件(因为要使cost尽可能小):

\[s.t.\;\;\theta^{T}x^{(i)}\geq1\;,if\;\;y=1 \\\theta^{T}x^{(i)}\geq-1\;,if\;\;y=0 \]

        最小化的其它工作:因为前面一项接近于0,剩下就是\(\frac{1}{2}\sum_{j=1}^{n}\theta_{j}^{2}\)的最小化,即目标是找到使得\(\left \| \theta \right \|\)尽可能小的\(\theta\)
        转化向量内积表达:\(\theta^{T}x^{(i)}=p^{(i)}\left \| \theta \right \|\),其中\(p^{(i)}\)可以视作样本i对应的坐标到决策界限的距离(\(p^{(i)}\)直观意义是样本i对应的向量在\(\theta\)对应的向量上的投影长度,这是因为由决策界限表达式\(\theta^{T}x^{(i)}=0\)可知\(\theta\)向量垂直于决策界限)
        预测函数的决策范围:因为只有当\(p^{(i)}\left \| \theta \right \|\geq 0\)时才有y=1(或反之),而\(\left \| \theta \right \|\)是在最小化过程中最小化的对象,这使得\(p^{(i)}\)只能尽可能大,即样本点到到决策界限的距离要尽可能大,这也说明了大间隔的由来(SVM具有大间距分类器的性质)

核函数

特征构造

  • 选取标记:在特征空间中中指定几个点作为标记(给定样本维数为n,特征空间就是n维,不包括常数项)
  • 核函数概念:类似于各种相似度度量的函数,一般表达为\(f_{i}=k(x,l^{(i)})\)
  • 高斯核函数:\(f_{i}=exp(-\frac{\left \|x-l^{(i)}\right\|^{2}}{2\varepsilon ^{2}})\)
  • 核函数的使用:在预测函数\(h_{\theta}\)中的\(\theta^{T}x\)中,用构造的特征\(f_{i}\)取代\(x_{i}\)(除了偏置项)
  • 对于给定样本\(x^{(i)},y^{(i)}\):确定特征向量\(f^{(i)}\),其中\(f_{j}^{(i)}=k(x^{(i)},l^{(j)}),f_{0}^{(i)}=0\),且\(l^{(j)}=x^{(j)}\),所以该向量中元素\(f_{i}^{(i)}=1\)(使用高斯核函数)
  • 对于正则化项\(\frac{1}{2}\sum_{j=1}^{n}\theta_{j}^{2}\),注意到可以向量化表示为\(\frac{1}{2}\theta^{T}\theta\)的形式,而一般的支持向量机里人们还会在上面做出一点改变:\(\frac{1}{2}\theta^{T}M\theta\),这使得支持向量机能更有效率地工作,使得其能运用在更大的训练集上

参数的选择

  • C参数:C过大,对应着低偏差高方差,倾向于过拟合;C过小,对应着高偏差低方差,倾向于欠拟合;
  • \(\sigma^{2}\)参数:\(\sigma^{2}\)过大,\(f_{i}\)变化平缓,对应着高偏差低方差,倾向于欠拟合;\(\sigma^{2}\)过小,\(f_{i}\)变化不平缓,对应着低偏差高方差,倾向于过拟合;

SVM的使用

内核函数的选择

  • 线性内核函数(无核函数):该函数没有内核参数,直接使用\(\theta^{T}x\)预测(比如\(\theta^{T}x>0\)\(y=1\)

    使用:1)当特征数n较大样本量m较小时使用(避免陷入过拟合);

    2)当n较小m很大时适当增加特征数再使用(提高拟合速度)

  • 高斯内核函数:使用\(f_{i}=exp(-\frac{\left \|x-l^{(i)}\right\|^{2}}{2\varepsilon ^{2}})\)代替\(\theta^{T}x\)中的\(x_{i}\)进行预测

    使用:当特征数n较小样本量m始终或较大(不是很大)时使用(拟合复杂的曲线,同时比神经网络快)

    注意:样本变量在使用前记得先规范化,避免某个变量占很大比重的情况

  • 其它内核函数:其它核函数都比较少用,且只有满足莫塞尔定理的核函数才能用于SVM中

    多项式核函数(Polynomial kernel):\((x^{T}l+系数)^{degree}\),通常用在x和l都是严格非负数的情况下

    其它:String kernel,chi-square kernel, histogram intersection kernel...

与其他拟合方法的比较

  • 逻辑回归:SVM与逻辑回归实际上相类似,大部分能使用线性内核函数或逻辑回归的问题中,结果都比较相近,两者其中一个能适用的情况下另一个回归方法都可能有不错的效果,像n较大m较小或n较小m很大的情况下都可以使用逻辑回归,其特征的获取与线性内核函数中的做法相类似
  • 神经网络:对于三种不同的n和m规模情况,一个设计得好的神经网络都可以获得不错的结果,但许多情况下神经网络的训练都特别慢,这时候使用SVM可以提高训练效率;此外关于局部最优,这对于神经网络来说不是个大问题,而好的SVM包通常也会找到全局最小值或接近全局最小的值(SVM的优化问题是一种凸优化问题)
posted @ 2021-11-06 12:12  kksk43  阅读(60)  评论(0)    收藏  举报
特效
黑夜
侧边栏隐藏