机器学习——SVM之交叉验证对参数(C,gamma)进行优化以及选择

目录

一、(C,gamma)简介

二、交叉验证

1、什么是交叉验证?

2、参数优化方法

3、python实现交叉验证cross_val_score(网格搜索算法GridSearchCV)

1)关键代码

2)sklearn中的cross_val_score()函数参数

3)AX3D三维绘图

4)ravel函数

5)完整代码


 

 

前面写了一篇关于参数(C,gamma)的文章,但是只是从感性上去说明了一下参数对模型和结果的影响,但没有说明如何对参数(C,gamma)进行选择。因此写下这篇。

一、(C,gamma)简介

对于SVM模型,最主要的参数就是C和gamma,C被称为惩罚因子,越大说明对错误的容忍度越小,可能发生过拟合(overfitting),C太小可能会导致容错率过高,这样的模型就没有意义了。

对于C和gamma参数的确定,一般是通过交叉验证的方法来进行确定的,大概思路就是将C和gamma参数在一定地取值范围内按照一定的步长(默认为1)进行取值组合,在不同(C,gamma)的组合下,将训练集样本均分成k组,一组作为验证的数据样本,其余k-1组则用来作为训练的数据,每一组数据都轮流着作为验证数据样本,这样在一组(C,gamma)组合下,就需要进行K次计算,把这K次计算的模型测试准确率score的均值作为这组(C,gamma)下模型的得分。这样的话就能够得到不同(C,gamma)组合下模型的得分,取得分最高的那组(C,gamma)即可,如果碰到有相同分的,一般考虑参数C,取C小的,因为在保证模型的准确率的情况下,C越小模型容错率大,可以避免过拟合,若C也相同,则取先出现的那一组gamma

 

二、交叉验证

1、什么是交叉验证?

主要使用k-fold Cross Validation(记为k-CV)

就是将训练样本集进行均分,比如将训练样本集均分为k组,称为k折,每次k-1折进行训练,另一折用于验证,每一组数据轮换作为验证数据。这里验证的是模型的识别率(accuracy)。在每一组(C,gamma)下对每一折数据进行轮换验证,这就是交叉验证,一般折数越多,越精确,但是计算的时间就会增加,需要在效率和精度之间进行权衡。

将C和gamma参数在一定地取值范围内按照一定的步长(默认为1)进行取值组合,在不同(C,gamma)的组合下,将训练集样本均分成k组,一组作为验证的数据样本,其余k-1组则用来作为训练的数据,每一组数据都轮流着作为验证数据样本,这样在一组(C,gamma)组合下,就需要进行K次计算,把这K次计算的模型测试准确率score的均值作为这组(C,gamma)下模型的得分。这样的话就能够得到不同(C,gamma)组合下模型的得分,取得分最高的那组(C,gamma)即可,如果碰到有相同分的,一般考虑参数C,取C小的,因为在保证模型的准确率的情况下,C越小模型容错率大,可以避免过拟合,若C也相同,则取先出现的那一组gamma

2、参数优化方法

可能很多人会有点懵,难道交叉验证不是一

  • 8
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值