Python数据分析与机器学习29-支持向量机(SVM)

文章目录

  • 一. 支持向量机概述
    • 1.1 要解决的问题
    • 1.2 决策边界
    • 1.3 距离的计算
    • 1.4 数据标签定义
    • 1.5 优化的目标及目标函数
      • 1.5.1 优化目标
      • 1.5.2 目标函数
    • 1.6 拉格朗日乘子法
    • 1.7 SVM求解
    • 1.8 SVM求解实例
    • 1.9 soft-margin
    • 1.10 低维不可分问题
  • 参考:

一. 支持向量机概述

Python数据分析与机器学习29-支持向量机(SVM)_第1张图片

1.1 要解决的问题

  1. 什么样的决策边界才是最好的呢?
  2. 特征数据本身如果就很难分,怎么办呢?
  3. 计算复杂度怎么样?能实际应用吗?

目标:
基于上述问题对SVM进行推导

1.2 决策边界

选出来离雷区最远的(雷区就是边界上的点,要Large Margin)
Python数据分析与机器学习29-支持向量机(SVM)_第2张图片

1.3 距离的计算

Python数据分析与机器学习29-支持向量机(SVM)_第3张图片
Python数据分析与机器学习29-支持向量机(SVM)_第4张图片

在这里插入图片描述

1.4 数据标签定义

数据集:(X1,Y1)(X2,Y2)…(Xn,Yn)

Y为样本的类别:当X为正例时候Y = +1 当X为负例时候Y = -1

决策方程:
Python数据分析与机器学习29-支持向量机(SVM)_第5张图片

1.5 优化的目标及目标函数

1.5.1 优化目标

通俗解释:
找到一个条线(w和b),使得离该线最近的点(雷区)
能够最远

将点到直线的距离化简得:
Python数据分析与机器学习29-支持向量机(SVM)_第6张图片

由于
image.png
所以将绝对值展开原始依旧成立

1.5.2 目标函数

放缩变换:
对于决策方程(w,b)可以通过放缩使得其结果值|Y|>= 1
(之前我们认为恒大于0,现在严格了些)
image.png

优化目标:
Python数据分析与机器学习29-支持向量机(SVM)_第7张图片

由于
image.png
只需要考虑
Python数据分析与机器学习29-支持向量机(SVM)_第8张图片
目标函数搞定!

当前目标:
image.png

约束条件:
在这里插入图片描述

常规套路:
将求解极大值问题转换成极小值问题
因为通过求导(梯度下降)可以求出极小值,所以很多数学问题最终都是用来求最小值。
至于为什么要加一个1/2,因为使用对数,刚好和平方那个消除了。
image.png

如何求解:
应用拉格朗日乘子法求解

1.6 拉格朗日乘子法

这里我们就不讲解拉格朗日乘子法,直接使用。
带约束的优化问题:
image.png
image.png

原式转换:
image.png

我们的式子:
image.png

约束条件:
image.png

1.7 SVM求解

分别对w和b求偏导,分别得到两个条件(由于对偶性质)
在这里插入图片描述

对w/b求偏导:
Python数据分析与机器学习29-支持向量机(SVM)_第9张图片

带入原式:
image.png

Python数据分析与机器学习29-支持向量机(SVM)_第10张图片

Python数据分析与机器学习29-支持向量机(SVM)_第11张图片

1.8 SVM求解实例

Python数据分析与机器学习29-支持向量机(SVM)_第12张图片

Python数据分析与机器学习29-支持向量机(SVM)_第13张图片

Python数据分析与机器学习29-支持向量机(SVM)_第14张图片

Python数据分析与机器学习29-支持向量机(SVM)_第15张图片

支持向量:真正发挥作用的数据点,ɑ值不为0的点支持向量机
Python数据分析与机器学习29-支持向量机(SVM)_第16张图片

1.9 soft-margin

Python数据分析与机器学习29-支持向量机(SVM)_第17张图片

软间隔:
有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好了

之前的方法要求要把两类点完全分得开,这个要求有点过于严格了,我们来放松一点!

为了解决该问题,引入松弛因子
image.png

新的目标函数:
image.png
当C趋近于很大时:意味着分类严格不能有错误
当C趋近于很小时:意味着可以有更大的错误容忍
C是我们需要指定的一个参数!

拉格朗日乘子法:
Python数据分析与机器学习29-支持向量机(SVM)_第18张图片

1.10 低维不可分问题

核变换:既然低维的时候不可分,那我给它映射到高维呢?
Python数据分析与机器学习29-支持向量机(SVM)_第19张图片

目标:找到一种变换的方法,也就是∅(x)
Python数据分析与机器学习29-支持向量机(SVM)_第20张图片

通过升级维度将我们的特征区分开,那么真正的情况我们是否升级了维度呢?
我们都知道,升级了维度,计算量呈指数型上升,别人的模型可能半个小时就跑出来,你的模型需要数天才可以跑出来,这样的话肯定是不行的。
核函数是在一个低维空间去完成高维样本内积的计算,计算量大大减少。
Python数据分析与机器学习29-支持向量机(SVM)_第21张图片

高斯核函数:
Python数据分析与机器学习29-支持向量机(SVM)_第22张图片

线性核函数:
Python数据分析与机器学习29-支持向量机(SVM)_第23张图片

高斯和函数:
不一定是圆形,也可以是其它
Python数据分析与机器学习29-支持向量机(SVM)_第24张图片

参考:

  1. https://study.163.com/course/introduction.htm?courseId=1003590004#/courseDetail?tab=1

你可能感兴趣的:(数据分析,+,机器学习,Python,#,Python数据分析与机器学习,机器学习,支持向量机,python)