【Sklearn】【API详解】【SVM】- sklearn.svm.SVR参数详解(二)

1. 前言

  • 转载请注明出处
  • 文章中有一部分内容是个人理解,所以内容仅供参考
  • 这里是官方说明文档传送门:sklearn.svm.SVR
  • 本文可当做开发时的开发手册作为参考,建议收藏

2. 简介

  • SVR为Support Vector Regression的简写,顾名思义,其是基于支持向量的回归器
  • 模型中的两个自由参数为Cepsilon,自由参数不能通过理论推测,可以通过实验、科研猜测和随机指定来设置,即自由参数的调节是个玄学,没有理论指导
  • SVR是基于libsvm实现的
  • SVR的拟合时间是和样本数量呈二次方指数关系,因此这一分类模型适用于样本较小的情况,如果样本量过大(>1W),建议使用其他回归模型,例如LinearSVR或者SGDRegressor

3. 语法

3.1 API形式

  • 形式如下,里面的参数均为默认参数
SVR(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True,
 cache_size=200, verbose=False, max_iter=- 1)

3.2 参数说明

参数名称数据作用
kernel核函数1. string类型
2. {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}
3. 默认值为’rbf’
1. 用来选择映射到高维线性可分的核函数
2. linear: 线性核函数; 优点: 简单、运算效率高;缺点: 对线性不可分的数据集没有很好的效果
3. ploy: 多项式核函数; 优点: 可以拟合出复杂的分割超平面;缺点: 有三个参数,调参困难,且当n过大时,模型拟合时间会很长 ;
4. rbf: 径向基函数 通常定义为样本到数据中心之间径向距离(通常是欧氏距离)的单调函数(由于距离是径向同性的); 相较于多项式核,具有参数少的优点
5. sigmoid:Logistic函数 也称为S型生长曲线,优点:平滑
6. precomputed:预训练好的核函数对应的Gram 矩阵 优点: 不用再次拟合核函数对应的Gram 矩阵,直接进行映射就可以了
degree多项式核函数的维度1. int类型,默认值为31. 只有在使用多项式核函数的时候才有用,使用其他核函数自动忽略此参数
2. 用来确定多项式核函数的维度,即n的值
gamma‘rbf’, ‘poly’ 和‘sigmoid’ 核函数的系数1. string类型,默认值为‘scale’
2. {‘auto’, ‘scale’}
1. auto: gamma = 1 / n_features
2. scale: gamma = 1 / (n_features * X.var())
3. 只作用于 rbf, poly,sigmoid 三个核函数
coef0常数项1. float类型,默认值为01. 只作用于poly 和 sigmoid 核函数
2. 作用相当于是对核函数映射的结果进行一个移位操作
tol停止拟合容忍度1. float类型,默认值为1e-3 即为0.0011. 定义模型停止拟合的误差值
C正则化系数1. float类型,默认值为1.01. 正则化的强度与C的大小成反比,且必须为正。
2. 主要是用来防止模型过拟合
3. C值越大,对模型的惩罚越高,泛化能力越弱(过拟合)
4. 反之,C值越小,对模型的惩罚越低,泛化能力越强(欠拟合)
epsilon希腊字母 ϵ \epsilon ϵ1. float类型,默认值:0.11. 用来定义模型对于错误分类的容忍度,即错误分类而不受到惩罚
2. ϵ \epsilon ϵ的值越大,模型允许错误分类的容忍度越高,反之,容忍度越小
3. 支持向量的个数对 ϵ \epsilon ϵ 的大小敏感, ϵ \epsilon ϵ 的值越大,支持向量的个数越少,反之,支持向量的个数越多
4. 也可以理解为 ϵ \epsilon ϵ 的值越小,模型越过拟合,反之,越大越欠拟合
shrinking启用启发式收缩1. bool类型,默认为True1. 是否采用启发式收缩,当迭代次数过大时, 启用启发式收缩可以缩短训练时间,然而如果我们对停止迭代容忍度较高时(tol参数来反映),不用启发式收缩可能会更快一些
cache_size核缓存大小1. float类型,默认值为200(MB)1. 指定模型在训练时,能占用的最大RAM空间(PS. 经过实验,当大小设置超过2000MB时,训练时长反而会增加,这应该是一个BUG),在2000MB以内,不超过其所需最大内存,则不会降低训练速度,也不会增加。
2. 所以训练多采用的数据集维度越高,条数越高,当所需内存超出了,我们可以通过调整cache_size 的大小来加快模型拟合
verbose启用详细输出1. bool类型,默认值:False1. 该参数表示日志是否启用详细输出,会输出iter次数,nSV等参数的值
2. 如果启用,可能会导致无法进行多线程工作,降低拟合速率
max_iter最大迭代次数1. int类型,默认值: -11. 硬性设置最大迭代次数,不管模型是否拟合完成,即不关心误差值(tol参数)
2. 设置-1的话,意味着不限制迭代次数,即按照误差值来停止模型拟合

