一、SVM简介
(一)Support Vector Machine
-
- 支持向量机(SVM:Support Vector Machine)是机器学习中常见的一种分类算法。
- 线性分类器,也可以叫做感知机,其中机表示的是一种算法。
- 在实际应用中,我们往往遇到这样的问题:
给定一些数据点,它们分别属于两个不同的类。我们现在要找到一个线性分类器把这些数据分成AB两类。最简单的办法当然是,画一条线,然后将它们分成两类。线的一侧,属于A类,另一侧,则属于B类。SVM算法可以让我们找到这样一个最佳的线(超平面),来划分数据。相比于KNN之类的算法,SVM算法只需要计算一次,得出最佳线(超平面)即可。面对测试数据,只需要判断数据点落在线的哪一侧,就可以知道该数据点所属分类了。比起KNN每次都需要计算一遍邻居点的分类,SVM算法显得简单无比。
(二)Sklearn参数详解—SVM
1 sklearn.svm.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)
-
-
penalty:
正则化参数,L1和L2两种参数可选,仅LinearSVC有。loss:
损失函数,有‘hinge’和‘squared_hinge’两种可选,前者又称L1损失,后者称为L2损失,默认是是’squared_hinge’,其中hinge是SVM的标准损失,squared_hinge是hinge的平方。dual:
是否转化为对偶问题求解,默认是True。tol:
残差收敛条件,默认是0.0001,与LR中的一致。C:
惩罚系数,用来控制损失函数的惩罚系数,类似于LR中的正则化系数。multi_class:
负责多分类问题中分类策略制定,有‘ovr’和‘crammer_singer’ 两种参数值可选,默认值是’ovr’,'ovr'的分类原则是将待分类中的某一类当作正类,其他全部归为负类,通过这样求取得到每个类别作为正类时的正确率,取正确率最高的那个类别为正类;‘crammer_singer’ 是直接针对目标函数设置多个参数值,最后进行优化,得到不同类别的参数值大小。fit_intercept:
是否计算截距,与LR模型中的意思一致。class_weight:
与其他模型中参数含义一样,也是用来处理不平衡样本数据的,可以直接以字典的形式指定不同类别的权重,也可以使用balanced参数值。verbose:
是否冗余,默认是False.random_state:
随机种子的大小。max_iter:
最大迭代次数,默认是1000。
-
对象
-
-
coef_
:各特征的系数(重要性)。intercept_
:截距的大小(常数值)。
-
1 sklearn.svm.NuSVC(nu=0.5, kernel='rbf', degree=3, gamma='auto', 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))
nu
:训练误差部分的上限和支持向量部分的下限,取值在(0,1)之间,默认是0.5kernel
:核函数,核函数是用来将非线性问题转化为线性问题的一种方法,默认是“rbf”核函数,常用的核函数有以下几种:
表示 |
解释 |
---|---|