| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 统计学习:线性可分支持向量机(SVM) -> 正文阅读 |
|
[数据结构与算法]统计学习:线性可分支持向量机(SVM) |
1. 模型 {x|aTx?b=0}(1) {x|aT(x?x0)=0}(2) {x|aTx?b?0}(3) 1.2 线性可分支持向量机 D={{x(1),y(1)},{x(2),y(2)},...,{x(m),y(m)}}(4) 如果训练集线性可分,则我们存在无穷多个分离超平面将两类样本分开。如果我们采用感知机的误分类最小的训练策略(也就是仅仅保证分类的正确性),那么我们将求得无穷多个解。我们接下来定义的线性可分支持向量机将利用“间隔最大化”求解最优分离超平面(即能将两组数据正确划分且间隔最大的超平面,我们在“学习策略”板块中将详述这一概念),这时解是唯一的。 形式化地说,给定线性可分的数据集,通过间隔最大化策略学习得到的分离超平面为 {x|w?Tx+b?=0}(5) f(x)=sign(w?Tx+b?)(6) 2. 学习策略 2.1. 函数间隔和几何间隔 函数间隔 对于给定的数据集D和超平面{x|wTx+b=0},定义该超平面关于数据集中样本点(x(i),y(i))的函数间隔为 γ^(i)=y(i)(wTx(i)+b)(7) γ^=mini=1,...,mγ^(i)(8) 我们定义实例(x(i),y(i))到超平面{x|wTx+b=0}的带符号距离为wTx(i)+b||w||(在法向量那一侧则为正),我们用这个做为来做为分类的确信度。类似地,我们我们用y(i)wTx(i)+b||w||来对分类的确信度和正确性进行综合表示。于是,我们给出下列几何间隔的定义。 几何间隔 对于给定的数据集D和超平面{x|wTx+b=0},定义该超平面关于数据集中样本点(x(i),y(i))的几何间隔为 γ(i)=y(i)wTx(i)+b||w||(9) γ=mini=1,...,mγ(i)(10) 2.2 间隔最大化 可以知道,满足间隔最大化的超平面是唯一的,它能够对所有训练数据有足够大的确信度分类,也就是说不仅能够对实例点进行分类,而且对于所有实例点能够有足够大的确信度分类,这样的超平面的未知的测试实例有很好的分类预测能力。我们将该问题表述为以下带约束优化问题: maxw,bγs.t.y(i)wTx(i)+b||w||≥γ(i=1,2,...,m)(11) maxw,bγ^||w||s.t.y(i)(wTx(i)+b)≥γ^(i=1,2,...,m)(12) 这样,就可以取γ^=1。将γ^=1代入上面的最优化问题,相当于最大化1||w||。不过这样目标函数非凸,一般较难求解,为了将其转换为凸优化问题,我们将原本的优化目标函数等价转换为最小化12||w||2,这样我们就将线性可分支持向量机的学习策略转换为了一个(凸)二次规划问题: maxw,b12||w||2s.t.y(i)(wTx(i)+b)?1≥0(i=1,2,...,m)(13) 附: 这里提一下凸优化问题和二次规划问题的概念。凸优化问题定义如下 minxf0(x)s.t.fi(x)≤0(i=1,2,...,m)hi(x)=0(i=1,2,...,p)(14) 特别地,当凸优化问题的目标函数f0(x)是(凸)二次型并且约束函数fi(x)为仿射时,该问题称为二次规划(QP)。二次规划可以表述为: minx(12)xTPx+qTx+rs.t.fi(x)≤0(i=1,2,...,m)hi(x)=0(i=1,2,...,p)(15) 接下来我们会介绍该凸二次规划问题的求解算法。 三. 算法 直接求解式(13)计算复杂度过高,而凸优化理论中告诉了我们许多可以高效求解(13)问题的理论。我们将问题(13)的形式做为原始问题(primal problem)。应用拉格朗日对偶性。通过求解对偶问题(dual problem)同样得到原始问题的最优解,而且求解会更加高效。问题求解可分两步走。 我们引入拉格朗日乘子向量α=(α1,α2,...,αm)T,每个不等式约束对应一个拉格朗日乘子αi≥0,i=1,2,...,m,我们以此定义拉格朗日函数: L(w,b,α)=12||w||2+(?∑i=1mαiy(i)(wTx(i)+b))+∑i=1mαi(16) 根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题: maxαminw,bL(w,b,α)(17) (1) 首先,我们求g(α)=minw,bL(w,b,α)。由凸函数L(w,b,α)极值满足的一阶必要条件有 ?wL(w,b,α)=w?∑i=1mαiy(i)x(i)=0?bL(w,b,α)=?∑i=1mαiy(i)=0(18) w=∑i=1mαiy(i)x(i)∑i=1mαiy(i)=0(19) L(w,b,α)=12∑i=1m∑j=1mαiαjy(i)y(j)?x(i),x(j)??∑i=1m∑j=1mαiαjy(i)y(j)?x(i),x(j)??∑i=1mαiy(i)b+∑i=1mαi(20) g(α)=minw,bL(w,b,α)=?12∑i=1m∑j=1mαiαjy(i)y(j)?x(i),x(j)?+∑i=1mαi maxα?12∑i=1m∑j=1mαiαjy(i)y(j)?x(i),x(j)?+∑i=1mαis.t.∑i=1mαiy(i)=0αi≥0,i,2,...,m(22) 第二步:由对偶问题的最优解α?求得原始问题式(13)的最优解w?,b? 如果α?=(α?1,α?2,...,α?m)T是对偶最优化问题的解,我们将αi>0对应的实例点集合被称为支持向量,我们设U={αi|αi>0},我们U从中随机采一个αs,对应的样本为(x(s),y(s)),可按下式求得原始最优化问题(13)的解w?,b?。 w?=∑i=1mα?iy(i)x(i)b?=y(s)?∑i=1mα?iy(i)?x(s),x(i)?(23) 式(23)可根据KKT条件推导而得。KKT条件如下: \nabla_{\bm{w}}L(\bm{w}^{*}, b^{*}, \bm{\alpha}^{*}) = \bm{w}^{*} - \sum_{i=1}^{m}\alpha_{i}y^{(i)}\bm{x}^{(i)} = 0 \\ w?=∑i=1mαiy(i)x(i)(25) 式(24)中第三个等式称为KKT互补条件,我们设U={α?i|α?i>0},我们U从中随机采一个α?s,对应的样本为(x(s),y(s))。因为有α?s>0,则必有 y^{(s)}(\bm{w^{*}}^T \bm{x}^{(s)}+b^{*}) - 1 = 0 b?=y(s)?∑i=1mα?iy(i)?x(i),x(s)?(27) {x|∑i=1mα?iy(i)?x(i),x?+b?=0}(29) f(x)=sign(∑i=1mα?iy(i)?x(i),x?+b?)(29) 给定测试样本x?,我们就能按照式(29)计算其类别f(x?)。由式(23)可知,w?和b?只依赖于αi>0的样本点(x(i),y(i)),而其他样本点对w?和b没有影响。我们将训练数据中对应于a?i>0的实例点x(i)∈Rn称为支持向量。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:29:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |