【阅读时间】13min - 19min
【内容简介】详解解读什么是支持向量机,如何解支持向量以及涉及的拉普拉斯乘子法,还有核方法的解读
支持向量机-SVM(Support Vector Machine)从本质来说是一种:用一条线(方程)分类两种事物
SVM的任务是找到这条分界线使得它到两边的margin
都最大,注意,这里的横坐标是 x1x1 纵坐标为 x2x2,如下图所示
margin
有了直观的感知,在定义这一节在做一些深入的思考,分解名词(Support Vector Machine)并尝试解释:
Maximum Margin
上的这些点就是支持向量,具体说即最终分类器表达式中只含有这些支持向量的信息,而与其他数据点无关。在下面的公式中,只有支持向量的系数 αiαi 不等于0。说人话,上图中两个红色的点,一个蓝色的点,合起来就是支持向量 w⋅φ(x)=∑iλiyik(xi,x)w⋅φ(x)=∑iλiyik(xi,x)公式中每一个符号的含义在后文有说明
对于我们需要求解的这个超平面(直线)来说,我们知道
根据这两点,抽象SVM的直接表达(Directly Representation)
注:argmaxxf(x)argmaxxf(x) 表示当 f(x)f(x) 取最大值时,x的取值
argmaxboundarymargin(boundary)所有正确归类的两类到boundary的距离≥margin(1)(1)argmaxboundarymargin(boundary)所有正确归类的两类到boundary的距离≥margin
其实这个公式是一点也不抽象,需要更进一步的用符号来表达。
我们知道在准确描述世界运行的规律这件事上,数学比文字要准确并且无歧义的多,文字(例子)直观啰嗦,数学(公式)准确简介
SVM支持向量机
注:公式中加粗或者带有向量箭头的都表达一个向量
为了表达直观,我们定义这两个超平面(直线)分别为 wT→xi+b=1wTx→i+b=1 和 wT→xi+b=−1wTx→i+b=−1,两个超平面(直线)之间的距离为 γ=2∥w∥γ=2‖w‖
注:选择1
的好处是,w
和b
进行尺缩变换(kw
和kb
)不改变距离,方便计算
为了使得所有样本数据都在间隔区(两条虚线)以外,我们需要保证对于所有的 ii 满足下列的条件
n
指样本点的数量argmaxw,b{1∥w∥minn[yi(wT→xi+b)]}(2)(2)argmaxw,b{1‖w‖minn[yi(wTx→i+b)]}
注:s.t.
:subject to 表示约束条件,表达的意思等价于:为了使得所有样本数据都在间隔区(两条虚线)以外
为了解(3)式,需要用到拉格朗日乘子法(Method of lagrange multiplier),它是用来求解在约束条件目标函数的极值的,详细直观详解
注:以下解算过程希望完全看懂强烈建议理解阅读详细直观详解,很多地方推导过程只写必要过程及结论
根据约束的形式,我们引入m
个拉格朗日乗法子,记为 λ=(λ1,…,λm)Tλ=(λ1,…,λm)T ,原因是,有m
个约束,所以需要m
个拉格朗日乗法子。可以得出拉格朗日方程如下:
L(w,b,λ)=12∥w∥2−m∑i=1λi{yi(wT→xi+b)−1}(4)(4)L(w,b,λ)=12‖w‖2−∑i=1mλi{yi(wTx→i+b)−1}
解这个拉格朗日方程,对 ww 和 bb 求偏导数,可以得到以下两个条件
w=m∑i=1λiyi→xi0=m∑i=1λiyiw=∑i=1mλiyix→i0=∑i=1mλiyi
将这两个条件带回公式(4),可以得到对偶形式(dual representaiton),我们的目的也变为最大化 L(λ)L(λ),表达式如下
argmaxλL(λ)=m∑i=1λi−12m∑i=1m∑j=1λiλj→xi→xjxTixjs.t.λi⩾0,∀i;m∑i=1λiyi=0(5)(5)argmaxλL(λ)=∑i=1mλi−12∑i=1m∑j=1mλiλjx→ix→jxiTxjs.t.λi⩾0,∀i;∑i=1mλiyi=0
以上表达式可以通过二次规划算法解出 λλ 后,带回,求出ww 和 bb,即可得到模型
f(x)=wTx+b=m∑i=1λiyixTix+b(6)(6)f(x)=wTx+b=∑i=1mλiyixiTx+b
补充一些关于二次规划算法的相关,(3)式的约束是一个不等式约束,所以我们可以使用KKT条件得到三个条件:
λi⩾0;yif(xi)−1⩾0;λi{yif(xi)−1}=0λi⩾0;yif(xi)−1⩾0;λi{yif(xi)−1}=0
使用这些条件,可以构建高效算法来解这个方程,比如SMO(Sequential Minimal Optimization)就是其中一个比较著名的。至于SMO是如何做的,考虑到现代很多SVM的Pakage都是直接拿来用,秉承着前人付出了努力造了轮子就不重复造的核心精神,直接调用就好
已经说明了如何求得方程,以上的推导形式都是建立在样本数据线性可分的基础上,如果样本数据你中有我我中有你(线性不可分),应该如何处理呢?这里就需要引入软间隔(Soft Margin),意味着,允许支持向量机在一定程度上出错
由上一节我们得知,约束为: yi(wT→xi+b)⩾1,i=1,2,…,myi(wTx→i+b)⩾1,i=1,2,…,m ,目标是使目标函数可以在一定程度不满足这个约束条件,我们引入常数 CC 和 损失函数 ℓ0/1(z)ℓ0/1(z) 为0/1损失函数
,当z小于0函数值为1,否则函数值为0
minw,b12∥w∥2+Cm∑i=1ℓ0/1(yi(wT→xi+b)−1)(7)(7)minw,b12‖w‖2+C∑i=1mℓ0/1(yi(wTx→i+b)−1)
对于(7)式来说 C⩾0C⩾0 是个常数,当C无穷大时,迫使所有样本均满足约束;当C取有限值时,允许一些样本不满足约束
但 ℓ0/1(z)ℓ0/1(z) 损失函数非凸、非连续,数学性质不好,不易直接求解,我们用其他一些函数来代替它,叫做替代损失函数(surrogate loss)
hinge损失:ℓhinge(z)=max(0,1−z)指数损失:ℓexp(z)=e−z对数损失:ℓlog(z)=log(1+e−z)hinge损失:ℓhinge(z)=max(0,1−z)指数损失:ℓexp(z)=e−z对数损失:ℓlog(z)=log(1+e−z)
三种常见损失函数如下图
为了书写方便,我们引入松弛变量(slack variables): ξi⩾0ξi⩾0,可将(7)式重写为
minw,b,ξi12∥w∥2+Cm∑i=1ξis.t.yi(wT→xi+b)⩾1−ξi;ξi⩾0,i=1,2,…,m(8)(8)minw,b,ξi12‖w‖2+C∑i=1mξis.t.yi(wTx→i+b)⩾1−ξi;ξi⩾0,i=1,2,…,m
(8)式就是常见的软间隔支持向量机,其中,每一个样本都有一个对应的松弛变量,用以表征该样本不满足约束的程度,求解的方法同理硬间隔支持向量机
以上我们求解的支持向量机都是在线性情况下的,那么非线性情况下如何处理?这里就引入:核方法
对于这样的问题,可以将样本从原始空间映射到一个更高为的特征空间,使得样本在这个特征空间内线性可分,直观可视化解释
为了完成这个目的,令 ϕ(x)ϕ(x) 表示将 xx 映射后的特征向量,于是,在特征空间划分超平面所对应的模型可表示为:
f(x)=wTϕ(x)+bf(x)=wTϕ(x)+b
同理上文中引入拉格朗日乘子,求解整个方程后可得
f(x)=wTϕ(x)+b=m∑i=1λiyiϕ(xi)Tϕ(x)+b=m∑i=1λiyik(x,xi)+bf(x)=wTϕ(x)+b=∑i=1mλiyiϕ(xi)Tϕ(x)+b=∑i=1mλiyik(x,xi)+b
这里的函数 k(⋅,⋅)k(⋅,⋅) 就是核函数(kernel function),常见的核函数见下表
名称
表达式
参数
线性核
xTixjxiTxj
无
多项式核
(xTixj)d(xiTxj)d
d⩾1d⩾1 多项式次数
高斯核
exp(−∥xi−xj∥22σ2)exp(−‖xi−xj‖22σ2)
σ>0σ>0 高斯核带宽
拉普拉斯核
exp(−∥xi−xj∥2σ)exp(−‖xi−xj‖2σ)
σ>0σ>0
Sigmoid核
tanh(βxTixj+θ)tanh(βxiTxj+θ)
β>0β>0 θ>0θ>0
也可以通过函数组合得到这些值
多类问题可以使用两两做支持向量机,再由所有的支持向量机投票选出这个类别的归属,被称为one-versus-one approace
。
Reference
知乎各类回答
Wiki百科
PRML
周志华-机器学习
Original url: Access
Created at: 2018-11-26 10:26:27
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论