之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族。

大纲:

线性支持向量机简介
L2正则化L1-loss SVC原问题
L2正则化L2-loss SVC原问题
L2正则化SVC对偶问题
L1正则化L2-loss SVC原问题
多类线性支持向量机
实验环节
libsvm和liblinear的比较
实际应用

线性支持向量机简介:

不带核函数的预测函数是sgn(wTx+b)的形式,w是所有支持向量的组合,展开之后是sgn(Σ1~l aiyixiTxi+b)的形式(l是训练样本数,ai是支持向量的系数,yi是第i个样本的类别标签,如果加上核函数是一个核函数的映射模型k(xiTxi)),现实世界中很多问题都是非线性问题,所以用非线性的支持向量机,用RBF或多项式核得到的模型更精确一些对于分类问题准确率更高,但是用这种非线性核在计算的时候运算量太大(先支持向量xi做内积再做核映射,然后再乘以系数加起来,这对于大规模问题运算量是相当大的)。对于工业上的一些应用,特征向量的维数可能是1亿数量级,样本数可能也有1亿数量级,用这种非线性核来做的话显然是不现实的,在速度上达不到我们的要求,所以线性的支持向量机还是有它的用武之地的,虽然他还是线性的,但是他保留了线性支持向量机的优点,泛化性能非常好,他在允许一定错分的情况下最大化分类间隔,而且兼顾了速度,是一个不错的选择。

L2正则化L1-loss SVC原问题:

介绍第一种线性支持向量机,L2正则化L1-loss函数的支持向量机SVC(SVC是支持向量分类,用于分类问题,SVR是支持向量回归,用于回归问题)。

原问题为:

前边是正则化项,后边是一个损失函数(每个样本的损失累加起来)。

max(0, 1-yiwTxi)称为hinge loss,合页损失函数,即满足不等式约束yiwTxi≥1的损失等于0,不满足不等式约束的损失越厉害,损失就越厉害。

换元变换:

的形式同线性不可分的原问题的目标函数(其中的i/2wTw是为了最大化间隔而引入的,CΣξ表示错分以后给的一个惩罚),而这里1/2wTw是作为正则化项引入的,CΣξ这里表示同样的错分给一个惩罚损失,不等式约束(ξ≥0,ξ≥1-yiwTxi)就是线性不可分的原问题所要满足的约束(ξ是松弛变量,C是惩罚因子)。

L2正则化L2-loss SVC原问题:

可以用可信域牛顿法(是牛顿法的一个变种,也是寻找牛顿方向d,沿着d方向去迭代,总体的原理和前边讲的是一样的)求解,也可以转化成对偶问题求解。

L2正则化SVC对偶问题:

无论是L1损失函数还是L2损失函数,只要是L2正则化项的SVM,都可以通过拉格朗日对偶把它转化为以下形式的对偶问题:

和之前讲的一般SVM有一点类似,前边的目标函数形式上是一致的,只不过Q函数有一点不同。这里该目标函数的训练并没有SMO算法来求解,在liblinear中是用速度更快的坐标下降法来求解。每次挑出一个变量来进行优化把其他 变量固定住不动,则:

优化ai,其他变量保持不动,调整z使目标函数最下化,得到二次函数,和SMO一样可以得到公式解,需要考虑不等式约束,所以最后要做一个截断处理。

L1正则化L2-loss SVC原问题:

再介绍一种线性SVM,L1正则化的L2-loss损失函数的SVM,不过是损失函数是合页损失函数的平方:

可以用坐标下降法求解,效率是非常高的,  

只调节wj来进行优化,使得函数下降的最快,z是wj的调整值,ej是单位向量(如(0,0,1,0,0,...))。最后用泰勒展开可以化为≈后的函数子问题可以采用牛顿法求解。

即坐标下降法外层循环依次优化w1、w2、...,内层循环用牛顿法求解一个子问题。

多类线性支持向量机:

介绍最后一种线性的SVM,是多类的线性支持向量机。

libsvm里边采用一对一方案多个二分类的组合来完成多分类任务。这里直接优化一个多类的损失函数:

第一项表示,如果有k个类,他就优化k个正则化项(这个正则化项可以理解为k个类的分类间隔),所以它本质上是一对剩余的方案,其实还是有k个二分类器。第二项是对不满足不等式约束的一个惩罚。

不等式约束:

表示属于yi的样本xi和属于yi那个类的分界线的权重系数做内积减去其他所有类的权重系数和xi的内积,ξ表示违反不等式约束的松弛变量即如果违反了就做一个惩罚。

分类的时候预测标准是:

把x带到k个权重向量里做内积,看哪个最大就分到哪个类里边去,这实际就是一对剩余的方案,看哪个置信度高,离哪个而分类器边界越远,它就属于一类这边。

可以把多分类的线性SVM用拉格朗日对偶转化一下,得到对偶形式的问题是:

实际上还是先构造一个拉格朗日乘子函数出来,先固定住乘子变量,然后让原始要优化的变量w调整它们让目标函数取极小值,消掉w之后剩下a,调整a让目标函数取极大值就可以了。

这个对偶问题可以用(类似于坐标下降法这种思路)分治法求解。

实验环节:

同logistic回归,这里也是用liblinear做实验。

train -s 3 a1a a1a_model_svm(-s 3表示某一种线性SVM,训练完模型保存到a1a_model_svm文件)

执行,得到迭代次数169,支持向量个数608,目标损失函数最优值-540.863528。

打开生成模型的文件a1a_model_svm,里边内容是:

