SVM
SVM是一个二分类的方法,通过最大化超平面距离正负样本之间的距离实现最大化间隔来进行分类。由于是存在约束条件,不好求解,所以借助拉格朗日法转化为无约束问题,求解其对偶问题,再使用SMO算法求解析解。
- 从分类平面,到求两类间的最大间隔,到转化为求间隔分之一等优化问题:loss=min(1/2·||W||·||W||) subject to:y(wx+b)>=1,其中||·||为2范数
- 然后就是优化问题的解决办法,首先是用拉格拉日乘子把约束优化转化为无约束优化,对各个变量求导令其为零,得到的式子带入拉格朗日式子从而转化为对偶问题
- 最后再利用SMO(序列最小优化)来解决这个对偶问题
距离最靠近超平面的正负样本距离最大的超平面。
在求解的过程中,会发现只根据部分数据就可以确定分类器,这些数据称为支持向量。换句话说,就是超平面附近决定超平面位置的那些参与计算锁定平面位置的点
可以,对于一个N分类问题,可以训练N个分类器,1 vs rest
也可以或者 one vs one 比如3个类别 a,b,c a vs b,a vs c b vs c n(n-1)/2个
clf = svm.SVC(gamma='scale', decision_function_shape='ovo')
另一种是lin_clf = svm.LinearSVC()
multi_class='ovr'
(参考:https://zhuanlan.zhihu.com/p/76609851?from_voters_page=true)