3.3 属性说明

属性名称数据作用
class_weight各类权重1. ndarray,一维数组,(n_classes, )1. 用来获取模型对各个类别设置的权重,与参数中的class_weight相关
coef_特征权重向量1. ndarray,二维数组,(n_classes * (n_classes - 1) / 2, n_features)1. 获取特征权重向量
2. 当核函数为linear时,才可以调用这一属性
dual_coef_对偶系数1. ndarray,二维数组,(n_classes -1, n_SV)1. decision_funciton 中的支持向量的对偶系数
2. n_SV 为支持向量的个数
3. 所有 ovo 分类器的系数
fit_status_拟合状态1. int类型1. 拟合成功0, 否则为1,进行告警
intercept_决策函数常量1. ndarray,一维数组, (n_classes * (n_classes - 1) / 2, )1. decision_funciton 中的常量
n_features_in_特征数量1. int类型1. 拟合过程中使用到的特征数量
feature_names_in_特征名称1. ndarray,一维数组,(n_features_in_,)1. 获取拟合时特征的名称
n_support_每类的支持向量数1. ndarray,一维数组 ,(n_classes,), dtype=int321. 获取每种类别的支持向量数
shape_fit_数组维数1.元组,(n_dimensions_of_X,)1.训练向量X的数组维数
support_支持向量索引1. ndarray,一维数组, (n_SV,)1. 获取模型拟合后获得的所有支持向量的索引
support_vectors_支持向量1. ndarray,二维数组,(n_SV, n_features)1. 获取所有的支持向量

4. 方法说明

4.1 fit(X, y, sample_weight=None)

1. 描述: 用训练数据拟合模型
2. 参数: X: 训练数据; y: 训练数据标签; sample_weight: 每个样本的权重,(n_samples,)
3. 返回值: 自身,拟合好的模型
4. 注意:

4.2 get_params(deep=True)

1. 描述: 获取模型的所有参数
2. 参数: 如果为真,则将返回此模型和作为模型的所包含子对象的参数
3. 返回值: 字典类型, 所有的参数
4. 注意:

4.3 predict(X)

1. 描述: 用拟合好的模型对所有样本X进行预测
2. 参数: 所有预测样本,二维数组(n_samples, n_features)
3. 返回值: 所有预测 X的预测标签,一维数组,(n_sample, )
4. 注意:

4.4 score(X, y, sample_weight=None)

1. 描述: 返回给定测试数据上的平均准确度
2. 参数: X: 训练数据; y: 训练数据标签; sample_weight: 每个样本的权重,(n_samples,)
3. 返回值: R 2 R^2 R2
4. 注意: R 2 R^2 R2 被定义为 1 − u / v 1-u/v 1u/v, u u u ∑ i = 1 n ( y − y ^ ) 2 \sum_{i=1}^n(y - \hat{y})^2 i=1n(yy^)2 的残差和, v v v ∑ i = 1 n ( y − y . m e a n ( ) ) 2 \sum_{i=1}^n{(y-y.mean())^2} i=1n(yy.mean())2的平方和, R 2 R^2 R2 的值越大证明模型性能越好,最大为1,其值也可以为负,意味着模型性能更差,且无最小值

4.5 set_params(**params)

1. 描述: 重置当前模型的参数
2. 参数: 字典类型,内容为当前模型的参数
3. 返回值: 重置参数后的模型
4. 注意:

5. 总结

在写这篇文章的过程中发现了前一篇文章的一些错误,已经回头修改了。在查阅文献的过程中,明白了SVM为什么能做回归任务了,因为其本质上仍是把回归任务当做分类任务来处理,只不过在模型评价的过程中,用了不一样的评价指标,这里是 R 2 R^2 R2

有时间再继续更新~

希望这篇文档能对各位看官产生一定的帮助, 如有不妥,欢迎评论区指正~

6. 参考资料

  1. sklearn.svm.SVR
  2. 百度百科:自由参数
  3. Wikipedia:Free parameter
  4. LIBSVM: A Library for Support Vector Machines
  5. How to show \epsilon in R Markdown
  6. Meaning of Epsilon in SVM regression
  7. cache_size effect on SVC processing time
  8. Verbose log abbriviations meaning in SVC, scikit-learn
  9. Unlocking the True Power of Support Vector Regression
  10. 回归模型的性能评价指标
  • 31
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值