nr_class 2(类别数是2)
label 1 -1(标签值为1和-1,即二分类)
nr_feature 119(特征向量维数是119)
bias -1(偏置项-1)
w(权重向量,下边是w的分量...)
-0.6712184355140607
-0.4280933369941015

...

训练好模型之后,用预测程序预测:

predict a1a.t a1a_model_svm a1a_predict_svm(测试样本集文件a1a.t,预测结果保存到a1a_predict_svm文件)

预测结果,预测结果准确率83.8%,可以对比之前RBF核,精度差别不大。

libsvm和liblinear的比较:

libsvm这个库不支持逻辑斯蒂回归LR,对于SVM,libsvm核liblinear的区别:

libsvm支持非线性核(高斯核、RBF核、多项式核、自定义核、sigmoid核等),这时他得到的模型是非线性模型,可以处理很复杂的非线性的分类问题;liblinear中只有线性核,是线性模型。

libsvm里边的预测函数会统一写成sgn(Σ1~l aiyiK(xiTxi) + b)(二分类,多分类的实现是通过投票来做的),而在liblinear里边的预测函数是sgn(wTx)(w中合并了b)。非线性核运算速度非常慢,如果直接利用libsvm是没办法直接得到w的(线性核可以通过得到的模型计算w,而非线性核无法算w),而用liblinear可以从模型文件中直接看到w,即liblinear可以直接得到w和b,而libsvm不行。

求解算法不同,libsvm采用的是SMO算法;liblinear采用的是可信域牛顿法(是牛顿法的一个变种,算一个可行域的范围不断地调整它来优化),坐标下降法(每次选出来一个变量进行优化其他变量固定住不动,对于这一个变量的优化一般用牛顿法或者直接求公式解,像是二次函数可以直接求公式解,如果里边带有超越函数如指数函数对数函数那么只能用牛顿法来近似求解它的极值了)。

怎么选择用libsvm还是liblinear呢?如果样本数l比较少及样本的维数n也比较小,可以用libsvm,因为它这时速度不是问题而且精度会更高可以选用RBF核;如果特征向量维数很高即n很大,训练样本数l也很大的话,大到一定程度,没办法选择,在工业应用中只能选择liblinear来解决问题了。

实际应用

[1] Navneet Dalal, Bill Triggs. Histograms of oriented gradients for human detection. computer vision and pattern recognition. 2005.

HOG+L-SVM做行人检测

[2] R. Girshick, J. Donahue, T. Darrell, J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.

L-SVM做通用目标检测

本集总结:

SIGAI机器学习第十八集 线性模型2的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. SIGAI机器学习第十五集 支持向量机2

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

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

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

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

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

  9. SIGAI深度学习第八集 卷积神经网络2

    讲授Lenet.Alexnet.VGGNet.GoogLeNet等经典的卷积神经网络.Inception模块.小尺度卷积核.1x1卷积核.使用反卷积实现卷积层可视化等. 大纲: LeNet网络 Ale ...

随机推荐

  1. HTML学习--基础知识

    WEB a)       什么是WEB WEB,是基于Internet上的一种应用程序(网页应用程序),WEB页面,简称WEB页(网页),就是保存在服务器端上的一个具体的页面 b)       WEB ...

  2. windows10环境下的RabbitMQ使用_笔记

    使用默认账号:guest/guest登录http://localhost:15672/#/进去,添加一个新用户(Administrator权限),并设置其Permission 新建两个控制台程序 安装 ...

  3. java接口幂等性校验

    关于接口幂等性的概念: 幂等性:同一接口调用多次(使用相同的参数),对系统的影响是相同的. 怎样才是对系统有影响? 有影响--->增删改操作,修改一个用户信息,删除用户与某人的关联关系,生成一个 ...

  4. java8之lambda表达式(默认方法)

    [推荐]2019 Java 开发者跳槽指南.pdf(吐血整理)>>> 许多开发语言都将函数表达式集成到了其集合库中.这样比循环方式所需的代码更少,并且更加容易理解.以下面的循环为例: ...

  5. springboot 实时监控 spring-boot-starter-actuator 包

    对java工程实时监控方式很多,本文主要讲在springboot框架中的监控. springboot框架,自带了actuator监控,在pom中引入jar包即可,如下 1.引入jar <depe ...

  6. Git命令和使用

    Git & GitHub Git是一个工具,用于命令行操作 GitHub是一个协同工作平台 包括: Remote original Repository - 远程主仓库(上线唯一仓库) Rem ...

  7. Git提交代码解决方案

    最近做项目不再用小乌龟了,开始用git,便做了记录如下,后期可以看看自己是怎么使用的   下载安装就不说了,直接进入使用环节.   1.使用规则 git pull origin master 和 gi ...

  8. dom 页面位置和大小,元素的位置和大小,鼠标位置

    dom里面三种跟位置相关的元素 页面位置和大小,元素的位置和大小,鼠标位置 ①window:位置(position):(screenLeft, screenTop) [(screenX, screen ...

  9. React Native 开发豆瓣评分(二)路由配置

    路由管理使用官方推荐的 React Navigation; 配置环境 安装相关依赖 yarn add react-navigation react-native-gesture-handler Lin ...

  10. RobotFramework+Eclipse的安装和配置(一)

    最近想学robotframwork来做自动化,那立马就来开始上手 想动手,起码要先下载工具,工具及框架 工具介绍 Robotframework:一款自动化测试框架. Eclipse:一款编辑工具,可以 ...