讲授线性分类器,分类间隔,线性可分的支持向量机原问题与对偶问题,线性不可分的支持向量机原问题与对偶问题,核映射与核函数,多分类问题,libsvm的使用,实际应用

大纲:

SVM求解面临的问题

SMO算法简介

子问题的求解

子问题是凸优化的证明

收敛性保证

优化变量的选择

完整的算法

SVM求解面临的问题:

SVM的对偶问题是求解一个二次函数的极值问题(二次规划问题):

前边一项是二次型,带有不等式约束和等式约束,C是惩罚因子。

写成矩阵形式:

二次规划问题可以用梯度下降法、牛顿法、坐标下降法等等进行求解,但是它们都会面临问题。计算效率问题:Q矩阵是l×l,其中l是样本数目,如果样本很多的话算起来效率会非常低;存储空间问题:Q矩阵太大,如一百万样本占用内存1M*1M*每个数据占的字节数,会占用大量的存储空间,非常占内存;带有不等式和等式约束约束,用梯度下降法或牛顿法求解时同时满足等式约束,求解起来很不方便。所以要找其他算法能更高效的求解问题,SMO算法就诞生了。

SMO算法简介:

Sequential minimal optimization,顺序最小优化。Platt等人于1998年提出,SVM时1995年提出,三年内一直没找到高效的训练算法,直到SMO算法出现,SVM才大规模的普及,之后采用非线性核的SVM都用SMO算法来训练。

核心思想是分治法,每次挑选出两个变量进行优化,因为由等式约束yTα=0,所以要改变α中一个变量则会破坏等式约束,所以每次要挑选α中两个变量进行优化才能满足等式约束。

定义以下变量:

ui相当于预测方程,如果把xi看成x,就相当于f(x)预测方程,拿x和所有y做映射然后和标签值相乘再求和再加b。

利用KKT条件作用于原问题,可得出三种情况(见上节课):

ai=0时相当于将样本带入预测函数ui和标签值相乘大于等于1。其他情况同理。后边会根据这个选择优化变量αi、αj

子问题的求解:

怎么来求解两个变量的子问题?

挑两个变量αi、αj,怎么挑的这里先不讨论,图1中只有一部分是和αi、αj有关的,其它的变量都视为常数只考虑αi、αj,展开得到:

展开成只管αi、αj的一个二次函数。由得,,即yi和yj是满足一个线性约束关系,yi、yj可以用一个表示另一个,则f(ai,aj)就变成一个带有不等式约束的一元二次函数在某个区间的极值问题。

其中yi、yj可能同号或异号:

在得到αj的范围之后,就是求f(αj)的一元二次方程的极值问题,有三种情况:

分三种情况就可以把一元二次函数极值求出来了,现在不考虑分三种情况来求解极值:

则可以求解出极值点aj的值,也可以求得ai的值:

ai、aj求得的是精确解公式解。

子问题是凸优化的证明:

是否能保证上边的一元二次函数抛物线开口向上?答案是可以的。

整个对偶问题是凸优化问题,随意挑出俩个变量ai、aj后形成的问题仍然是凸优化问题:

二元二次函数f(ai, aj)的Hession矩阵为:

, 其中,Hession矩阵相当于,不过这里没有用核函数,可知Hession矩阵大于等于0,半正定,如果等于0相当于一次函数,可以用技巧把它规避掉。

所以对于支持向量机,无论是它的对偶问题,还是子问题,都是一个凸优化问题,因此一定可以找到它的一个全局极小值点。

收敛性保证:

无论本次迭代时两个变量的初始值是多少,通过上面的子问题求解算法得到是在可行域里的最小值,因此每次求解更新这两个变量的值之后,都能保证目标函数值小于或者等于初始值,即函数值下降,所以SMO算法能保证收敛。
优化变量的选择:

优化变量ai、aj怎么选择呢,在最优点处ai、aj必须满足KKT条件,也就是说,如果ai、aj不满足KKT条件,也就是还没到达全局极小值点处,因此就把违反KKT条件的变量挑出来,然后不断调整变量让它往满足KKT条件方向调整,最后才能收敛到全局极小值处。

依次选择ai的三个区间,找到不满足KKT条件的ai去优化它,如果三个区间都找不到,说明算法已经收敛了。

ai找到之后,再找aj,启发式搜索,相当于贪心算法,找到最优的aj,,使得调整值Ei最大,那样函数值才下降的最快,即找使得最大的aj,这样就把ai、aj找出来了,当然还有其他算法找ai、aj。

