美文网首页
SVM(1)介绍

SVM(1)介绍

作者: 真橙汁 | 来源:发表于2017-08-16 13:24 被阅读0次

sklearn的svm使用方法

from sklearn.svm import SVC
import numpy as np

# 构造数据
X= np.array([[-1,-1],[-2,-1],[1,1],[2,1]])
y = np.array([-1,-1, 1, 1])

# 数据集线性可分,使用最简单的线性核
svc = SVC(kernel='linear')
svc.fit(X, y)

testX = [[-5, -7], [-3, -1], [-7, -89], [5, 7], [3, 1], [7, 89]]
# 输出 testY = [-1, -1, -1, 1, 1, 1]
print(svc.predict(testX))

以上就是一个简单的svm实例。

线性分类问题

对于一个线性分类问题,假设有n个样本向量,就可以找到一个超平面将正反向量分隔开。如图:

Figure_1.png
但是图中有三条线可以将其分隔开,都是分类面,实际上,可以找到中间有无数条分类面,但是图中黑色的线分隔效果要比另外两条线要好,因为黑线离两个样本的距离比另外两条线要远(比如绿线更靠近绿色样本,以此为分类面时,更容易将实际上绿色的点划归红色区域)。
因此线性分类问题实际上需要求出类似于图中黑色的线. 盗用Wikipedia的图:

其中f(x) = w·x + b, 就是需要求的分类面,图中写的是f(x) = w·x - b,其实都一样。
对于一个分类面f(x)


假设所有样本距离此分类面的最小距离为δ,并且正反的分类分别为1和-1,则对于正样本和负样本有如下不等式。


两端乘以其分类结果y


所以转换为优化δ,使其最大化。(max(δ)) 但是函数距离并不能代表一个点到一个分类面的真实距离,举例如下: 对于一个二维分类面


可以表示成以下两种等价形式:


由于δ可以任意变化,并且确定δ后,w也确定了,为了求解方便,就强制将\deltaδ归一化为1。此时简化成了优化问题:


上述优化问题与以下优化问题等价:


然而这组方程并不像表面上那么好解决。。。 需要使用SMO算法迭代出最优解。 最终可以迭代出w和b,即求出了分类面f(x)=w​⋅x+b 而SVM的训练过程即SMO算法迭代求解w和b的过程。

相关文章

  • SVM(1)介绍

    sklearn的svm使用方法 以上就是一个简单的svm实例。 线性分类问题 对于一个线性分类问题,假设有n个样本...

  • 总结一点面试问题--算法工程师(机器学习)

    BAT机器学习面试系列 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文...

  • svmtrain和svmpredict简介

    分类:SVM 本文主要介绍了SVM工具箱中svmtrain和svmpredict两个主要函数: (1)model=...

  • 七月机器学习工程师特训 第六期

    大纲 第一阶段:掌握基本模型 打开ML大门第3课 SVM知识点1: SVM发展史介绍知识点2: SVM决策边界公式...

  • 2020 机器学习之SVM(1)

    统计学习SVM 今天我们就开始最难懂的 SVM,首先在开始介绍 SVM 之前先介绍一下拉格朗日。在线性回归中,已经...

  • SVM总结

    1. 请说一下SVM的原理/简要介绍SVM SVM 是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分...

  • 黑箱方法 支持向量机①

    1. 介绍 支持向量机(Support Vector Machine,SVM)是Corinna Cortes和V...

  • Python篇—机器学习

    1.逻辑回归 逻辑回归与最大似然估计推导 2.支持向量机SVM 模型介绍及核函数sklearn中SVM参数 3.决...

  • 黑箱方法 支持向量机②

    支持向量机 1. R中svm介绍 R的函数包e1071提供了libsvm的接口。使用e1071包中svm函数可以得...

  • 通俗易懂的支持向量机SVM

    SVM 的原理和目标 几个基本概念 线性可分SVM——线性 SVM——非线性 SVM1、线性可分SVM,表示可以用...

网友评论

      本文标题:SVM(1)介绍

      本文链接:https://www.haomeiwen.com/subject/ixyplxtx.html