一: 如何判断调参范围是否合理
正常来说, 当我们参数在合理范围时, 模型在训练集和测试集的准确率都比较高; 当模型在训练集上准确率比较高, 而测试集上的准确率比较低时, 模型处于过拟合状态; 当模型训练集和测试集上准确率都比较低, 模型处于欠拟合状态. 正常来说测试集上的准确率都会比训练集要低.
二: 如何确定参数的调节方向
当使用线性支持向量机时, 我们只需调节正则化参数 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 作为一个步长, 当确定大致范围后, 再细化搜索区间.
来源: http://www.bubuko.com/infodetail-2794246.html