完整的算法:

实现细节问题:

初始值的设定,一般设置为全0向量,因为α要满足约束条件(yTα=0,0≤ai≤C),所以另ai初值为0满足约束条件。

迭代终止的判定规则,如果找不到ai、aj使得满足KKT条件,那么算法收敛终止,然后设置一个阈值达到一定的迭代次数算法终止。

SIGAI机器学习第十五集 支持向量机2的更多相关文章

  1. SIGAI机器学习第十六集 支持向量机3

    讲授线性分类器,分类间隔,线性可分的支持向量机原问题与对偶问题,线性不可分的支持向量机原问题与对偶问题,核映射与核函数,多分类问题,libsvm的使用,实际应用 大纲: 多分类问题libsvm简介实验 ...

  2. SIGAI机器学习第十四集 支持向量机1

    讲授线性分类器,分类间隔,线性可分的支持向量机原问题与对偶问题,线性不可分的支持向量机原问题与对偶问题,核映射与核函数,多分类问题,libsvm的使用,实际应用 大纲: 支持向量机简介线性分类器分类间 ...

  3. SIGAI机器学习第十九集 随机森林

    讲授集成学习的概念,Bootstrap抽样,Bagging算法,随机森林的原理,训练算法,包外误差,计算变量的重要性,实际应用 大纲: 集成学习简介 Boostrap抽样 Bagging算法 随机森林 ...

  4. SIGAI机器学习第十八集 线性模型2

    之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss ...

  5. SIGAI机器学习第二十四集 聚类算法1

    讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...

  6. SIGAI机器学习第二十二集 AdaBoost算法3

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. AdaB ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现

    之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...

  8. SIGAI机器学习第二十集 AdaBoost算法1

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用 AdaBo ...

  9. SIGAI机器学习第十集 线性判别分析

    讲授LDA基本思想,寻找最佳投影矩阵,PCA与LDA的比较,LDA的实际应用 前边讲的数据降维算法PCA.流行学习都是无监督学习,计算过程中没有利用样本的标签值.对于分类问题,我们要达到的目标是提取或 ...

随机推荐

  1. Django基础十一之认证系统

    一 auth模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个 ...

  2. Android 7.0 之后相机/文件读写等权限获取方式改变,导致开启相机闪退

    在 Android 7.0 之前 Google 提供的动态申请权限的 API,可以调用相机拍照,访问SDcard等操作都只需要申请对应的权限,如下: <uses-permission andro ...

  3. 【SCALA】3、模拟电路

    Simulation package demo17 abstract class Simulation { type Action = () => Unit case class WorkIte ...

  4. 第1章 云端开发平台Salesforce CRM

    1.1云计算平台 传统软件的开发往往耗资成千上万(甚至几百万)美元,有时需要几年的专业服务帮助建立和定制应用程序,而软件的业务问题往往由于其十分复杂或成本太高而无法触及.随着Internet的革新,改 ...

  5. Oracle创建视图权限不足

    Oracle 在创建用户的时候如果直接给用户DBA权限,那么在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限,在这种情况下需要再在被访问的A用户里面去给予要访问该表的B用户授权. --创 ...

  6. 编译内核提示mkimage command not found – U-Boot images will not be built

     转載與:http://www.mr-wu.cn/u-boot-tools-binary-package-in-ubuntu/ ubuntu 编译linux kernel时提示: “mkimage” ...

  7. 题解-CTS2019氪金手游

    Problem \(\mathtt {loj-3124}\) 题意概要:给定 \(n\) 个点,\(w_i\) 分别有 \(p_{i,1},p_{i,2},p_{i,3}\) 的概率取 \(1,2,3 ...

  8. 【转载】 腾讯云通过设置安全组禁止某些IP访问你的服务器

    有时候我们在运维网站的过程中会发现一些漏洞扫描者的IP信息,或者个人爬虫网站的IP信息,此时我们想禁止掉这些IP访问到你的服务器,可以通过腾讯云的安全组功能来设置禁止这些IP访问你的服务器,也可以通过 ...

  9. 使用swap扩展内存

    当系统在内存不够用的时,新建一个swap文件,这个文件可以把内存中暂时不用的传输到对应的swap文件上,相当于扩展了内存的大小,具体使用方法如下: swap文件可以自己选择放在哪里,自己新建一个对应的 ...

  10. laravel管理模型插入

    post控制器public function comment(Post $post,Request $request){ try{ if(empty($request->content)){ E ...