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作为一个步长,当确定大致范围后,再细化搜索区间。

转自https://www.douban.com/note/636383152/

原文地址:https://www.cnblogs.com/yuehouse/p/9742697.html

时间: 2024-10-05 12:10:43

SVM模型进行分类预测时的参数调整技巧的相关文章

使用交叉验证对鸢尾花分类模型进行调参(超参数)

如何选择超参数: 交叉验证: 如图, 大训练集分块,使用不同的分块方法分成N对小训练集和验证集. 使用小训练集进行训练,使用验证集进行验证,得到准确率,求N个验证集上的平均正确率: 使用平均正确率最高的超参数,对整个大训练集进行训练,训练出参数. 在训练集上训练. 十折交叉验证 网格搜索 诸如你有多个可调节的超参数,那么选择超参数的方法通常是网格搜索,即固定一个参.变化其他参,像网格一样去搜索. # 人工智能数据源下载地址:https://video.mugglecode.com/data_ai

7.1-Move_base 参数调整

Move_base Tuining 前言 应项目需求,我需要调整move_base参数,使得机器人可以精确旋转到指定角度,之前只能实现较为精确的到达(x,y)坐标,现在要求,又要精确又要不震荡地达到目标要求. 需要全面了解局部避障算法,才能正确地调整参数. 全面定制ros_navigation_stack基本能够完成机器人导航要求 Move_base Tuining前言参考任务要求学习记录基本调参指南确定激光或者声纳的完整性里程计的有效性定位的有效性代价地图局部规划器局部规划器原理各模块参数代价

技巧-Linux内核参数调整办法

技巧 -Linux内核参数调整办法 ulimit设置 ulimit -n 要调整为100000甚至更大. 命令行下执行 ulimit -n 100000即可修改.如果不能修改,需要设置 /etc/security/limits.conf,加入 * soft nofile 262140 * hard nofile 262140 root soft nofile 262140 root hard nofile 262140 * soft core unlimited * hard core unli

Linux 内核参数 和 Oracle相关参数调整

Linux 内核参数 和 Oracle相关参数调整 分类: Oracle Basic Knowledge2009-10-14 12:23 9648人阅读 评论(0) 收藏 举报 oraclelinuxsemaphorearraysdatabaseoracle10g Linux 内核参数的大小和Oracle 有很大的关闭,比如ORA-27102的错误,就是因为内核参数的大小不当造成.具体参考Blog: Upon startup of Linux database get ORA-27102: ou

Galera集群server.cnf参数调整--Innodb存储引擎内存相关参数(一)

在innodb引擎中,内存的组成主要有三部分:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional memory pool). [参数1:innodb_buffer_pool_size] 主要用来缓存innodb表的索引.数据,是插入数据时的缓冲. /*Innodb存储引擎的缓存机制和Myisam最大的区别就在于他不紧可以缓存索引,还会缓存实际的数据.所以相同的物理环境,Innodb对磁盘IO的优化会优于Myisam.*/ 当系统上

[Linux]技巧-Linux内核参数调整办法【兄弟连技术分享】

ulimit设置 ulimit -n 要调整为100000甚至更大. 命令行下执行 ulimit -n 100000即可修改.如果不能修改,需要设置 /etc/security/limits.conf,加入 * soft nofile 262140 * hard nofile 262140 root soft nofile 262140 root hard nofile 262140 * soft core unlimited * hard core unlimited root soft co

Sysctl命令及linux内核参数调整

一.Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现. 命令格式: sysctl [-n] [-e] -w variable=value sysctl [-n] [-e] -p (default /etc/sysctl.conf) sysctl [-n] [-e] –a 常用参数的意义: -w  临时改变某个指定参数的值,如 # sysctl -w net.ipv4.ip_forward=1 -a  

Python之逻辑回归模型来预测

建立一个逻辑回归模型来预测一个学生是否被录取. import numpy as np import pandas as pd import matplotlib.pyplot as plt import os path='data'+os.sep+'Logireg_data.txt' pdData=pd.read_csv(path,header=None,names=['Exam1','Exam2','Admitted']) pdData.head() print(pdData.head())

执行 CMD 时,参数加引号常见问题

在调用 CMD 时,如脚本中用 WScript.Shell 调用. 如果参数中有包含空格的长路径名时,必须要加引号才能正确被识别. 是的,大家都知道要加引号,但怎么加却容易被误解.这个问题,不时地会遇上,上次弄清楚了,但隔一段时间,还是忘了,同样的问题又要重新摸索,非常痛苦. 如: Set objShell = WScript.CreateObject("WScript.Shell") cmd = "cmd.exe /C ""C:\Program File