由于公式符号繁多,博主也经过了多次修正检查,如有疏漏或不对的地方还请指正(公式编辑真的打的累死惹)~~
支持向量机 SVM(support vector machine)算法原理:
(首先给出一个图,svm最终目的就是要求解图中的超平面g,也叫决策边界。其中样本G,R,S可称为 支持向量)
将含两种类别的样本空间通过一个决策边界分开,使得离决策边界最近的样本点能够尽可能远离决策边界 (通俗理解:找到一条线,使得离该线最近的点能够最远),下面直接进入正题开始推导:
1.点面距离公式 =》svm的中最优解问题:
===》几何公式:
点(x0,y0)到直线 Ax + By + C = 0 的距离
===》样本空间下描述:(含x轴y轴的二维平面,等价于 含两种特征的样本空间)
在含两种特征f1,f2的样本空间中,某个样本点Xi(特征f1 = x1,特征f2 = x2) 与某个特征划分边界D: w1f1 +w2f2 + b = 0 的欧氏距离为:
将特征划分边界 写成向量形式=》
其中,F=(f1,f2)表示样本空间中各个维度的特征,样本点 【0.3】特征划分平面D': w1'f1'+w2'f2'+...+wn'fn' + b' = 0 即 :
【0.4】
决策方程的变换:设样本的类别Y:X为正例时 y = +1,负例时 y = -1,若决策方程为(令决策边界为WtΦ(x) + b = 0, Φ为对x执行某种变换)则有:
决策边界的某一侧有正例点xi : y(xi) = WtΦ(xi) + b > 0 , 正例,xi对应标记 yi = +1 > 0
则决策边界另一侧的负例点xi': y(xi') = WtΦ(xi')+ b < 0 , 负例,xi'对应标记 yi'= - 1 < 0标记值 * 代入了样本的决策方程 > 0
于是, 令 yi * y(xi) 必定大于0 (根据这个性质,消去 距离公式中的绝对值符号 | ? |)
经过化简得到SVM中的 样本·决策边界 "距离"为:(消去绝对值符号,下式的D不是严格意义上的 距离d)
【0.5】
初提目标函数:(在取最小的点线距离的情况下·支持向量,使得代入样本的决策边界的距离取得最大值·最大间隔,时W和b的值)
===> 【0.6】
放缩&简化:通过对决策方程y(x; W,b)的放缩使其总是满足 yi * (WtΦ(xi) + b) >=1 【0.7】
于是 ,【0.6】简化为: 【0.8】
max_W,b {1/||W||} =最值转换=》 =问题转换=》 【0.9】,约束条件【0.7】不变
2.先介绍一下【拉格朗日乘数法】:(常用于求解最优化问题,按条件分为三种:无约束 & 等式约束 & 不等式约束)
1.无约束:求目标函数对各个自变量?的导数,求导函数等于0的点可能是极值点,结果回代验证
2.等式约束:
求n元函数在 m个条件函数 其中j=1,2,…,m 下的条件极值:
拉格朗日函数,求 L 关于x1,…xn的偏导数,令它们等于零并与m个条件函数联立φ,则
,其中i=1,2,…,n.j=1,2,…,m 【0.10】
,其中j=1,2,…,m 【0.11】
联立【0.10】& 【0.11】解得 x1,x2,…,xn 为ƒ可能极值点
3.(含)不等式约束:
求n元函数ƒ(x1,x2,…,xn)在 p个等式条件函数 hj(x1,x2,…,xn)=0 和q个不等式条件函数 gk(x1,x2,…,xn)<=0 ,其中j=1~p,k=1~q 下的条件极值:
拉格朗日函数
KKT条件 -> 最优值必须满足的条件:,联立求得可能的最优解。
=》注意到 第三个KKT条件 θ*gk(x1,x2,…,xn)=0, gk <= 0. 若 gk != 0时必有 θ=0
3.SVM中的 拉格朗日乘数法推导:
对于最优化问题:,(不等式)约束函数(参考【0.7】):
求n+1元函数在 n个不等式条件函数其中 i = 1~n下的条件极值:
拉格朗日函数
=》 【0.12】
KKT条件 & 对偶性质: ==>
·L对W求偏导: 【0.13】
·L对b求偏导: 【0.14】
【0.12】展开得: 【0.15】
将【0.13】与【0.14】代回到【0.12】得: 【0.16】至此完成argmin_W,b{L}求解任务
继续求 argmax_λ{ L } ,将【0.16】代入得:【0.17】
=》由第三个KKT条件有: ,由拉格朗日乘数法条件:λi >=0;
【0.17】极大值问题转换成极小值问题:,
4.SVM中的 Soft-margin 软间隔:
首先理解软间隔的目的,它是忽略极少数噪点样本,一求解全局最优的决策边界,如果严格按svm的要求来确定决策边界,有时候数据中的极少数噪点,会对 决策边界对样本的划分效果 (svm的分类效果) 产生较大影响
因此,可以适当放松确定决策边界的要求,如通过引入 【松弛因子ξi】有:【0.19】(基于【0.7】引入ξi)
令 ,可以写作 【0.20】
将【0.19】代入拉格朗日函数【0.12】(目标函数):
=》 =》
设C为常数,新目标函数: 【0.20】
C 大 ===》 严格按照要求确定决策边界
C 小 ===》 允许忽略少量噪声点的干扰
常数C 可根据实际样本情况来指定 =》 C越大,间隔越“硬”;C越小,间隔越“软”
5.拉格朗日乘数法 中引入 松弛因子ξi 的推导:
对【0.12】拉格朗日函数的推导:
令 【0.21】
由【0.13】【0.14】有约束条件: 【0.22】
·L对ξi求偏导: əL/əξi = 0 =》 C - λi - μi = 0 【0.23】
·拉格朗日乘数法-松弛因子条件:λi >=0, μi >= 0 【0.24】
综合约束条件【0.22】【0.23】【0.24】可将原最优解问题转化为:
,约束条件【0.25】
6.K 核函数: 决策边界为中的Φ(x)(以下写为K)为对x执行某种变换,这种变换的
目的:将 低维·线性不可分(难分) =转化=》高维·线性可分(易分)
设,非线性函数Φ实现输入空间X到特征空间F的映射,其中F属于R(m),n<·低维n 原决策方程为,其中 i=1~n表示特征量下标
·映射到高维m 决策方程为,其中 j=1~m表示样本空间内的m个样本点的下标
wjK(x,xj) 中的 x和xj 的意义:x是当前待分类的样本点,xj为训练时从样本空间中 手动(指定)选取的m个样本点
核函数的类型有以下:( j =1~m 为预先选取的m个样本点的 样本下标)
1.线性 核函数:(线性可分情况下可使用)
(·点乘、<,>内积、对应项乘积之和)
2.多项式 核函数:
(通常取R = 1,d = 2)
3.高斯 核函数 ( RBF径向基核函数 ):(灵活性高, 应用最广,)
4.Sigmoid 核函数:
7.SMO算法
8.关于如何选取 核函数 的一些建议:
0.一般用线性核和高斯核,时间上高斯核耗费较大,要注意需要对数据归一化处理
1. 如果Feature 多,与样本量相当,选用 线性回归LR 或 线性核svm (Linear Kernel)
2. 如果Feature 少,而样本量不大不小,选用 高斯核svm (Gaussian Kernel)
3. 如果Feature 少,而样本量大,可以手动添加feature,参考情况1:线性回归LR 或 线性核svm (Linear Kernel)