SVM发展史

线性SVM=线性分类器+最大间隔

间隔(margin):边界的活动范围。The margin of a linear classifier is defined as the width that the boundary could be increased by before hitting a data point.

预备知识

  • 线性分类器的分割平面(超平面):Wx+b=0
  • 点到超平面的距离:\(M=\frac{ \vert g(x) \vert }{\left\|W\right\| }\),其中\(g(x)=Wx+b\)
  • SVM中正样本定义为g(x)>=1,负样本定义为g(x)<=-1
  • SVM中Wx+b=1或者Wx+b=-1的点称为支持向量

间隔的形式化描述

\(M=\frac{2}{\left\|W\right\| }\)

SVM通过最大化M来求解参数Wb的,目标函数如下:

求解 :拉格朗日乘数法,偏导为0后回带

在SVM中,原问题和对偶问题具有相同的解,W已经求出:\(W=\sum_{i=1}^{l}{\alpha_iy_ix_i}\), 不等式约束,还需要满足KKT条件。若\(\alpha_i>0\),则必有xi为支持向量,即:训练完毕后,最终模型仅和支持向量有关。

b的求解过程如下

一个实例

软间隔:加入容错量

同样采用拉格朗日乘数法求解

LD的区别仅仅体现为\(\alpha_i\)的约束不同。

非线性SVM:特征空间

通过映射到高维空间来将线性不可分的问题转换为线性可分的问题。

高维空间向量内积运算复杂度高。以二次型为例,直接计算

\(x_i⋅x_j⇒Φ(x_i)⋅Φ(x_j)\),直接计算的话,复杂度会成倍增加。

以二次型为例,理解核技巧

通过在低维空间的计算o(m),得到高维空间的结果,不需要知道变换是什么,更不需要变换结果的内积,只需要知道核函数,就可以达到相同的目标。(变换结果的内积)

请看实例,二维空间

常用的核函数

多项式变换中,当d=2时,就是二次型变换。

此时w和b的结果如下:

将\(x_i\)换为\(\phi(x_i)\),将\(\phi(x_i)\cdot \phi(x_j)\)换为\(K(x_i,x_j)\),其余都不变,真的很简洁。

SVM在Scikit-Learn中的应用

  • Linear SVM:\(min\frac{1}{2}\left\|w\right\|^2+C\sum{\zeta^2}\)
LinearSVC(
penalty='l2',
C=1.0,#就是目标函数的C,C越大(eg:1e9),容错空间越小,越接近硬边界的SVM(最初的SVM,基本不用),C越小(eg:C=0.01),容错空间越大,越接近soft Magin.
)
  • 核函数 SVM:from sklearn.svm import SVC
SVC(
C=1.0,
kernel='rbf',
degree=3,#多项式核函数的指数d
gamma='scale',#高斯基函数中的参数gamma,越大,函数分布越狭窄; gamma越小,决策边界越松弛,当很小时,可以认为趋于无穷大成一条直线了,这时就欠拟合了。gamma取值越大,决策边界越收紧,当很小时,会无限包紧样本点,这时就过拟合了。
)

支持向量机SVM知识梳理和在sklearn库中的应用的更多相关文章

  1. 2.sklearn库中的标准数据集与基本功能

    sklearn库中的标准数据集与基本功能 下面我们详细介绍几个有代表性的数据集: 当然同学们也可以用sklearn机器学习函数来挖掘这些数据,看看可不可以捕捉到一些有趣的想象或者是发现: 波士顿房价数 ...

  2. scikit_learn (sklearn)库中NearestNeighbors(最近邻)函数的各参数说明

    NearestNeighbors(n_neighbors=5, radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, ...

  3. Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较

    DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...

  4. Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别

    敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...

  5. 1.sklearn库的安装

    sklearn库 sklearn是scikit-learn的简称,是一个基于Python的第三方模块.sklearn库集成了一些常用的机器学习方法,在进行机器学习任务时,并不需要实现算法,只需要简单的 ...

  6. day-10 sklearn库实现SVM支持向量算法

    学习了SVM分类器的简单原理,并调用sklearn库,对40个线性可分点进行训练,并绘制出图形画界面. 一.问题引入 如下图所示,在x,y坐标轴上,我们绘制3个点A(1,1),B(2,0),C(2,3 ...

  7. [转]支持向量机SVM总结

    首先,对于支持向量机(SVM)的简单总结: 1. Maximum Margin Classifier 2. Lagrange Duality 3. Support Vector 4. Kernel 5 ...

  8. Python中的支持向量机SVM的使用(有实例)

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn也集成了SVM算法. 一.简要介绍一下sklearn Scik ...

  9. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

随机推荐

  1. 树莓派 zeroWH 使用笔记

    更新raspbian    apt-get update    apt-get upgrade 删除python2    sudo rm /usr/bin/python安装python3    sud ...

  2. centos7环境下安装nginx

    安装所需环境 nginx是C语言开发,在Linux和windows环境上面都可以运行. 1.gcc安装 安装nginx需要将官网下载的代码进行编译,编译依赖gcc环境,如果没有gcc环境,需要先安装g ...

  3. Sql练习201908210951

    表结构: create table SalePlan ( PlanId ,) primary key, GoodsId int, PlanPrice decimal(,) ); go create t ...

  4. NKOJ3765 k个最小和

    问题描述 有k个整数数组,各包含k个元素,从每个数组中选取一个元素加起来,可以得到k^k个和,求这些和中最小的k个值. 输入格式 第一行,一个整数k(k<=500)接下来k行,每行k个正整数(& ...

  5. B. The Monster and the Squirrel

    B. The Monster and the Squirrel Ari the monster always wakes up very early with the first ray of the ...

  6. 老技术新谈,Java应用监控利器JMX(1)

    先聊聊最近比较流行的梗,来一次灵魂八问. 配钥匙师傅: 你配吗? 食堂阿姨: 你要饭吗? 算命先生: 你算什么东西? 快递小哥: 你是什么东西? 上海垃圾分拣阿姨: 你是什么垃圾? 滴滴司机: 你搞清 ...

  7. c期末笔记(1)

    运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...

  8. Nagios监控服务

    Nagios监控服务 案例1:常用系统监控命令 案例2:搭建nagios监控服务器 案例3:配置文件及插件使用 案例4:监控远程主机的公有数据 案例5:监控远程主机的私有数据 1 案例1:常用系统监控 ...

  9. Hadoop(十一):组合任务概述和格式

    组合任务概述 一些复杂的任务很难由一个MR处理完成,所以一般需要将其拆分成为多个简单的MR子任务来执行. MapReduce框架中对于这类的问题提供了几种方式进行任务执行流程的控制,主要包括以下几种方 ...

  10. nginx产品环境安全配置-主配置文件

    以下配置为产品环境的nginx基于安全和效率的主配置文件,不包含fastcgi相关配置 cat /etc/nginx/nginx.conf user nginx; worker_processes a ...