在线客服:
yobo官网 yobo官网
全国服务热线:010-80887545
您的位置:首页 > 新闻中心 >

sklearn中支持向量机模型的参数解释

浏览 160次 来源:【jake推荐】 作者:-=Jake=-    时间:2021-02-18 08:22:28
[摘要] svm模块之中。SVM分类算法库参数小结这是一个布尔变量,控制是否使用对偶形式来优化算法,默认是True,即采用上面第二节的分类算法对偶形式来优化算法。以svm中的支持向量分类SVC为例以svm中的支持向量分类SVC作为介绍,所有参数如下:

导入:从sklearn.svm导入SVC

1. scikit-learn SVM算法库的使用概述

scikit-learn中的SVM算法库分为两类,一类是分类的算法库,包括SVC,NuSVC和LinearSVC。另一个是回归算法库,包括SVR,NuSVR和LinearSVR。相关类包装在sklearn.svm模块中。

对于SVC,NuSVC和LinearSVC这三个类别,SVC和NuSVC相似。区别仅在于损耗的度量,从名称可以看出LinearSVC是线性分类,也就是说,它不支持每种。从低维到高维的这种核函数仅支持线性核函数,并且不能用于线性不可分割的数据。

类似地,对于SVR,NuSVR和LinearSVR的三个回归类别,SVR和NuSVR相似,不同之处仅在于损耗的度量。 LinearSVR是线性回归,只能使用线性核函数。

使用这些类时,如果我们有经验知道可以线性拟合数据,则可以使用LinearSVC进行分类或使用LinearSVR进行回归,它们不需要我们缓慢调整参数来选择各种内核函数和相应的Parameters亚博直播 ,速度也很快。如果我们没有数据分发的经验,通常会使用SVC进行分类或使用SVR进行回归,这需要我们选择内核函数并调整内核函数的参数。

哪些特殊情况需要使用NuSVC分类和NuSVR回归?如果我们对训练集训练错误率或支持向量的百分比有要求,则可以选择NuSVC分类和NuSVR。他们有一个参数可以控制该百分比。

下面将详细描述这些类的详细用法。

2.回顾SVM分类算法和回归算法

让我们简要回顾一下SVM分类算法和回归算法,因为其中一些参数与算法库的参数相对应。如果您不先进行审核,则以下参数说明可能会有点难以理解。

支持向量机 参数

3. SVM内核功能概述

在scikit-learn中,有4个内置的内核函数。当然,如果您认为线性内核函数不算作内核函数,那么只有三个。

支持向量机 参数

4. SVM分类算法库参数摘要

在这里,我们对SVM分类算法库的重要参数进行详细说明,重点介绍参数调整的注意事项。

参数

LinearSVC

SVC

NuSVC

惩罚系数C

它是第2部分中SVM分类模型的原型形式和对偶形式的惩罚系数C。默认值为1,通常需要通过交叉验证选择合适的C。一般来说,如果存在更多的噪声点,则C需要更小。

NuSVC没有此参数。它使用另一个参数nu来控制训练集训练的错误率,等效于选择C使得训练集在训练后满足一定的错误率。

nu

LinearSVC和SVC没有此参数。 LinearSVC和SVC使用惩罚系数C来控制惩罚。

nu表示训练集训练错误率的上限,或支持向量的百分比下限,取值范围为(0,1],默认值为0. 5.到惩罚系数C并可以控制惩罚的强度。

内核函数内核

LinearSVC没有此参数,LinearSVC仅限制使用线性内核函数

内核函数有四个内置选项,如第三部分所述:'linear'表示线性内核函数,'poly'表示多项式内核函数,'rbf'表示高斯内核函数,以及'Sigmoid'表示S型核函数。如果选择了这些内核功能,则相应的内核功能参数将具有单独的参数,以便稍后进行调整。默认值为高斯内核'rbf'。

另一个选择是“预先计算”,即我们预先计算与所有训练集和测试集样本相对应的Gram矩阵,以便K(x,z)直接在相应的Gram矩阵值中找到相应的位置

当然,我们也可以自定义内核功能。由于我没有使用过自定义的内核函数,因此在这里不再赘述。

