原创文章,如需转载请保留出处
本博客为唐宇迪老师python数据分析与机器学习实战课程学习笔记
一.简介
1.1 定义
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:
- 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
- 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
- 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
1.2 理解
- 要解决的问题:什么样的决策边界才是最好的呢?
- 特征数据本身如何就很难分,怎么办呢?
- 计算复杂度怎么样?能实际应用吗?
- 目标:基于上述问题对SVM进行推导
1.3 决策边界
决策边界:选出来离雷区最远的(雷区就是边界上的点,要Large Margin)
二.距离与数据的定义
2.1 距离的计算
2.2 数据标签定义
- 数据集:(X1,Y1)(X2,Y2)…(Xn,Yn)
- Y为样本的类别:当X为正例时候Y = +1,当X为负例时候Y = -1
- 决策方程:
三.目标函数
3.1 优化的目标
- 通俗解释:找到一个条线(w和b),使得离该线最近的点(雷区)能最远
- 将点到直线的距离化简得:
(由于yi * y(xi)>0所以将绝对值展开原始依旧成立) - 放缩变换:对于决策方程(w,b)可以通过放缩使得其结果值|Y|>=1
- 优化目标
四.目标函数求解
4.1 化简目标函数
- 当前目标:
- 常规套路:将求解极大值问题转换成极小值问题
- 如何求解:应用拉格朗日乘子法求解
4.2 拉格朗日乘子法
- 带约束的优化问题:
- 原式转换:
- 我们的式子:
4.3 SVM求解
- 分别对w和b求偏导,分别得到两个条件(由于对偶性质)
- 对w求偏导:
- 对b求偏导:
五.SVM求解实例
5.1 带入原始
5.2 求导
5.3 求解实例
- 数据:3个点,其中正例X1(3,3),X2(4,3),负例X3(1,1)
- 求解
- 原式:
六.支持向量的作用
6.1 求出值
- 分别对α1和α2求偏导,偏导等于0可得:
α1=1.5 α2=-1
(并不满足约束条件αi≥0,i=1,2,3…,所以解应在边界上)
α1=0 α2=-2/13 带入原式=-0.153(不满足约束)
α1=0.25 α2=0 带入原式=-0.25(满足)
最小值在(0.25,0,0.25)处取得
6.2 求平面
6.3 支持向量
支持向量:真正发挥作用的数据点,α值不为0的点
七.软间隔问题
7.1 软间隔(soft - margin)
- 软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线不太好了
- 之前的方法要求要把两类点完全分得开,这个要求有点严格,我们来放松一下
- 为了解决问题,引入松弛因子
- 新的目标函数:
- 当C趋近于很大时:意味着分类严格不能有错误
- 当C趋近于很小时:意味着可以有更大的错误容忍
- C是我们需要制定的一个参数
7.2 拉格朗日乘子法
八.SVM核变换
8.1 低维不可分问题
- 核变换:既然低维的时候不可分,那映射到高维?
- 目标:找到一种变换的方法,就是Φ(X)
8.2 举例
8.3 完成映射