首页 > 其他分享 >统计学习方法学习笔记-07-支持向量机03

统计学习方法学习笔记-07-支持向量机03

时间:2022-09-18 23:23:41浏览次数:83  
标签:03 07 sum new 学习 cdots alpha mathcal 函数

包含对三种支持向量机的介绍,包括线性可分支持向量机,线性支持向量机和非线性支持向量机,包含核函数和一种快速学习算法-序列最小最优化算法SMO。

非线性支持向量机与核函数

核技巧

非线性分类问题

给定一个训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i\)属于输入空间,\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{-1,+1\},i = 1,2,\cdots,N\),如果可以用\(R^n\)中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题
用线性分类方法求解非线性问题分为两步,首先使用一个变换将原空间的数据映射到新空间,然后在新空间里用线性分类方法从训练数据中学习分类模型,基本想法就是通过一个非线性变换将输入空间对应于一个特征空间

核函数的定义

设\(\mathcal{X}\)是输入空间(欧式空间\(R^n\)的子集或离散集合),又设\(\mathcal{H}\)为特征空间(希尔伯特空间),如果存在一个从\(\mathcal{X}\)到\(\mathcal{H}\)的映射:

\[\phi(x):\mathcal{X} \rightarrow \mathcal{H} \]

使得对所有\(x,z \in \mathcal{X}\),函数\(K(x,z)\)满足条件:

\[K(x,z) = \phi(x) \cdot \phi(z) \]

则称\(K(x,z)\)为核函数,\(\phi(x)\)为隐射函数,式中\(\phi(x) \cdot \phi(z)\)是两者的内积,核技巧的想法是,在学习与预测中只定义核函数\(K(x,z)\),而不显示地定义隐射函数\(\phi\),可以看到,对于给定的核\(K(x,z)\),特征空间\(\mathcal{H}\)和隐射函数\(\phi\)的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射

核技巧在支持向量机中的应用

在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及输入实例与实例之间的内积

\[\frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j) - \sum_{i = 1}^N\alpha_i \]

在对偶问题的目标函数中的内积\(x_i \cdot x_j\)可以用核函数\(K(x,z) = \phi(x) \cdot \phi(z)\)来代替,此时对偶问题的目标函数为:

\[W(\alpha) = \frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j) - \sum_{i = 1}^N\alpha_i \]

同样,分类决策中的内积也可以用核函数代替:

\[f(x) = sign\left(\sum_{i = 1}^{N_s}\alpha_i^*y_iK(x_i , x) + b^*\right) \]

这等价于经过映射函数\(\phi\)将原来的输入空间变换到一个新的特征空间,将输入空间的内积\(x_i \cdot x_j\)变换为特征空间中的内积\(\phi(x_i) \cdot \phi(x_j)\)

正定核

目的:函数\(K(x,z)\)成为核函数的条件

正定核的充要条件

设\(K:\mathcal{X} \times \mathcal{X} \rightarrow R\)是对称函数,则\(K(x,z)\)为正定核的充要条件是对任意\(x_i \in \mathcal{X},i = 1,2,\cdots,m,K(x,z)\)对应的Gram矩阵:

\[K = [K(x_i,x_j)]_{m \times m} \]

是半正定矩阵

正定核的等价定义

设\(\mathcal{X} \subset R^n,K(x,z)\)是定义在\(\mathcal{X} \times \mathcal{X}\)上的对称函数,如果对任意的\(x_1,x_2,\cdots,x_m \in \mathcal{X},K(x,z)\)关于\(x_1,x_2,\cdots,x_m\)的Gram矩阵\(K = [K(x_i,x_j)]_{m \times m}\)是半正定矩阵,则称\(K(x,z)\)是正定核。

常用核函数

多项式核函数polynomial kernel function

此时对应的支持向量机是一个\(p\)次多项式分类器

\[K(x,z) = (x \cdot z + 1)^p \]

