梅科尔工作室-深度学习第四讲 SVM算法

目录

前言

1.SVM和KNN的对比分析

1.1.什么是SVM算法

1.2.对比分析

2.SVM原理

2.1.支持向量

2.2.寻找支持向量

2.2.1.距离计算(点到平面的距离)

 2.2.2.目标函数

2.2.3.部分数学原理

 2.2.4.SVM求解实例

2.2.5.软间隔优化 

 2.2.6.核函数 (分类好的关键)

3.百度飞桨实际运行效果


前言

本文记录梅科尔工作室深度学习培训的第四讲SVM算法的学习笔记,感谢来恩哥的讲解!


1.SVM和KNN的对比分析

1.1.什么是SVM算法

支持向量机(support vector machines,SVM)是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。

SVM 最早是由 Vladimir N. Vapnik 和 Alexey Ya. Chervonenkis 在1963年提出,目前的版本(soft margin)是由 Corinna Cortes 和 Vapnik 在1993年提出,并在1995年发表。深度学习(2012)出现之前,SVM 被认为机器学习中近十几年来最成功,表现最好的算法。


即将实例的特征向量(以二维为例)映射为空间中的一些点,如下图的实心点和空心点,它们属于不同的两类。SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。

1.2.对比分析

梅科尔工作室-深度学习第四讲 SVM算法_第1张图片

 上图是KNN算法,解决分类问题,主要原理是离哪些点较近,就归哪一类。

 梅科尔工作室-深度学习第四讲 SVM算法_第2张图片

上图是SVM算法 ,也是解决分类问题的,但与KNN算法不同,SVM算法是找决策边界,把数据进行划分。

辅助理解:

SVM, 就像是在河北和北京之间有一条边界线,如果一个人居住在北京一侧就预测为北京人,在河北一侧,就预测为河北人。但是住在河北的北京人和住在北京的河北人就会被误判。

KNN,就是物以类聚,人以群分。如果你的朋友里大部分是北京人,就预测你也是北京人。如果你的朋友里大部分是河北人,那就预测你是河北人。不管你住哪里。
 

2.SVM原理

寻找支持向量,找出最优决策边界。

2.1.支持向量

支持向量意思就是数据集种的某些点,位置比较特殊,比如x+y-2=0这条直线,直线上面区域x+y-2>0的全是A类,下面的x+y-2<0的全是B类,我们找这条直线的时候,一般就看聚集在一起的两类数据,他们各自的最边缘位置的点,也就是最靠近划分直线的那几个点,而其他点对这条直线的最终位置的确定起不了作用,所以我姑且叫这些点叫“支持点”(意思就是有用的点),但是在数学上,没这种说法,数学里的点,又可以叫向量,比如二维点(x,y)就是二维向量,三维度的就是三维向量( x,y,z)。所以 “支持点”改叫“支持向量”。

支持向量要小的,要考虑离自己最近的雷才最安全。

决策边界要大的,要最宽的道路才能行动的更快,更不容易踩雷。

顺序:先找支持向量,再找决策边界。

2.2.寻找支持向量

距离与数据的定义:

在平面上构造直线,点到平面的距离公式,借助了向量和法向量进行相关求解

2.2.1.距离计算(点到平面的距离)

点已知,但是面需要假设,比较抽象。(用向量和法向量知识)

梅科尔工作室-深度学习第四讲 SVM算法_第3张图片

 2.2.2.目标函数

目的:找到一条线,使得离该线最近的点能够最远。

梅科尔工作室-深度学习第四讲 SVM算法_第4张图片

 放缩变换和优化目标

梅科尔工作室-深度学习第四讲 SVM算法_第5张图片

 目标函数可以体现出SVM的基本定义。

2.2.3.部分数学原理

