支持向量机(SVM)的定义、分类及工作流程图详解
关于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
import numpy as npfrom sklearn import datasetsfrom sklearn.pipeline import Pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.svm import LinearSVCiris = 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]]))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。