高斯核函数gaussain kernel function

此时对应的支持向量机是高斯径向基函数分类器

\[K(x,z) = exp\left(-\frac{||x - z||^2}{2\sigma^2}\right) \]

非线性支持向量分类机

非线性支持向量机学习算法

输入:训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{+1,-1\},i = 1,2,\cdots,N\)
输出:分类决策函数

  • 选择适当的核函数\(K(x,z)\)和惩罚参数\(C \gt 0\),构造并求解约束最优化问题求得最优解\(\alpha^* = (\alpha^*_1,\alpha^*_2,\cdots,\alpha_N^*)^T\)

\[\begin{aligned} \mathop{min}\limits_{\alpha}\ &\frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_jK(x_i, x_j) - \sum_{i = 1}^N\alpha_i \\ s.t.\ &\sum_{i = 1}^N\alpha_iy_i = 0 \\ & 0 \leq \alpha_i \leq C,i = 1,2,\cdots,N \end{aligned} \]

  • 选择\(\alpha^*\)的一个分量\(0 \lt \alpha_j^* \lt C\),计算:

\[b^* = y_j - \sum_{i = 1}^N\alpha_i^*y_iK(x_i, x_j) \]

  • 求得决策函数:

\[f(x) = sign\left(\sum_{i = 1}^N\alpha_i^*y_iK(x, x_i) + b^*\right) \]

序列最小最优化算法(SMO算法)

sequential minimal optimization
目的:当训练样本容量很大的时候,快速实现支持向量机学习
SMO算法要解的问题如下:

\[\begin{aligned} \mathop{min}\limits_{\alpha}\ &\frac{1}{2}\sum_{i = 1}^N\sum_{j = 1}^N\alpha_i\alpha_jy_iy_jK(x_i, x_j) - \sum_{i = 1}^N\alpha_i \\ s.t.\ &\sum_{i = 1}^N\alpha_iy_i = 0 \\ & 0 \leq \alpha_i \leq C,i = 1,2,\cdots,N \end{aligned} \]

变量是\(\alpha_i\),算法是一种启发式算法
基本思路如下,如果所有变量的解都满足此最优化问题的KKT条件,那么此时最优化问题的解就得到了,因为KKT条件是最优化问题的充分必要条件,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更加接近原始二次规划问题的解,因为这会使原始二次规划问题的目标函数值变小,
重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,
子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定,假设\(\alpha_1,\alpha_2\)为两个变量,\(\alpha_3,\alpha_4,\cdots,\alpha_N\)固定,那么由约束不等式\(\sum_{i = 1}^N\alpha_iy_i = 0\)和\(y_1^2 = 1\)可知:

\[\alpha_1 = -y_1\sum_{i = 2}^N\alpha_iy_i \]

整个SMO算法包含两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法

两个变量二次规划的求解方法

不失一般性,假设\(\alpha_1,\alpha_2\)为两个变量,\(\alpha_3,\alpha_4,\cdots,\alpha_N\)固定,省略不含\(\alpha_1,\alpha_2\)的常数项,于是最优化问题可以写为:

\[\begin{aligned} \mathop{min}\limits_{\alpha_1,\alpha_2}\ & W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2 + \frac{1}{2}K_{22}\alpha_2^2 + y_1y_2K_{12}\alpha_1\alpha_2 - (\alpha_1 + \alpha_2) + y_1\alpha_1\sum_{i = 3}^Ny_i\alpha_iK_{i1} + y_2\alpha_2\sum_{i = 3}^Ny_i\alpha_iK_{i2} \\ s.t.\ & \alpha_1y_1 + \alpha_2y_2 = -\sum_{i = 3}^Ny_i\alpha_i = \zeta \\ & 0 \leq \alpha_i \leq C,i = 1,2 \end{aligned} \]

