zoukankan      html  css  js  c++  java
  • SVM进行分类预测时的参数调整

    一:如何判断调参范围是否合理

    正常来说,当我们参数在合理范围时,模型在训练集和测试集的准确率都比较高;当模型在训练集上准确率比较高,而测试集上的准确率比较低时,模型处于过拟合状态;当模型训练集和测试集上准确率都比较低,模型处于欠拟合状态。正常来说测试集上的准确率都会比训练集要低。

    二:如何确定参数的调节方向

    当使用线性支持向量机时,我们只需调节正则化参数C的范围即可。

    这里我们以RBF作为核的SVM为例,这时候我们需要调节的参数是正则化参数C核函数参数gamma。为了保证调参的精确度,一般我们都使用网格搜索法来确定参数。

    网格搜索法就是给出各个参数的调节范围调节步长,计算出每个参数的可能取值,然后遍历所有的组合情况,返回最佳的参数值。
    C和gamma的有效范围是:10-8~108

    C表示模型对误差的惩罚系数,gamma反映了数据映射到高维特征空间后的分布;C越大,模型越容易过拟合;C越小,模型越容易欠拟合。gamma越大,支持向量越多,gamma值越小,支持向量越少。gamma越小,模型的泛化性变好,但过小,模型实际上会退化为线性模型;gamma越大,理论上SVM可以拟合任何非线性数据。
    为维持模型在过拟合和欠拟合之间的平衡,往往最佳的参数范围是C比较大,gamma比较小;或者C比较小,gamma比较大。也就是说当模型欠拟合时,我们需要增大C或者增大gamma,不能同时增加,调节后如果模型过拟合,我们又很难判断是C过大了,还是gamma过大了;同理,模型欠拟合的时候,我们需要减小C或者减小gamma。

    三:设置合理的调参起始点
    因为SVM本身是一个非线性模型,调参的时候根据项目的不同,每一次都是从头开始的。如果想把上一个项目调好的参数套用到下一个项目上,往往没什么效果。正常情况下,我们都会先设置C和gamma的值在0.1~10之间,然后在根据模型的表现,每次乘以0.1或者10作为一个步长,当确定大致范围后,再细化搜索区间。

  • 相关阅读:
    win10- *.msi 软件的安装,比如 SVN安装报2503,2502
    Java-byte[]与16进制字符串互转
    log4j 日志脱敏处理 + java properties文件加载
    CentOS7编译安装SVN(subversion1.9.7)
    Samba安装与配置
    php 实现redis发布订阅消息及时通讯
    PHP中使用ActiveMQ实现消息队列
    sphinx 配置文件全解析
    nginx和apache 配置
    php实现汉诺塔问题
  • 原文地址:https://www.cnblogs.com/louieowrth/p/12525510.html
Copyright © 2011-2022 走看看