支持向量机(SVM)算法简介

支持向量机(Support Vector Machine):SVM算法既可以处理分类问题,也可以处理回归问题。SVM算法要解决的问题就是找到最好的决策边界,以对问题进行分类和求解。
我们用这张图来理解SVM算法,图片中有两类点方形和圆形,我们要找到一条分界线将两类点清楚的分开。我们的依据是分界线离最近点的距离要最大,这样的决策边界是最优的,右图的决策边界要优于左图的决策边界,因为它的分类效果更好,直观地看就是决策边界越宽越好。我们将这些最近的点称为支持向量,我们的决策边界的构造只取决于它们,与其他点无关。
support vectors.png

SVM是机器学习中非常重要的算法,也是面试中经常会被问到的算法。因为SVM算法涉及到的数学问题非常的多,整个数学推导过程还是挺复杂的。下方的链接是SVM算法的推导过程,如果想从事机器学习方面相关工作的,SVM的算法的数学原理是要掌握的。
链接:https://pan.baidu.com/s/1Ml-LbBkKy5bSZ4qJMSSGLQ
提取码:u77t
1.SVM算法的核心要点
找到距离决策边界最近的点,然后使得该点到决策边界的距离最大。
2.解决特征难以分割的数据
下图中左边的数据点在二维平面中是难以分割的,决策边界非常复杂。通过将二维数据映射到三位空间中,由于新增了一个高度方向的维度,数据点在这个方向上就变得容易区分了。原数据X通过映射函数φ转换成φ(X),使得新的数据集φ(X)容易分类。
维度变换.png
3.SVM API文档

sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto_deprecated’, coef0=0.0,
 shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, 
verbose=False, max_iter=-1, decision_function_shape=’ovr’, random_state=None)

SVM关键参数说明


C:浮点型数值,默认值为1,可指定数值。这个参数我们称之为松弛因子,C值越大,决策边界越窄,分类要求越严格。C值越小,决策边界越宽,分类要求宽松,前面我们说到决策边界越宽越好。
kernel:核变换参数,如上面的将二维数据转换为三维数据,就需要指定kernel参数。kernel可指定为‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’,默认为’rbf’。'linear’就是线性变换,‘rbf’就是对数据做高斯变换,如将二维数据转换为三维数据。
gamma,默认为’auto’,只有当kernel指定为’rbf’时,gamma数值才有效。gamma值越大,支持向量的个数越少,gamma值越小,支持向量的个数越多。支持向量的数量影响模型的训练与预测速度。


SVM 样例演示
使用sklearn中封装好的iris数据集,最终得出SVM算法的精度。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets

iris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target

from sklearn.model_selection import train_test_split
#切分数据集
X_train,X_test,y_train,y_test = train_test_split(iris_X,iris_y,test_size = 0.3,random_state = 0)
#调用SVC算法
from sklearn.svm import SVC
clf = SVC(kernel = 'linear')
clf.fit(X_train,y_train)
clf.score(X_test,y_test)
0.9777777777777777

SVM算法小结:
SVM算法的目标是求解最优的决策边界,对决策边界起决定性的作用的数据点,我们称之为支持向量,也就是距离决策边界最近的数据点。
SVM算法可以将低维不可分的数据转化为高维可分的数据。
SVM算法中最主要的三个参数:
C:惩罚力度的大小,C越小,容错能力越大,对决策边界的要求越宽松。C越大,容错能力越小,对决策边界的要求越严格。
kernel:核函数,默认为’rbf’高斯核函数,对原始数据进行变换。
gamma:只有当kernel为’rbf’,gamma值才回起作用,gamma值越大,选用的支持向量越少,gamma值越小,所选用的支持向量越多。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的监督学习算法。其理论基础可以从以下几个方面进行解释: 1. 最大间隔分类器:SVM的目标是找到一个能够将不同类别的样本点分开的超平面。这个超平面应该最大化两个不同类别样本点之间的间隔,也就是最大化两个类别支持向量(距离超平面最近的样本点)之间的距离。 2. 核函数:SVM算法可以通过使用核函数将输入空间映射到高维特征空间,进而解决非线性可分的问题。常用的核函数有线性核、多项式核和高斯核等。 3. 优化问题:SVM的目标是求解一个凸二次规划问题,通过最小化目标函数来找到最优的超平面。优化问题的目标函数包括正则化项和经验风险项,其中正则化项用于控制模型的复杂度,经验风险项用于使分类误差最小化。 4. 对偶问题:SVM的优化问题可以通过对偶问题进行求解。对偶问题可以转化为一个只与支持向量相关的表达式,从而减少了计算的复杂度。 5. 软间隔与惩罚因子:SVM可以允许一定程度的样本点分类错误,即存在一些样本点位于超平面的误分类区域内。通过引入惩罚因子,SVM可以在最大化间隔的同时,尽量减小误分类点的数量。 总的来说,SVM的理论基础包括最大间隔分类器、核函数、优化问题、对偶问题以及软间隔与惩罚因子等。这些理论基础使得SVM成为了一个强大的分类算法,在实际应用中取得了广泛的成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值