约束可以用二维空间中的图形表示:
二变量优化问题图示
不等式约束使得\((\alpha_1,\alpha_2)\)在盒子\([0,C] \times [0,C]\)中,等式约束使得\((\alpha_1,\alpha_2)\)在平行于盒子对角线的直线上,因此要求的是目标函数在一条平行于对角线的线段上的最优值,这使得两个变量的最优化问题成为实质上的单变量的最优化问题,此时考虑\(\alpha_2\)的最优化问题
最优值\(\alpha_2^{new}\)的取值范围需要满足条件:

\[L \leq \alpha_2^{new} \leq H \]

其中\(L,H\)是\(\alpha_2^{new}\)所在的对角线段端点的界:

  • \(y_1 \neq y_2\)

\[L = max(0,\alpha_2^{old} - \alpha_1^{old}),H = min(C,C + \alpha_2^{old} - \alpha_1^{old}) \]

  • \(y_1 = y_2\)

\[L = max(0, \alpha_2^{old} + \alpha_1^{old} - C),H = min(C,\alpha_2^{old} + \alpha_1^{old}) \]

假设问题的初始可行解为\(\alpha_1^{old},\alpha_2^{old}\),最优解为\(\alpha_1^{new},\alpha_2^{new}\),并且假设沿着约束方向未经剪辑时\(\alpha_2\)的最优解为\(\alpha_2^{new,unc}\)
先记:

\[g(x) = \sum_{i = 1}^N\alpha_iy_iK(x_i,x) + b \\ E_i = g(x_i) - y_i = \left(\sum_{i = 1}^N\alpha_iy_iK(x_i,x) + b\right) - y_i \]

最优化问题沿着约束方向未经剪辑时的解为:

\[\alpha_2^{new,unc} = \alpha_2^{old} + \frac{y_2(E_1 - E_2)}{\eta} \]

其中:

\[\eta = K_{11} + K_{22} - 2K_{12} = ||\Phi(x_1) - \Phi(x_2)||^2 \]

经剪辑后\(\alpha_2\)的解是:

\[\alpha_2^{new} = \begin{cases} H, & \alpha_2^{new,unc} \gt H \\ \alpha_2^{new,unc}, & L \leq \alpha_2^{new,unc} \leq H \\ L, & \alpha_2^{new,unc} \lt L \end{cases} \]

由\(\alpha_2^{new}\)求得\(\alpha_1^{new}\)是:

\[\alpha_1^{new} = \alpha_1^{old} + y_1y_2(\alpha_2^{old} - \alpha_2^{new}) \]

变量的选择方法

SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件。

  • 第1个变量的选择
    选择第一个变量的过程为外层循环,在训练样本中选取违反KKT条件最严重的点,检查样本点\((x_i,y_i)\)满足KKT条件的方法:

\[\begin{aligned} \alpha_i = 0 & \Leftrightarrow y_ig(x_i) \geq 1 \\ 0 \lt \alpha_i \lt C & \Leftrightarrow y_ig(x_i) = 1 \\ \alpha_i = C & \Leftrightarrow y_ig(x_i) \leq 1 \end{aligned} \]

其中\(g(x_i) = \sum_{j = 1}^N\alpha_jy_jK(x_i,x_j) + b\),在检验过程中,首先遍历所有满足条件\(0 \lt \alpha_i \lt C\)的样本点,即在间隔边界上的支持向量点,检查是否满足KKT条件,然后检查整个训练数据集

  • 第2个变量的选择
    在找到第一个变量\(\alpha_1\)的基础上寻找\(\alpha_2\),已知\(\alpha_2^{new}\)依赖于\(|E_1 - E_2|\),而且\(\alpha_1\)确定,所以\(E_1\)确定,如果\(E_1\)是正的,选择最小的\(E_i\)作为\(E_2\),否则选择最大的\(E_i\)作为\(E_2\),如果选择的\(\alpha_2\)不能使目标函数有足够的下降,那么采用启发式规则继续选择\(\alpha_2\)试用,如果还是找不到合适的\(\alpha_2\),就重新找另外的\(\alpha_1\)
  • 计算阈值\(b\)和差值\(E_i\)

