scikit-learn中的SVM使用指南

本文主要包括以下内容:
1、 sklearn三个SVM分类器(sklearn.svm.LinearSVC,sklearn.svm.SVC,sklearn.svm.NuSVC)的参数详解
2、SVM算法调优的一些建议
3、实验

sklearn.svm.LinearSVC

这里写图片描述

penalty取值说明:
l1-SVM:
这里写图片描述
l2-SVM:

这里写图片描述

区别就是优化函数中的惩罚项中是松弛变量累加还是松弛变量平方累加。
关于这两者的比较,感兴趣的可以参考:
Comparison of L1 and L2 Support Vector Machines

关于dual,penalty和loss三个参数的组合:
这里写图片描述

问题:谁能解释下为什么有些(dual,penalty,loss)组合不行么?

问题2:如果合页损失函数和软间隔分类(考虑了松弛变量)是等价的,那在sklearn中,同时设置了penalty(松弛变量累加方式)和loss(合页函数),到底是求解哪个目标函数呢? (对合页损失函数不了解,可能问题问的不准,希望有人能帮忙解答)
问题3:
这里写图片描述
这什么意思? 既求解原始优化问题,又求解对偶优化问题? 这是为啥? 两个都求一遍,选个最好的么?

sklearn.svm.SVC

这里写图片描述
这里写图片描述

这里写图片描述

我们该使用哪种核函数?
回答:和数据相关。 可以尝试。尝试顺序一般:先线性核,然后再看通过使用非线性核能否提高。通常,如果数据是高维的,但只有很少的训练样本数,非线性核会导致过拟合。
除此之外,感兴趣的还可以参考这个:https://stats.stackexchange.com/questions/18030/how-to-select-kernel-for-svm?rq=1
这里写图片描述
图1 惩罚因子C对分类效果的影响。C越大,越要尽可能的考虑错误点(也就是说,尽量不要分错),导致的结果是,误分类尽可能越小,但分界距离也变小了。坏处很明显,若干错误的“离群点”会对分界面的位置方向影响很大。

图2  degree越大,分类器越灵活。太大会出现过拟合
图2 degree越大,分类器越灵活。太大会出现过拟合

这里写图片描述
图3 r越大,分类器越灵活。太大会出现过拟合。

sklearn.svm.NuSVC

这里写图片描述
这里写图片描述

下面是自己实验的一个结果:
数据是文本,类别10个,特征8千维,样本130.

LinearSVC效果最好。dual=False,C=10时达到:0.66多。

下面是SVC的效果:
这里写图片描述
这里写图片描述
可以看到核选择上,选择线性核是最好的。为什么其他两个核表现部署很好呢?
再poly和fdf两种核时的参数设置,基本可以得出以下结论:
1、degree和r设置稍微大一点,效果就非常非常差了。(尽管设置的小时也不是很好)。因为在样本数比特征数远远小于的时候,设置degree和r大更加容易导致过拟合。
2、degree和r设置不大,同时C设置的偏大时,效果还可以。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值