关于svm
可以做线性分类、非线性分类、线性回归等,相比逻辑回归、线性回归、决策树等模型(非神经网络)功效最好
传统线性分类:选出两堆数据的质心,并做中垂线(准确性低)——上图左
svm:拟合的不是一条线,而是两条平行线,且这两条平行线宽度尽量大,主要关注距离车道近的边缘数据点(支撑向量support vector),即large margin classification——上图右
使用前,需要对数据集做一个scaling,以做出更好的决策边界(decision boundary)
但需要容忍一些点跨越分割界限,提高泛化性,即softmax classification
在sklearn中,有一个超参数c,控制模型复杂度,c越大,容忍度越小,c越小,容忍度越高。c添加一个新的正则量,可以控制svm泛化能力,防止过拟合。(一般使用gradsearch)
svm特有损失函数hinge loss
(liblinear库,不支持kernel函数,但是相对简单,复杂度o(m*n))
同svm特点吻合,仅考虑落在分类面附近和越过分类面到对方领域的向量,给于一个线性惩罚(l1),或者平方项(l2)
importnumpyasnpfromsklearnimportdatasetsfromsklearn.pipelineimportpipelinefromsklearn.preprocessingimportstandardscalerfromsklearn.svmimportlinearsvciris = datasets.load_iris()x = iris[data][:,(2,3)]y = (iris[target]==2).astype(np.float64)svm_clf = pipeline(( (scaler,standardscaler()), (linear_svc,linearsvc(c=1,loss=hinge)), ))svm_clf.fit(x,y)print(svm_clf.predit([[5.5,1.7]]))
对于nonlinear数据的分类
有两种方法,构造高维特征,构造相似度特征
使用高维空间特征(即kernel的思想),将数据平方、三次方。。映射到高维空间上
fromsklearn.preprocessingimportpolynomialfeaturespolynomial_svm_clf = pipeline(( (poly_features, polynomialfeatures(degree=3)), (scaler, standardscaler()), (svm_clf, linearsvc(c=10, loss=hinge)) ))polynomial_svm_clf.fit(x, y)
这种kernel trick可以极大地简化模型,不需要显示的处理高维特征,可以计算出比较复杂的情况
但模型复杂度越强,过拟合风险越大
svc(基于libsvm库,支持kernel函数,但是相对复杂,不能用太大规模数据,复杂度o(m^2 *n)-o(m^3 *n))
可以直接使用svc(coef0:高次与低次权重)
fromsklearn.svmimportsvcpoly_kernel_svm_clf = pipeline(( (scaler, standardscaler()), (svm_clf, svc(kernel=poly, degree=3, coef0=1, c=5)) ))poly_kernel_svm_clf.fit(x, y)
添加相似度特征(similarity features)
例如,下图分别创造x1,x2两点的高斯分布,再创建新的坐标系统,计算高斯距离(gaussian rbf kernel径向基函数)
gamma(γ)控制高斯曲线形状胖瘦,数据点之间的距离发挥更强作用
rbf_kernel_svm_clf= pipeline(( (scaler, standardscaler()), (svm_clf, svc(kernel=rbf, gamma=5, c=0.001)) ))rbf_kernel_svm_clf.fit(x, y)
如下是不同gamma和c的取值影响
sgdclassifier(支持海量数据,时间复杂度o(m*n))
svm regression(svm回归)
尽量让所用instance都fit到车道上,车道宽度使用超参数控制,越大越宽
使用linearsvr
fromsklearn.svmimportlinearsvrsvm_reg = linearsvr(epsilon=1.5)svm_reg.fit(x, y)
使用svr
fromsklearn.svmimportsvrsvm_poly_reg = svr(kernel=poly, degree=2, c=100, epsilon=0.1)svm_poly_reg.fit(x, y)
数学原理
w通过控制h倾斜的角度,控制车道的宽度,越小越宽,并且使得违反分类的数据点更少
hard margin linear svm
优化目标:,并且保证
soft margin linear svm
增加一个新的松弛变量(slack variable),起正则化作用
优化目标:,并且保证
放宽条件,即使有个别实例违反条件,也惩罚不大
使用拉格朗日乘子法进行计算,α是松弛项后的结果
计算结果:取平均值
kernelizedsvm
由于
故可先在低位空间里做点积计算,再映射到高维空间中。
下列公式表示,在高维空间计算可用kernel trick方式,直接在低维上面计算
几个常见的kernal及其function
三巨电机散热风扇站上新风口,应高标准而生
全球首款165Hz 2K游戏本正式发布,售价1.45万元起
深入探究光敏电阻的工作原理及应用
在PLC中接通延迟定时器和有保持接通定时器有什么区别
Chiplet悄然兴起,面临的机遇与挑战
支持向量机(SVM)的定义、分类及工作流程图详解
解决氢基础设施问题的全新解决方案,从燃料电池入手
以太坊分片技术解析及发展路线
浅析互联网大厂造车的底层逻辑
LGD与韩国蒸镀设备供应商YAS签定设备采购订单,将全力投资OLED面板
你问我答 | 开放原子校源行公益项目常见问题答疑(第一期)
射频同轴电缆型号_射频电缆作用
竟然要带Touch Bar,苹果全新iPad Pro2这些新功能你还满意吗?
自动气象站的作用和使用说明
2020下半年迎来小间距LED显示屏的高速发展时期
苹果首个设计开发加速器落户上海,助力中国开发者走向世界
三相不平衡的危害如何判断与解决呢?
乐视电视超4x55首测 生态电视不是一台电视
当体育遇上人工智能?
5GHz频段操作的规范将促进无线接入系统行业的发展