微信公众号:python宝
关注可了解更多的python相关知识。若有问题或建议,请公众号留言;
内容目录
一、支持向量机 SVM 简介二、LinearSVC, LinearSVR,SVC,SVR参数解释与比较1、LinearSVC介绍2、SVC 介绍3、LinearSVR 介绍4、SVR 介绍三、LinearSVC, LinearSVR,SVC,SVR 比较
一、支持向量机 SVM 简介
支持向量机(SVM:Support Vector Machine)是机器学习中常见的一种分类算法,是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。支持向量机要做的就是要在这些可以选择的直线中选择一条最好的直线来作为分类的直线。
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。
给定一些数据点,它们分别属于两个不同的类。我们现在要找到一个线性分类器把这些数据分成AB两类。最简单的办法当然是,画一条线,然后将它们分成两类。线的一侧,属于A类,另一侧,则属于B类。SVM算法可以让我们找到这样一个最佳的线(超平面),来划分数据。相比于KNN之类的算法,SVM算法只需要计算一次,得出最佳线(超平面)即可。面对测试数据,只需要判断数据点落在线的哪一侧,就可以知道该数据点所属分类了。比起KNN每次都需要计算一遍邻居点的分类,SVM算法显得简单无比。
SVM的基本概念:
分隔超平面:将数据集分割开来的直线叫做分隔超平面;
超平面:如果数据集是N维的,那么就需要N-1维的某对象来对数据进行分割。该对象叫做超平面,也就是分类的决策边界;
间隔:一个点到分割面的距离,称为点相对于分割面的距离。数据集中所有的点到分割面的最小间隔的2倍,称为分类器或数据集的间隔;
最大间隔:SVM分类器是要找最大的数据集间隔,其实就是距离直线距离最短的点离直线的距离要最大;
支持向量:坐落在数据边际的两边超平面上的点被称为支持向量,也就是对于点的犯错的容忍度越大越好,其实就是函数间隔越大越好,我们的拟合直线也将会由着些点确定。
二、LinearSVC, LinearSVR,SVC,SVR参数解释与比较
1、LinearSVC介绍
from sklearn.svm import LinearSVC, LinearSVR,SVC,SVR
LSVC = LinearSVC(
penalty='l2',
loss='squared_hinge',
dual=True,
tol=0.0001,
C=1.0,
multi_class='ovr',
fit_intercept=True,
intercept_scaling=1,
class_weight=None,
verbose=0,
random_state=None,
max_iter=1000)
# 原文链接:https://blog.youkuaiyun.com/u010986753/