当前位置:   article > 正文

支持向量机(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)
  • 1
  • 2
  • 3

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/604906
推荐阅读
相关标签
  

闽ICP备14008679号