正则化参数惩罚

非参数支持向量回归和分类理论及其在金融市场预测中的应用_支持向量机 参数_支持向量机参数

仅对线性拟合有意义,您可以选择“ l1”进行L1正则化,或者选择“ l2”进行L2正则化。默认值为L2正则化。如果需要生成稀疏系数,可以选择L1正则化,这与线性回归中的Lasso回归相似。

SVC和NuSVC没有此参数

是否使用对偶形式优化对偶

这是一个布尔变量,它控制是否使用对偶形式来优化算法。默认值为True亚博网页版 ,也就是说,上面第二部分中的双重形式的分类算法用于优化算法。如果我们的样本数量大于要素数量,则对偶形式将用于大量计算。建议将dual设置为False,即使用原始形式进行优化

SVC和NuSVC没有此参数

内核功能参数度

LinearSVC没有此参数,LinearSVC仅限制使用线性内核函数

内核函数参数gamma

LinearSVC没有此参数,LinearSVC仅限制使用线性内核函数

支持向量机 参数

内核函数参数coef0

LinearSVC没有此参数,LinearSVC仅限制使用线性内核函数

支持向量机 参数

样品重量class_weight

指定样本每个类别的权重五大联赛下注 ,主要是为了防止训练集中某些类别中的样本过多,从而导致训练决策过于偏重于这些类别。在这里,您可以自己指定每个样品的重量,也可以使用“平衡”。如果使用“平衡”,则算法将自行计算权重,并且与样本量较小的类别相对应的样本权重会更高。当然,如果您的样本类别分布没有明显的偏差,则可以忽略此参数并选择默认的“无”

分类决策Decision_function_shape

LinearSVC没有此参数,请改用multi_class参数。

您可以选择'ovo'或'ovo'。当前的0. 18版本默认为'ovo'。 0. 19个版本将为“ ovr”

OvR(一个月休息)的想法非常简单,无论您有多少个元类别,我们都可以将其视为二进制分类。具体方法是,对于第K类的分类决策,我们将第K类的所有样本作为正样本,除第K类的样本以外的所有样本作为负样本,然后对上述样本进行二值分类得到。第K类分类模型。通过类推得出其他类别的分类模型。

OvO(一对多)是每次都从所有T个样本中选择两种样本。您可以将它们记录为T1和T2,并将所有输出作为T1和T2样本。在一起,以T1作为正例,T2作为负例,并进行二进制分类以获得模型参数。我们总共需要T(T- 1) / 2个分类。

从以上描述可以看出,OvR比较简单,但是分类效果相对较差(这里指的是大多数样本分布,在某些样本分布下OvR可能更好)。 OvO分类相对准确,但分类速度不如OvR快。通常建议使用OvO以获得更好的分类结果。

多分类决策

您可以选择“ ovr”或“ crammer_singer”

“ ovr”类似于SVC和nuSVC中与Decision_function_shape相对应的“ ovr”。

'crammer_singer'是'ovr'的改进版本。据说这是一种改进,但并不比'ovr'好。通常,不建议在应用程序中使用它。

SVC和nuSVC没有此参数,请改用Decision_function_shape参数。

缓存大小cache_size

LinearSVC不需要太多计算,因此不需要此参数

对于大样本,高速缓存大小会影响训练速度,因此,如果机器内存较大,建议使用500MB甚至1000MB。默认值为200,即200MB。

5. SVM回归算法库参数摘要

SVM回归算法库的重要参数的很大一部分与分类算法库相似,因此在这里我们将重点介绍分类算法库中的不同部分。对于同一部分,请参考上一节中的相应参数。

参数

LinearSVR

SVR

nuSVR

惩罚系数C

它是第2部分中SVM分类模型的原型形式和对偶形式的惩罚系数C。默认值为1,通常需要通过交叉验证选择合适的C。一般而言,如果存在更多的噪声点,则C需要更小。您可能已经注意到,在分类模型中,nuSVC使用nu的等效参数来控制错误率,但是未使用C。为什么nuSVR仍然具有此参数?是不是重复了?这里的原因是在回归模型中。除了惩罚系数C,我们还有距离误差ϵ来控制损耗度量,因此只有一个nu不能等于C。也就是说,回归误差率是惩罚系数C和距离误差ϵ 。效果的结果。稍后我们会看到nu在nuSVR中的作用。

