机器学习 ——支持向量机SVM

一、SVM:最大间隔分类器
1、简介
简单说,支持向量机(Support Vector Machine)就是寻找分割线(超平面),介于两个类别之间。
感知机算法(PLA)可以找到一条线,把右图中的x和o分开。
感知机原理

但是在使用时,往往会存在下面这样尴尬的情况:
这里写图片描述
这三条线都能成功的分开训练集中的点。但人类的直观感觉,第三种作为分类边界似乎更加‘稳妥一些’。我们希望寻找一条线,在能正确分类的同时,与数据点的分隔距离(margin)尽量的大。

这里写图片描述

2、 SVM的优缺点
优点:返回的分割直线满足margin最大的条件,所以是一个robust的解
缺点:对数据点的依赖 是稀疏的,只有少量支持向量对最终结果有贡献。传统的SVM只能处理线性可分的问题,并且对数据中的噪音也很敏感,因此我们必要对算法进行改造。
(1)SVM变形一:软间隔SVM
允许SVM犯一点错, Soft-Margin SVM 算法。允许有一些异常点存在,他们或者分类错了,或者只是出现在了绿色的带状禁区里面。参数C就控制着二者的权衡。
这里写图片描述
(2)SVM变形二: kernel method
这样的问题正则项没用,这时我们需要一种新的思想: 升维。通常使用的kernel 有:
linear kernel(其实就是不用kernel不升维)
Polynomial Kernel
Gaussian Kernel(sklearn里叫rbf kernel):在选用rbf kernel时,数据已经被映射到了无穷维的空间中去,从而保证数据一定是线性可分的.

注意:Kernel提供了一种在不写出具体映射表达式的情况下,计算数据内积的方法。 原则上说,但凡是需要计算内积的算法,都可以使用kernel trick,而不仅仅局限于svm

二、SVM编码
使用模块:
导入from sklearn import svm
创建clf = svm.SVC()
拟合 clf.fit(features_train,labels_train)

三、非线性SVM
SVM中会进行特征转换,这会改变你对“线性可分”数据的看法
1、kernel trick核技巧
要点:获取低维空间或特征空间,映射到高维空间,将线性不可分转化为线性可分,再用SVM分离数据点,获得解返回原始空间。当选用kernel时,升维已经自动做好了,所以在调用sklearn中带kernel的svm时才会各种奇形怪状的分类边界。
这里写图片描述

2、SVM参数
(1)gamma
(2)C:一个更大的 C 会得到更多正确的训练点,越大曲线越曲折,容易overfitting

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值