机器学习(06)-SVM算法调参(基于sklearn)

本文介绍了SVM算法在scikit-learn中的应用,包括SVC、NuSVC、LinearSVC等分类和回归模型。重点讲解了核函数的选择,如线性、多项式、高斯和Sigmoid核,并解析了参数C和正则化参数penalty的影响。此外,讨论了SVM在多分类问题上的解决策略,如一对一和一对多方法。建议在调参时,根据数据特性选择合适的核函数和参数,线性核在某些场景下已足够有效。
摘要由CSDN通过智能技术生成

1. 简介

  1. scikit-learn中SVM的算法库分为两类,一类是分类的算法库,包括SVC, NuSVC,和LinearSVC。另一类是回归算法库,包括SVR, NuSVR,和LinearSVR 。

  2. SVM和NuSVM区别仅仅在于对损失的度量方式不同,NuSVM有一个参数来控制训练集训练的错误率或支持向量的百分比。

  3. LinearSVM仅支持线性核函数,不支持各种低维到高维的核函数,对线性不可分的数据不能使用。

2. 核函数

  1. 线性核函数(Linear Kernel):表达式为:𝐾(𝑥,𝑧)=𝑥∙𝑧,普通的内积。LinearSVC 和 LinearSVR 只能使用它。

  2. 多项式核函数(Polynomial Kernel):表达式为:𝐾(𝑥,𝑧)=(𝛾𝑥∙𝑧+𝑟)𝑑 ,其中𝛾 𝑟 𝑑都需要自己调参,比较麻烦。线性不可分SVM常用的核函数之一。

  3. 高斯核函数(Gaussian Kernel):表达式为:𝐾(𝑥,𝑧)=𝑒𝑥𝑝(−𝛾||𝑥−𝑧||2), 其中𝛾大于0,需要自己调参。
    在SVM中也称为径向基核函数(Radial Basis Function,RBF)是libsvm默认核函数,也是scikit-learn默认的核函数。非线性数据使用默认的高斯核函数会有比较好的效果。

  4. Sigmoid核函数(Sigmoid Kernel)
    表达式为:𝐾(𝑥,𝑧)=𝑡𝑎𝑛ℎ(𝛾𝑥∙𝑧+𝑟), 其中𝛾𝑟都需要自己调参。线性不可分SVM常用的核函数之一。

3. 参数理解

3.1 惩罚系数

理解为调节优化方向中两个指标(间隔大小,分类准确度)偏好的权重。
soft-margin SVM针对hard-margin SVM容易出现的过度拟合问题,适当放宽了margin的大小,容忍一些分类错误(violation),把这些样本当做噪声处理,本质上是间隔大小和噪声容忍度的一种trade-off,至于具体怎么trade-off,对哪个指标要求更高,那就体现在C这个参数上了。

当C趋于无穷大时,这个问题也就是不允许出现分类误差的样本存在,那这就是一个hard-margin SVM问题(过拟合)
在这里插入图片描述

当C趋于0时,我们不再关注分类是否正确,只要求间隔越大越好,那么我们将无法得到有意义的解且算法不会收敛。(欠拟合)

3.2 正则化参数penalty

设目标函数是要最小化的,所有参数组成向量w。

如果往目标函数上加上 ∣ ∣ ω ∣ ∣ ||\omega|| ω(参数向量w的L1范数),这就是L1正则化;
如果往目标函数上加上 1 2 ∣ ∣ ω ∣ ∣ 2 \frac{1}{2}||\omega||^2 21ω2(参数向量w的L2范数的平方的一半),这就是L2正则化。

L1正则化的优点是优化后的参数向量往往比较稀疏;L2正则化的优点是其正则化项处处可导。

3.3 损失函数

在这里插入图片描述

3.4 多分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值