sklearn中的支持向量机SVM(上)

1.概述

(1)SVM是最接近深度学习的机器学习算法。线性SVM可以看成是神经网络的单个神经元,非线性的SVM可以看成两层的神经网络,非线性SVM中如果添加多个核函数,则可以模仿多层的神经网络。

(2)边际很小时,模型容易在训练集上表现很好,却在测试集上表现糟糕,即容易“过拟合”;拥有更大边际的决策边界在分类中的泛化误差较小。因此,我们在寻找决策边界的时候,希望边际越大越好。
支持向量机,就是通过找出边际最大的决策边界,来对数据进行分类的分类器,因此,支持向量机又叫做最大边际分类器。

(3)支持向量
过两类数据中距离我们的决策边界最近的点,做两条平行于决策边界的虚线,这些点就被称为“支持向量”。

2.sklearn.svm.SVC

线性SVM
非线性SVM与核函数

为了找到非线性数据的线性决策边界,需要将数据从原始空间x映射到新空间Φ(x)。Φ是一个映射函数,它代表了某种非线性的变换。

(1)重要参数Kernel
我们不清楚什么样的数据应该使用什么类型的映射函数来确保可以在变换空间找出线性决策边界。
①linear线性核,无参数可调——处理线性数据
②poly多项式核,参数:gamma,degree,coef0——虽然可以处理非线性数据,但更偏向于处理线性问题(这是设置degree=1)
③sigmoid双曲正切核,参数:gamma,coef0——功能比较弱,很少被用到
④rbf高斯径向基,参数:gamma——基本在任何数据集上都表现不错,属于万能的核函数。

经验:首先用rbf核函数,如果效果不好,再试试其他的核函数

(2)探索核函数的优势和缺陷
SVM不能说完全是的距离类模型,但它严重受到数据量纲的影响。线性核,尤其是多项式核函数在高此项时计算非常缓慢;rbf和多项式核函数都不擅长处理量纲不统一的数据集。
因此,在SVM执行之前,非常推荐先进行数据的无量纲化!

(3)选取与核函数相关的参数:degree&gamma&coef0
无论从数学还是实践的角度来说,彻底理解这三个参数以及他们如何影响预测函数的变化都太过复杂低效,所以我们往往避免去真正探究这些参数如何影响了我们的核函数,而是直接使用学习曲线或者网格搜索来帮助我们查找最佳的参数组合。
①rbf——画gamma的学习曲线
②poly——网格搜索

硬间隔和软间隔:重要参数C

(1)三种数据集:完全线性可分,非线性数据,不完全线性可分

(2)当两组数据是完全线性可分,可以找到一个决策边界使得训练集上的分类误差为0,这两种数据被称为是存在“硬间隔”的;当两组数据几乎是完全线性可分的,但决策边界在训练集上存在较小的训练误差,这两种数据就被称为是存在“软间隔”的。
对于软间隔的数据来说,边际越大被分错的样本就会越多,因此需要找到一个“最大边际”和“被分错的样本数量”之间的平衡。

(3)参数C用来权衡“训练样本的正确分类”与“决策函数的边际最大化”两个不可同时完成的目标,希望找出一个平衡点来让模型的效果最佳。
如果C值设定比较大,SVC可能会选择边际小的,能够更好地分类所有训练点的决策边界,不过模型的训练时间也会更长;如果C的设定值较小,SVC会尽量最大化边界,决策功能会更简单,代价是训练的准确度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值