百面机器学习 #3 经典算法:01-2 不完全线性可分(软间隔)支撑向量机SVM
文章目录
- ①从原问题到对偶问题
- ②对偶问题的解的形式化简
- ③从对偶问题的解到原问题的解
- ④从原问题的解到分离超平面、决策函数、支撑向量
假设训练数据集不是线性可分的。通常情况是,训练数据中有一些特异点(outlier),将这些特异点除去后,剩下大部分的样本点组成的集合是线性可分的。
①从原问题到对偶问题
对每个样本点(xi,yi)(x_i,y_i)(xi,yi) 引进一个松弛变量,使函数间隔加上松弛变量大于等于1。约束条件变为
yi(w⋅xi+b)≥1−ξi,i=1,2,...,Ny_i(w\cdot x_i +b)\ge1-\xi_i,\quad i =1,2,...,N yi(w⋅xi+b)≥1−ξi,i=1,2,...,N
同时,对每个松弛变量,支付一个代价,原优化问题变为凸二次规划(convex quadratic programming)问题:
minw,b,ξ12∥w∥2+C∑i=1Nξis.t. yi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N\begin{array}{ll} \min \limits_{w, b, \xi} & \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i} \\ \text { s.t. } & y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\ & \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N \end{array} w,b,ξmin s.t. 21∥w∥2+C∑i=1Nξiyi(w⋅xi+b)⩾1−ξi,i=1,2,⋯,Nξi⩾0,i=1,2,⋯,N
C 称为惩罚参数,一般由应用问题决定,C 值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使12∣∣w∣∣2\frac{1}{2}||w||^221∣∣w∣∣2 尽量小即间隔尽量大,同时使误分类点的个数尽量小,C 是调和二者的系数。原始最优化问题的拉格朗日函数是
L(w,b,ξ,α,μ)≡12∥w∥2+C∑i=1Nξi−∑i=1Nαi(yi(w⋅xi+b)−1+ξi)−∑i=1NμiξiL(w, b, \xi, \alpha, \mu) \equiv \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left(y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right)-\sum_{i=1}^{N} \mu_{i} \xi_{i} L(w,b,ξ,α,μ)≡21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nμiξi
其中αi≥0,μi≥0\alpha_i\ge0,\mu_i\ge0αi≥0,μi≥0
②对偶问题的解的形式化简
现在我们要解的原问题的变量从两个w,bw,bw,b变成了三个w,b,ξw,b,\xiw,b,ξ,同样原始问题等价于对拉格朗日函数的min-max问题,对偶问题是拉格朗日函数的max-min问题,其中min针对问题变量,max针对约束参数。对偶问题的内层min问题,对问题变量求导有
∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0\begin{array}{l} \nabla_{w} L(w, b, \xi, \alpha, \mu)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\ \nabla_{b} L(w, b, \xi, \alpha, \mu)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ \nabla_{\xi_{i}} L(w, b, \xi, \alpha, \mu)=C-\alpha_{i}-\mu_{i}=0 \end{array} ∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
化简得
w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0\begin{array}{c} w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ C-\alpha_{i}-\mu_{i}=0 \end{array} w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0
代回拉格朗日函数,得到对偶问题:
maxα−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαis.t. ∑i=1Nαiyi=0C−αi−μi=0αi⩾0μi⩾0,i=1,2,⋯,N\begin{array}{ll} \max \limits_{\alpha} & -\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & C-\alpha_{i}-\mu_{i}=0 \\ & \alpha_{i} \geqslant 0 \\ & \mu_{i} \geqslant 0, \quad i=1,2, \cdots, N \end{array} αmax s.t. −21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi∑i=1Nαiyi=0C−αi−μi=0αi⩾0μi⩾0,i=1,2,⋯,N
再将对目标函数求极大转换为求极小,消去变量μi\mu_iμi,得到对偶问题如下,可以看到只是约束参数αi\alpha_iαi的范围多了一个C
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,⋯,N\begin{array}{ll} \min \limits_{\alpha} & \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } & \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \end{array} αmin s.t. 21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi∑i=1Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
可以通过求解对偶问题而得到原始问题的解,进而确定分离超平面和决策函数。
③从对偶问题的解到原问题的解
假设对偶问题的解α∗\alpha^*α∗已经知道,(对原问题)用KKT条件得
∇wL(w∗,b∗,ξ∗,α∗,μ∗)=w∗−∑i=1Nαi∗yixi=0∇bL(w∗,b∗,ξ∗,α∗,μ∗)=−∑i=1Nαi∗yi=0∇ξL(w∗,b∗,ξ∗,α∗,μ∗)=C−α∗−μ∗=0αi∗(yi(w∗⋅xi+b∗)−1+ξi∗)=0μi∗ξi∗=0yi(w∗⋅xi+b∗)−1+ξi∗⩾0ξi∗⩾0αi∗⩾0μi∗⩾0,i=1,2,⋯,N\begin{array}{l} \nabla_{w} L\left(w^{*}, b^{*}, \xi^{*}, \alpha^{*}, \mu^{*}\right)=w^{*}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}=0 \\ \nabla_{b} L\left(w^{*}, b^{*}, \xi^{*}, \alpha^{*}, \mu^{*}\right)=-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}=0 \\ \nabla_{\xi} L\left(w^{*}, b^{*}, \xi^{*}, \alpha^{*}, \mu^{*}\right)=C-\alpha^{*}-\mu^{*}=0 \\ \alpha_{i}^{*}\left(y_{i}\left(w^{*} \cdot x_{i}+b^{*}\right)-1+\xi_{i}^{*}\right)=0 \\ \mu_{i}^{*} \xi_{i}^{*}=0 y_{i}\left(w^{*} \cdot x_{i}+b^{*}\right)-1+\xi_{i}^{*} \geqslant 0 \\ \xi_{i}^{*} \geqslant 0 \\ \alpha_{i}^{*} \geqslant 0 \\ \mu_{i}^{*} \geqslant 0, \quad i=1,2, \cdots, N \end{array} ∇wL(w∗,b∗,ξ∗,α∗,μ∗)=w∗−∑i=1Nαi∗yixi=0∇bL(w∗,b∗,ξ∗,α∗,μ∗)=−∑i=1Nαi∗yi=0∇ξL(w∗,b∗,ξ∗,α∗,μ∗)=C−α∗−μ∗=0αi∗(yi(w∗⋅xi+b∗)−1+ξi∗)=0μi∗ξi∗=0yi(w∗⋅xi+b∗)−1+ξi∗⩾0ξi∗⩾0αi∗⩾0μi∗⩾0,i=1,2,⋯,N
第一个式子容易得到
w∗=∑i=1Nαi∗yixiw^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} w∗=i=1∑Nαi∗yixi
至少有一个(不是要求的,是求解问题的时候,发现至少一个非零才是合理的,否则都为0,根据第一个式子w也为0)αj∗>0\alpha_j^*>0αj∗>0,任选其一,yj(w∗⋅xj+b∗)−1=0y_{j}\left(w^{*} \cdot x_{j}+b^{*}\right)-1=0yj(w∗⋅xj+b∗)−1=0
注意到yj2=1y_{j}^{2}=1yj2=1,联立上述二式得
b∗=1yj−w∗⋅xj=yj−∑i=1Nαi∗yixixjb^*=\frac{1}{y_j}-w^*\cdot x_j=y_j-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}x_jb∗=yj1−w∗⋅xj=yj−∑i=1Nαi∗yixixj
和前述硬间隔的结果一样。
④从原问题的解到分离超平面、决策函数、支撑向量
进一步,分离超平面可以写成
∑i=1Nαi∗yi(x⋅xi)+b∗=0\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0 i=1∑Nαi∗yi(x⋅xi)+b∗=0
分类决策函数可以写成
f(x)=sign(∑i=1Nαi∗yi(x⋅xi)+b∗)f(x)=sign\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right) f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
可以看到,w∗,b∗w^*,b^*w∗,b∗只依赖于那些αj∗>0\alpha_j^*>0αj∗>0的样本,这样的对应的训练样本我们就称之为支撑向量。
注:
每次任选一个符合条件的非0的αj\alpha_jαj就可求得w和b,但是这样的结果可能由于j不一样而不唯一。
百面机器学习 #3 经典算法:01-2 不完全线性可分(软间隔)支撑向量机SVM相关推荐
- 百面机器学习 #3 经典算法:02 逻辑回归
参考: 百面机器学习 西瓜书 02 逻辑回归Logistic Regression(对数几率回归) 2.1 逻辑回归和线性回归 二者都使用极大似然法来对训练样本进行建模. 在求解超参数的过程中,都可以 ...
- 百面机器学习 #3 经典算法:01-3 核函数支撑向量机SVM
文章目录 1.3 非线性SVM与核技巧 1.3.1 核函数 1.3.2 核技巧在支持向量机中的应用 1.3.3 常用核函数 1.4 其他问题 1.4.1 是否存在一组参数使SVM训练误差为0:是 1. ...
- 百面机器学习之经典算法
1.逻辑回归相比于线性回归,有何异同? 首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别.逻辑回归中,因变量取值是一个二元分布,模型学习得出的是 ,即给 ...
- 百面机器学习 #3 经典算法:01-1 线性可分(硬间隔)支撑向量机SVM
文章目录 ①从原始问题到对偶问题 ②对偶问题的解的形式化简 ③从对偶问题的解到原问题的解 ④从原问题的解到分离超平面和决策函数.支撑向量 参考李航统计学习方法第7章. 支持向量机学习的基本想法是求解能 ...
- 机器学习基础-经典算法总结
机器学习基础-经典算法 逻辑回归 逻辑回归的原理,问题的假设 为什么逻辑回归也可称为对数几率回归 推导逻辑回归损失函数 逻辑回归损失函数求导 逻辑回归为什么使用交叉熵作为损失函数 LR是不是凸优化问题 ...
- 【机器学习】机器学习的经典算法
[机器学习]机器学习的经典算法 https://www.cnblogs.com/DicksonJYL/p/9517025.html 本文为整篇文章第二部分,整篇文章主要目录如下: 1:一个故事说明什么 ...
- Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略
Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机&GA遗传算法&PSO粒子群优化算法).案例应用之详细攻略 目录 1.SVM算法使用案例 1.1.Libsvm ...
- 百面机器学习03-经典算法
01 支持向量机 支持向量机 (Support Vector Machine, SVM)是众多监督学习万法中十分出色的一种,几乎所有讲述经典机器学习万洼的教材都会介绍 . 关于 SVM,流传着一个关于 ...
- 《百面机器学习》---AI算法工程师求职必备“面经”
[导读]今天给大家推荐一本人工智能算法工程师求职必备"面经" --百面机器学习(文末附pdf下载方式,限时领取哟!) 自2018年面世以来,该书现已成为机器学习算法工程师求职面试必 ...
最新文章
- 如何解决用谷歌浏览器调试代码接口请求的时候,跳转网页切换网页的时候,上一个页面的接口请求记录被清除消失的问题
- python matplotlib散点图-python matplotlib更新函数的散点图
- linux裁剪—定制自己所需要的linux
- 多媒体技术创新与难点探索(内附讲师资料下载)
- 高性能MySQL数据库(含二级考试)-张晨光-专题视频课程
- CSS3那些不为人知的高级属性
- bzoj1034 [ZJOI2008]泡泡堂BNB 结论
- SpringMVC大坑一枚:ContentNegotiatingViewResolver可能不利于SEO
- VMware 修复多款产品中的高危漏洞
- 单通道图像保存_3D图像展示篇结构更清晰
- mybatis-plus主键生成策略
- python使用虚拟内存_深入浅出虚拟内存(一)
- 《窈窕绅士》里的诗句
- 我理解数字滤波器 -电容
- 【js-xlsx和file-saver插件】前端html的table导出数据到excel的表格合并显示boder
- 记一次app爬虫sign破解
- 弱网测试学习记录(1)
- 基于JAVA3D的网络三维技术的设计与实现
- Mac 默认php安装目录
- 开源项目扮演的角色_适用于Linux的5种开源角色扮演游戏
热门文章
- Python3之max key参数学习记录
- mvc上传图片(上传和预览)webuploader
- 利用条件运算符的嵌套来完成此题:学习成绩 =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。...
- POJ 2993 Emag eht htiw Em Pleh(模拟)
- 支持位移操作的环形字符串
- 软件测试工程师面试必备技能
- 集合框架(List、Collection、迭代器)
- Linux进程间通信(信号量)
- iservice封装有哪些方法_对WebService的一些封装技巧总结
- 零基础学web前端难吗?新手该怎么学?