ML之SVM:SVM算法的简介、应用、经典案例之详细攻略



目录

​SVM算法的简介​

​1、SVM模型分类—线性可分、线性、非线性​

​2、SVM的决策边界​

​3、SVM中的核函数​

​4、SVM算法推导​

​1.1、SVM转为对偶问题的求解—SMO算法思​

​5、SVM中“损失+惩罚”框架的灵活性​

​6、SVM的损失函数分析​

​SVM的应用——解决的问题类型​

​1、SVM用作分类​

​1.1、SVM与二分类​

​1.2、SVM与多分类​

​2、SVM用作回归​

​SVM的经典案例​




SVM算法的简介

        支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。

        SVM的基本思想是:找到集合边缘上的若干数据(称为支持向量(Support Vector)),用这些点找出一个平面(称为决策面),使得支持向量到该平面的距离最大。


1、SVM模型分类—线性可分、线性、非线性

        由简至繁的SVM模型包括:

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
  • 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
  • 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;

线性可分数据


ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_02ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_03ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_04

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_05ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_06

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_07ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_08ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_支持向量机_09
ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_支持向量机_10ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_11


线性不可分数据


ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_12ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_13


非线性数据

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_14



2、SVM的决策边界

        在分类问题中,很多时候有多个解,如下图左边所示,在理想的线性可分的情况下其决策平面会有多个。而SVM的基本模型是,在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,SVM算法计算出来的分界会保留对类别最大的间距,即有足够的余量,如下图右边所示。

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_15



3、SVM中的核函数

        在解决线性不可分问题时,它可以通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。如下图所示,通过核函数的引入,将线性不可分的数据映射到一个高纬的特征空间内,使得数据在特征空间内是可分的。如下图所示:

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_16

高斯核函数是无穷维的

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_17ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_18

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_支持向量机_19ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_20ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_21ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_22

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_23ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_24


4、SVM算法推导

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_25ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_26


ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_27ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_28

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_支持向量机_29


1.1、SVM转为对偶问题的求解—SMO算法思

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_30



5、SVM中“损失+惩罚”框架的灵活性

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_31


6、SVM的损失函数分析

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_核函数_32




SVM的应用——解决的问题类型

1、SVM用作分类

1.1、SVM与二分类

二分类Binary Classification,解决输出是0还是1的问题。SVM解决的是二分类。


1.2、SVM与多分类

T1、线性核函数Linear Kernal:采用的策略是"one versus one" 。

T2、线性支持向量分类器LinearSVC,采用的策略是"one versus all"

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_数据_33


2、SVM用作回归

       支持向量回归(Support Vector Regression, SVR)将SVM由分类问题推广至回归问题可以得到支持向量回归(Support Vector Regression, SVR),此时SVM的标准算法也被称为支持向量分类(Support Vector Classification, SVC)。

       支持向量分类的方法能被推广到解决回归问题,称为支持向量回归。由支持向量分类产生的模型仅依赖训练数据的子集,因为创建模型的代价函数并不考虑超过边界的训练点。类似地,由支持向量回归产生的模型仅依赖训练数据的子集,因为创建模型的代价函数忽略任何接近模型预测的训练数据。

      支持向量回归有三个不同的执行版本:rbfSVR,polySVR,linearSVR。linearSVR执行速度比SVR要快,但只提供线性核。fit方法取X, y作为输入参数,这里,y取浮点值而不是分类的整数值。

ML之SVM:SVM算法的简介、应用、经典案例之详细攻略_支持向量机_34

from sklearn import svm
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = svm.SVR()
clf.fit(X, y)


SVM的经典案例

DL之NN/Average_Darkness/SVM:手写数字图片识别(本地数据集50000训练集+数据集加4倍)比较3种算法Average_Darkness、SVM、NN各自的准确率

MAT之SVM:SVM之Classification根据已有大量数据集案例,输入已有病例的特征向量实现乳腺癌诊断高准确率预测

MAT之SVM/BP:SVR(better)和BP两种方法比较且实现建筑物钢筋混凝土抗压强度预测

ML之SVM:随机产生100个点,建立SVM模型,找出超平面方程

ML之SVM:基于sklearn的svm算法实现对支持向量的数据进行标注