nu

LinearSVR和SVR没有此参数,请使用ϵ来控制错误率

nu表示训练集训练的错误率的上限,或支持向量的百分比的下限,取值范围为(0,1],默认值为0. 5.通过选择不同的错误率来获得不同的距离支持向量机 参数,即距离误差ϵ,也就是说,此处nu的使用等效于LinearSVR和SVR的ϵ参数。

距离误差ε

nuSVR没有此参数,请使用nu控制错误率

是否使用对偶形式优化对偶

类似于SVC,请参考上一节中的双重说明

SVR和NuSVR没有此参数

正则化参数惩罚

类似于SVC,请参阅上一节中的罚款说明

SVR和NuSVR没有此参数

内核函数内核

LinearSVR没有此参数,LinearSVR仅限制使用线性内核函数

类似于SVC和nuSVC,请参考上一节中的内核描述

内核函数参数度,γ和coef0

LinearSVR没有这些参数,LinearSVR仅限制使用线性内核函数

类似于SVC和nuSVC,请参考上一节中的内核参数说明

损失函数测量损失

您可以选择“ epsilon_insensitive”和“ squared_epsilon_insensitive”支持向量机 参数,如果您选择“ epsilon_insensitive”,则损耗指标将满足

与第2节相同的损耗度量。这是SVM回归的默认损耗度量形式。

非参数支持向量回归和分类理论及其在金融市场预测中的应用_支持向量机参数_支持向量机 参数

如果选择的是“ squared_epsilon_insensitive”,则损失指标可以满足

可以看出松弛系数少一个。 SVM原理系列中没有讨论优化过程,但是目标函数优化过程完全相似。

通常,默认的“ epsilon_insensitive”就足够了。

SVR和NuSVR没有此参数

缓存大小cache_size

LinearSVC不需要太多计算,因此不需要此参数

在大样本的情况下,缓存大小将影响训练速度,因此,如果机器具有较大的内存(例如SVC和nuSVC),建议使用500MB甚至1000MB。默认值为200,即200MB。

6. SVM算法库的其他调整点

上面已经总结了scikit-learn中类库的参数。这是其他调整点的摘要。

1)通常建议在训练之前对数据进行标准化。当然,测试集中的数据也需要进行标准化。

2)在特征数量非常多的情况下,或者当样本数量远小于特征数量时,使用线性核,效果已经非常好,并且只有惩罚系数需要选择C。

3)选择核函数时,如果线性拟合不好,通常建议使用默认的高斯核'rbf'。此时,我们主要需要艰苦地调整惩罚系数C和核函数参数γ,并通过多轮交叉验证选择合适的惩罚系数C和核函数参数γ。

4)从理论上讲,高斯核并不比线性核更差,但是该理论基于需要花费更多时间来调整参数。所以实际上,我们可以使用线性核来解决问题,我们尝试使用线性核。

7.以svm中的支持向量分类SVC为例

以svm中的支持向量分类SVC为例,所有参数如下:

sklearn.svm.SVC(

C = 1. 0,

kernel ='rbf',

degree = 3,

gamma ='auto',

coef0 = 0. 0,

shrinking = True,

probability = False,

tol = 0. 001,

cache_size = 200,

class_weight =无,

verbose = False,

max_iter = -1,

decision_function_shape ='ovr',

支持向量机 参数_非参数支持向量回归和分类理论及其在金融市场预测中的应用_支持向量机参数

random_state =无)

每个参数的具体用法介绍如下:

C:浮点型,可选(默认= 1. 0)

误差项的惩罚参数通常取10到n次方的值,例如10到5次方的值,以及10到4次方的值。 。 。 。 10到0、10、1000、1000的幂,可以在python中使用pow(10,n)n = -5〜inf

C越大,等同于惩罚松弛变量。希望松弛变量接近于0,即,错误分类的惩罚增加了,并且倾向于将其完全划分为训练集。在训练集测试期间,这将导致较高的准确率。 ,但是泛化能力很弱。