SMO算法

输入:训练数据集\(T = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\),其中\(x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y} = \{+1,-1\},i = 1,2,\cdots,N\),精度\(\varepsilon\)
输出:近似解\(\hat{\alpha}\)

  • 取初值\(\alpha^{(0)} = 0,k = 0\);
  • 选取优化变量\(\alpha_1^{(k)},\alpha_2^{(k)}\),解析求解两个变量的最优化问题,过程见上上小结,求解得到最优解\(\alpha_1^{(k + 1)},\alpha_2^{(k + 1)}\),更新\(\alpha\)为\(\alpha^{(k + 1)}\);
  • 若在精度\(\varepsilon\)范围内满足停机条件

\[\sum_{i = 1}^N\alpha_iy_i = 0,0 \leq \alpha_i \leq C,i = 1,2,\cdots,N \\ y_i \cdot g(x_i) \begin{cases} \geq 1, & \{x_i|\alpha_i = 0\} \\ = 1, & \{x_i|0 \lt \alpha_i \lt C\} \\ \leq 1, & \{x_i|\alpha_i = C\} \end{cases} \]

其中\(g(x_i) = \sum_{j = 1}^N\alpha_jy_jK(x_i,x_j) + b\)
则转第四步,否则令\(k = k + 1\),转到第二步

  • 取\(\hat{\alpha} = \alpha^{(k + 1)}\)

标签:03,07,sum,new,学习,cdots,alpha,mathcal,函数
From: https://www.cnblogs.com/eryoyo/p/16706241.html

相关文章

  • Jenkins 构建项目发送邮件[Error replacing 'FILE' - Error processing tokens]
      是因为邮件模板中有变量错误,我把模板中所有变量都去掉,邮件就能正常发送了,具体是哪个变量错误,没有去详细定位!......
  • 《汇编指令》-学习笔记-4
    注:本文档为“《汇编语言(第3版)》王爽著”阅读过程中记的笔记。参考视频:通俗易懂的汇编语言(王爽老师的书)_哔哩哔哩_bilibili12内中断中断信息可以来自CPU的内部和外部......
  • 20201302姬正坤第十章学习笔记
    第三周学习笔记第十章第十章的主要内容是研究sh编程。对于sh编程的介绍分为以下几个方面:sh脚本与C程序sh脚本的编写sh控制语句sh汉书知识点归纳:经过一整章的......
  • 《信息安全系统设计与实现学习笔记3》
    一、知识点归纳以及自己最有收获的内容1、知识点归纳总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?程序设计语言有3个......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第三周学习总结
    班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程-娄......
  • 第十章学习笔记
    第十章的主要内容是sh编程,包括以下几个方面:sh脚本和不同版本sh比较了sh脚本和C程序sh变量、sh语句、sh内置命令、常规系统命令和命令替换sh控制语句sh函数编写以及使......
  • 第三周学习笔记.
    第十章sh编程概要阐述了sh脚本和不同版本的sh;比较了sh脚本与C程序,并指出了解释语言和编译语言的区别;如何编写sh脚本,包括sh变量、sh语句、sh内置命令、常规系统命令和......
  • 20201306吴龙灿第十章学习笔记
    知识点归纳这一章的主要内容包含了sh编程的绝大部分内容。但是在此之前,还是要强调一下诸如Python、C、Java这些程序语言的特点。1.Python(一)Python是什么?Python是一......
  • 2022-2023-1 20221408《计算机基础与程序设计》第三周学习总结
    这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标......
  • 03(C++二级)
    1.函数不可嵌套定义,但可以嵌套调用。2.静态数据成员必须在类外初始化,使用类名调用。 初始化格式:<数据类型><类名>::<静态数据成员名>=<值>3.C++不能重载的:     ......