0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

支持向量机(SVM)的定义、分类及工作流程图详解

lviY_AI_shequ 2017-11-30 10:59 次阅读

关于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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SVM
    SVM
    +关注

    关注

    0

    文章

    154

    浏览量

    32183
  • 机器学习
    +关注

    关注

    66

    文章

    8122

    浏览量

    130562

原文标题:【机器学习】支持向量机(SVM)

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    支持向量——机器学习中的杀手级武器!

    检测的特征描述子。如今,HOG特征结合SVM分类器已经被广泛应用于图像识别中,尤其是在行人检测中,获得了极大的成功。支持向量 VS 深度学
    发表于 08-24 09:40

    贴片的组成和工作流程

    。  2.贴片工作流程  贴片通过吸取一位移一定位一放置等功能,在不损伤元器件和印制电路板的情况下,按照组装工艺要求,将SMC/SMD元件快速而准确地贴装到PCB所指定的焊盘位置上。贴片机
    发表于 09-04 15:43

    机器学习分类算法之支持向量SVM

    统计学习方法C++实现之六 支持向量SVM
    发表于 04-29 10:47

    支持向量SVM

    支持向量SVM
    发表于 05-20 10:21

    怎么理解支持向量SVM

    支持向量SVM理解篇
    发表于 06-14 09:05

    软件测试工作流程图

    软件测试工作流程图 软件在开发过程中共有五个版本,分别是Base版、Alpha版、Beta版、RC版、Release版,每个版本的开发中都需
    发表于 10-22 12:58 4119次阅读
    软件测试<b class='flag-5'>工作流程图</b>

    财务管理工作流程图

    财务管理工作流程图
    发表于 03-30 20:42 8110次阅读

    基于支持向量SVM引入雷达故障预诊断

    本文将支持向量机(SVM)引入雷达故障预诊断,实现了雷达进入潜伏性故障时就提前诊断。很好地解决雷达故障诊断流程复杂、诊断时间长等问题。这是由于SVM
    发表于 12-20 16:43 0次下载

    基于可能性二均值聚类的二分类支持向量

    提出基于可能性二均值聚类(Possibilistic Two Means, P2M)的二分类支持向量机(Support Vector Machine,SVM)。该算法先用P2M对未知类
    发表于 01-09 10:45 0次下载

    人工智能之机器学习Analogizer算法-支持向量机(SVM

    支持向量机(SVM)是由Vapnik领导的AT&T Bell实验室研究小组在1995年提出的一种新的非常有潜力的分类技术。刚开始主要针对二值分类
    发表于 05-29 19:11 1839次阅读

    OpenCV机器学习SVM支持向量机的分类程序免费下载

    本文档的主要内容详细介绍的是OpenCV机器学习SVM支持向量机的分类程序免费下载。
    发表于 10-09 11:45 5次下载

    工作流程图怎么用?有哪些绘制工作流程图的软件

    工作流程图是清晰地展示工作中各个环节的流程图图示,主要用于工作活动和效率的管理。工作流程图这种图示方法具有直观描述性、简洁性、可操作性和指导
    的头像 发表于 07-28 14:22 3152次阅读

    图解支持向量SVM

    作者说:我以前一直没有真正理解支持向量机,直到我画了一张图。 1. 问题 支持向量机(SVM)旨在解决「
    的头像 发表于 12-26 11:46 1956次阅读

    支持向量SVM的图解分析与研究

    支持向量机(SVM)旨在解决「分类」问题。数据通常包含一定数量的条目/行/点。现在,我们想对每个数据点进行分类。为简单起见,我们假设两个类别
    的头像 发表于 10-10 17:41 849次阅读

    27个非常经典的设备工作流程图

    今天给大家分享27个非常经典的设备工作流程图解。
    的头像 发表于 06-02 17:16 1082次阅读
    27个非常经典的设备<b class='flag-5'>工作流程图</b>解