C值小,减少了误分类的惩罚,提高了容错能力,泛化能力强。

内核:字符串,可选(默认=“ rbf”)

在svc中指定的内核类型。

可以是:“线性”,“多边形”,“ rbf”,“ S型”,“预先计算”或自己指定。默认情况下,使用“ rbf”。

degree:整数,可选(默认值= 3)

将内核指定为“多项式”时,它表示所选多项式的最高阶,默认值为第三阶多项式。

如果指定的内核不是“ poly”,它将被忽略,也就是说,此参数仅对“ poly”有效。

伽玛:浮点型,可选(默认=“自动”)

当内核为“ rbf”,“ poly”或“ Sigmoid”时的内核系数。

如果未设置,则默认为“自动”。此时,内核系数设置为:1 / n_features

coef0:浮点型,可选(默认= 0. 0)

内核函数的常数项。

仅在内核为“ poly”或“ sigmoid”时有效,默认值为0。

概率:布尔值,可选(默认为False)

是否使用概率估计。

必须在fit()方法之前使用它。使用此方法会降低计算速度。默认值为False。

缩小:布尔值,可选(默认为True)

如果您可以预测哪些变量对应于支持向量,则足以训练这些样本,而其他样本可以忽略。这不会影响培训结果,但会减少问题的规模并有助于快速解决问题。此外,如果可以预测哪些变量在边界上(即a = C),则这些变量可以保持不变YABO平台 ,并且仅可以优化其他变量,因此问题的规模更小,训练时间也更长减少。这是收缩技术。

收缩技术基于以下事实:支持向量仅占训练样本的一小部分,并且大多数支持向量的拉格朗日乘数等于C。

tol:浮动,可选(默认= 1e- 3)

当误差项达到指定值时,训练将停止。默认值为1e-3,即0. 001。

cache_size:浮动,可选

指定内核缓存的大小,默认值为200M。

class_weight:{dict,“ balanced”},可选

重量设置。如果未设置,则默认情况下所有类别的权重值都相同。

作为字典传递。

详细:bool,默认:False

是否启用详细输出。

它在多线程时可能无法按预期工作。默认值为False。

max_iter:整数,可选(默认=-1)

最大迭代次数是强制性的。

默认设置为-1,这表示无限次迭代的次数。

求解器中的迭代的硬限制,或无限制的-1。

decision_function_shape:“ ovo”,“ ovr”,默认=“ ovr”

##这种用法不是很了解。##

是否返回形状为(n_samples,n_classes)的一比对(ovr)决策函数作为所有其他分类器,还是返回libsvm的原始一比对一('ovo')决策函数?形状(n_samples,n_classes *(n_classes- 1) / 2)。

在0. 19版中进行了更改:默认情况下,decision_function_shape为“ ovr”。

0. 17版的新功能:建议Decision_function_shape =“ ovr”。

在0. 17版中进行了更改:不建议使用Decision_function_shape ='ovo',并且不使用。

random_state:int,RandomState实例或无,可选(默认为无)

伪随机数使用情况数据。

一些属性的介绍:

support_:类似数组,形状= [n_SV]

支持向量的指标。

support_vectors_:类似数组,形状= [n_SV,n_features]

支持向量。

n_support_:数组状,dtype = int32,形状= [n_class]

每个类的支持向量数量。

dual_coef_:数组,形状= [n_class-1,n_SV]

决策函数中支持向量的系数。对于多类,所有1-vs-1分类器的系数。在多类情况下,系数的布局有些微不足道。有关详细信息,请参见《用户指南》的“ SVM”部分中有关多类分类的部分。

coef_:数组,形状= [n_class-1,n_features]

分配给要素的权重(原始问题的系数)。仅在线性核的情况下可用。

coef_是从dual_coef_和support_vectors_派生的只读属性。

intercept_:数组,形状= [n_class *(n_class- 1) / 2]

决策函数中的常量。

参考:

([1)

([2)

老王
本文标签:支持向量机,回归模型,svm算法

推荐阅读

最新评论