支持向量机方法,支持向量机是有监督还是无监督好,支持向量机是监督还是非监督
支持向量基@[拉格朗日乘数法对偶问题KKT条件核函数铰链损失]
当有多个超平面来划分样本时,选择对训练样本的局部扰动具有最佳容限的超平面。
超平面的法向量除以区间支持向量为w=(w1;w2;wd)w=(w1;w2;Wd),那么超平面就是wTx b=0wTx b=0。从任意点X到超平面(w,b)的距离为
r=wTx bw.r=wTx b‖w‖。
假设超平面对样本分类正确,对于(xi,yi)D(xi,yi)D,如果yi=1yi=1,则有wTxi b0wTxi b0;如果yi=1yi=1,则有wTxi b0wTxi b0。制造
{wTxi b 1,wTxi b1,yi=1 yi=1 { wTxi b1,yi=1 wTxi b1,yi=1
Wtxb=1 wtxb=1为“支持向量”,支持向量之间的距离,即“区间”为=2w=2‖w‖。
求具有“最大间距”的超平面,即最大化w1‖w‖1等价于最小化w2‖w‖2。所以支持向量基的基本形式是
最小12w2最小12‖w‖2
s.t .易(wTxi b)1s.t .易(wTxi b)1
对偶问题将拉格朗日乘子法应用于基本问题得到其“对偶问题”,求解对偶问题效率更高。类型的基本拉格朗日函数是
L(w,b,)=12w2I=1mI(1 yi(wTxi b))L(w,b,)=12‖w‖2I=1mI(1 yi(wTxi b))
设L对W和B的偏导数为0,代入L的对偶问题为
maxI=1mI 12I=1mj=1mIjyiyjxTixjmaxI=1mI 12I=1mj=1mIjyiyjxiTxj
s.t.i=1miyi=0s.t.i=1miyi=0
i0i0
上述过程需要满足KKT条件。
i0yif(xi)10i(yif(xi)1)=0{i0yif(xi)10i(yif(xi)1)=0
求解对偶问题的SMO算法。思路是一次选取两个变量i,ji,j,固定其他参数,更新i,ji,j,直到收敛。
违反KKT条件越大,变量更新引起的目标函数值降低越大,所以每次选取的样本尽量不同。
核如果样本不是线性可分的,可以把样本从原始空间映射到更高维的特征空间,这样样本就可以在更高维的空间中线性可分。
设(x)(x)表示映射x后的特征向量,则特征空间中的超平面为f(x)=wt(x)BF(x)=wt(x)b,存在与上述类似的原问题和对偶问题。计算对偶涉及内积计算,对于无限维很难。因此,特征空间的内积被定义为原始样本空间的“核函数”。常用核函数:线性核: (Xi,XJ)=xtixj (Xi,XJ)=xitxj无奈的小白菜核: (Xi,XJ)=exp(XIXJ222)(Xi,XJ)
软间距和正则化防止过拟合,允许软间距,即最大化间距,同时不满足最小样本数并引入松弛变量。所以优化函数是
min 12w2cI=1m0/1(yi(wTxi b)1)min 12‖w‖2cI=1m0/1(yi(wTxi b)1)
“0-1损失函数”是不连续的。一般使用备选损失函数,如hinge损失: hinge (z)=max (0,1z) hinge (z)=max (0,1z)。
Python sklearn实现import pandas as PD import numpy as NP from sk learn import SVM from sk learn . model _ selection import train _ test _ split、Cross _ val _ score import matplotlib . py plot as PLT import matplotlib as mpl # txt也可以用read_csv读取为dataframe,以及所需的列行数。loc取数表示为某行iris=PD . read _ CSV( E:\ \ study \ \ data \ \ iris . txt ,sep=,,skiprows=[1])X=iris.loc[:[萼片长度,萼片宽度]]y=iris.loc[:[class]]x_train,x_test,y_train,y_test=train_test_split(X,y,test_size=0.3)clf=svm。SVC(C=0.8,kernel=rbf ,gamma=20,decision _ function _ shape= ovr )clf . fit(x _ train,Y _ train) print clf。score (x _ test,y _ test) #准确率0.778优缺点:仅考虑支持向量,模型鲁棒性高,适合小样本。在线性可分性的情况下,SVM等价于logistic回归,非线性核可以用来求解线性可分性。
缺点:噪声敏感,难以实现大规模训练样本,多分类存在困难。
提示如果特征的数量很大,这与样本的数量相似,LR或线性核SVM;被选中;如果特征数较少,样本数一般,选择无助的大白菜核SVM;如果特征数量少,样本数量大,就变成了第一种情况,手动添加一些特征。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。