拉格朗日乘子法(在约束条件下求极值的问题

约束条件中可能不仅仅包含一个变量(引入新的参数,但参数和其中的变量有关系)

梅科尔工作室-深度学习第四讲 SVM算法_第6张图片

引入新的参数a1(原本的参数是w、b)  

梅科尔工作室-深度学习第四讲 SVM算法_第7张图片

求偏导,目的是求极值 

梅科尔工作室-深度学习第四讲 SVM算法_第8张图片

简化最终目标函数

w、b通过相关关系,全部转化为a相关的参数,方便进行求解

梅科尔工作室-深度学习第四讲 SVM算法_第9张图片 

极大值问题转化为极小值问题梅科尔工作室-深度学习第四讲 SVM算法_第10张图片 

 2.2.4.SVM求解实例

梅科尔工作室-深度学习第四讲 SVM算法_第11张图片

2.2.5.软间隔优化 

 考虑一些异常的噪音,让分类更合理。(引入松弛因子)

梅科尔工作室-深度学习第四讲 SVM算法_第12张图片

目标函数的变化,及C的引入(能够体现容错能力) 

 梅科尔工作室-深度学习第四讲 SVM算法_第13张图片

 2.2.6.核函数 (分类好的关键)

升维,将二维升为三维。

梅科尔工作室-深度学习第四讲 SVM算法_第14张图片

 升维前:

梅科尔工作室-深度学习第四讲 SVM算法_第15张图片

 升维后:

梅科尔工作室-深度学习第四讲 SVM算法_第16张图片

优点:可视化程度更高;缺点:计算量增大

高斯核函数

梅科尔工作室-深度学习第四讲 SVM算法_第17张图片

 

3.百度飞桨实际运行效果

Demo链接:SVM鸢尾花分类20210512 - 飞桨AI Studio (baidu.com)

梅科尔工作室-深度学习第四讲 SVM算法_第18张图片

 补充代码:

# SVM分类器构建
def classifier():
    clf = svm.SVC(C=0.5,                          # 误差惩罚系数,默认值为1(对噪声的兼容性)
                  kernel='rbf',                   # 线性核 kenrel=“rbf”:高斯核
                  decision_function_shape='ovr')  # 决策函数
    return clf
    
# 训练模型
def train(clf, x_train, y_train):  #将训练数据导入,将分类器参数导入,进行模型训练。
    clf.fit(x_train,               #训练集特征向量
            y_train.ravel())       #训练集目标值

运行结果展示: 

-------- eval ----------
training prediction:0.800
test data prediction:0.833
traing data Accuracy:0.800
testing data Accuracy:0.833
decision_function:
 [[-0.21534447  1.14929879  2.16781465]
 [-0.23980411  0.98966371  2.24063645]
 [-0.20230391  2.21399281  0.9335105 ]
 [-0.24559889  1.17488018  2.20967837]
 [-0.19921225  2.18439875  1.0660674 ]
 [ 2.22465618  0.84798362 -0.18377516]
 [-0.20634861  2.22567005  0.89325684]
 [ 2.21164499  0.91580228 -0.19451839]
 [-0.24863476  1.17038683  2.21798763]
 [-0.25846339  1.19248791  2.22530129]
 [-0.24789416  1.11334635  2.2348937 ]
 [ 2.22988372  0.87591805 -0.20655207]
 [-0.24808728  2.23143851  1.12994516]
 [-0.23682945  1.16332119  2.19964965]
 [-0.24767467  1.14895352  2.22523289]
 [-0.24454109  1.07858717  2.2365913 ]
 [ 2.17589997 -0.1510994   0.92543627]
 [ 2.24221182  0.84889211 -0.2155012 ]
 [ 2.21787479  1.04911504 -0.22439541]
 [ 1.02049458  2.17884732 -0.18339959]
 [ 2.2228104   0.90449069 -0.20583283]
 [ 2.17283993  0.90926327 -0.13758945]
 [-0.20999778  0.8728184   2.23291921]
 [-0.24558741  1.0767854   2.23808285]
 [-0.25020456  1.0787147   2.24326018]
 [-0.24559889  1.17488018  2.20967837]
 [-0.23670784  1.1813149   2.18564653]
 [-0.12971939  0.99377719  2.13205829]
 [-0.24287229  1.04109984  2.23928261]
 [-0.14138719  2.14624409  0.9856207 ]
 [ 2.24425466  0.87470966 -0.2271687 ]
 [-0.21497238  2.21512222  0.99881429]
 [-0.24571672  1.19084414  2.19811204]
 [ 2.21787479  1.04911504 -0.22439541]
 [ 2.2394817   0.92201555 -0.23065238]
 [-0.24057989  1.13530193  2.21880635]
 [ 2.25233918  0.8590587  -0.2348    ]
 [-0.21534447  1.14929879  2.16781465]
 [-0.22923192  1.07994691  2.21785291]
 [-0.24209565  1.0964142   2.23065902]
 [-0.18199065  2.18310793  0.99462775]
 [-0.2316303   1.02294875  2.22928307]
 [-0.20399333  1.15017266  2.14364742]
 [ 2.24427215  0.82599969 -0.20757998]
 [-0.24808728  2.23143851  1.12994516]
 [-0.24140255  1.15949504  2.21026061]
 [-0.24057989  1.13530193  2.21880635]
 [ 0.93514665  2.21006213 -0.19796995]
 [-0.20562326  1.04977013  2.19641615]
 [-0.18595334  2.21222405  0.89028905]
 [ 2.21378173  0.85287831 -0.16650973]
 [ 2.21725483  1.01806106 -0.21952523]
 [ 2.24726554  0.80466679 -0.19769189]
 [-0.2316303   1.02294875  2.22928307]
 [ 2.24235421  0.94652968 -0.2373489 ]
 [-0.22922046  2.1967421   1.14407726]
 [-0.24908833  1.18739018  2.20861639]
 [-0.18910984  2.14998065  1.11010476]
 [ 2.22043531  0.8840473  -0.19554151]
 [ 2.21415505  0.94425973 -0.20493718]
 [-0.2097269   2.19705041  1.06684558]
 [ 2.21725483  1.01806106 -0.21952523]
 [-0.2503139   1.08614722  2.2424229 ]
 [-0.23100858  1.16621684  2.18603529]
 [-0.24255284  1.00573513  2.24211795]
 [-0.24619759  1.12180832  2.23075632]
 [-0.25555646  2.22156935  1.18861274]
 [-0.17851311  0.99720361  2.17911908]
 [-0.224668    0.89571688  2.23871183]
 [-0.13433027  2.16406638  0.92421413]
 [ 2.22122955 -0.19854706  0.888832  ]
 [-0.2097269   2.19705041  1.06684558]
 [ 2.16349262  1.17436865 -0.22438396]
 [-0.19738544  2.21963579  0.89191701]
 [-0.24558741  1.0767854   2.23808285]
 [ 2.23161891  0.89379288 -0.21468979]
 [-0.25365393  1.15141786  2.23386287]
 [ 2.23742637  0.86818023 -0.21519045]
 [ 2.24425466  0.87470966 -0.2271687 ]
 [-0.19346751  0.99562075  2.19424446]
 [-0.15871505  2.18093838  0.9274147 ]
 [-0.23983686  1.0543517   2.23443237]
 [ 2.22457687  0.92881318 -0.21400436]
 [ 2.24041603  0.83850322 -0.20743273]
 [-0.15197665  1.09260369  2.10397334]
 [ 2.23912915  0.94448746 -0.23349106]
 [-0.2097269   2.19705041  1.06684558]
 [ 2.2263442   0.99089377 -0.22537095]
 [-0.24057989  1.13530193  2.21880635]
 [ 2.10426536  1.18564233 -0.210429  ]
 [ 2.2442974   0.90752433 -0.23412296]
 [-0.22331201  1.08565049  2.20913636]
 [ 2.24551308  0.92804939 -0.23864611]
 [-0.10092553  2.14257219  0.92051396]
 [ 2.23686922  0.99476147 -0.23642143]
 [-0.19738544  2.21963579  0.89191701]
 [-0.14507257  2.22580077  0.80977472]
 [ 2.22988372  0.87591805 -0.20655207]
 [ 2.20695821  1.06956775 -0.2184462 ]
 [ 1.06333941  2.19625303 -0.20831428]
 [ 2.25794468  0.82986056 -0.23468399]
 [-0.18910984  2.14998065  1.11010476]
 [-0.22361251  1.16819633  2.16827494]
 [ 2.23161891  0.89379288 -0.21468979]
 [-0.24209565  1.0964142   2.23065902]
 [-0.16443409  2.16685693  0.99069314]
 [-0.2545209   2.22839586  1.17096584]
 [-0.24272027  1.03028273  2.24019014]
 [-0.2097269   2.19705041  1.06684558]
 [ 2.17841331  0.93944128 -0.16058933]
 [ 2.19271482  1.08675243 -0.2108879 ]
 [-0.24062478  2.20544511  1.16574949]
 [-0.23041593  1.18329943  2.16808148]
 [-0.24901833  1.06769926  2.2432084 ]
 [-0.20640454  2.20659165  0.9987126 ]
 [-0.24168444  1.17851442  2.19914201]
 [-0.23041693  1.11636622  2.20999274]
 [-0.25174243  1.20919309  2.19446109]
 [-0.24209565  1.0964142   2.23065902]
 [ 2.21725483  1.01806106 -0.21952523]]
-------- show ----------
grid_test:
 [[4.3       2.       ]
 [4.3       2.0120603]
 [4.3       2.0241206]
 ...
 [7.9       4.3758794]
 [7.9       4.3879397]
 [7.9       4.4      ]]
the distance to decision plane:
 [[ 2.14259429  1.18181824 -0.22024657]
 [ 2.14491871  1.18096339 -0.22059907]
 [ 2.14720399  1.18008532 -0.22094825]
 ...
 [-0.16171563  0.86017064  2.20825136]
 [-0.16055583  0.86010978  2.20766208]
 [-0.15938485  0.86005854  2.20706555]]
grid_hat:
 [0. 0. 0. ... 2. 2. 2.]

梅科尔工作室-深度学习第四讲 SVM算法_第19张图片


总结 

笔记记录就到此结束啦!感谢来恩哥!

你可能感兴趣的:(算法,深度学习,支持向量机)