机器学习实战_Python3.7_支持向量机SVM

SVM 算法原理

SVM 基本思想是依据“间隔最大化”,构建超平面将特征空间一分为二,用于分类。

SVM 可分为三类:

  • 线性可分 SVM
  • 线性 SVM
  • 非线性 SVM

线性可分 SVM 用于处理线性可分的数据,其分类结果是“完美”的、唯一的。求解目标是使得“硬间隔最大化”的超平面,可抽象表达为:

解得 ω 、b 即可表示超平面 ω·x + b = 0。

这是一个凸优化问题,直接求解比较困难。解决方法是根据拉格朗日对偶性,引入拉格朗日乘子 α ,找到这个原始问题的对偶问题,对对偶问题求解等同于对原始问题求解:

解得 α 可转换为原问题的 ω 、b:

 

其中 yj 对于 α* 中的一个正分量 αj*。

说明:ω* 、b* 的求解只和 α* 中大于 0 的分量有关,即只和处在间隔边界上的样本有关,称为支持向量。


线性 SVM 用于处理线性不可分但近似可分的数据,在线性可分 SVM 的基础之上引入松弛变量 ξ惩罚参数 C ,根据惩罚参数 C 设定的不同,其分类结果是不同的。求解目标是使得“软间隔最大化”的超平面,可抽象表达为:

同样的,引入拉格朗日乘子,获得其对偶问题:

解得 α 转换为原问题的 ω 、b 的公式和线性可分 SVM 中相同。

说明:软间隔的支持向量 xi 情况要相对复杂,可以在间隔边界上,可以在间隔边界到超平面之间,也可以在超平面误分一侧。

图示实线为超平面,有 ω·x + b = 0;下方虚线为负样本的间隔边界,可以用 ω·x + b = -1 表示;上方虚线为正样本的间隔边界,可以用 ω·x + b = 1 表示。

支持向量 xi 的位置可以根据 αi 和 ξi 的值进行判断:

  • αi < C:xi 位于间隔边界上( ξi = 0,分类正确)
  • αi = C 且 0 < ξi < C:xi 位于间隔边界到超平面之间(分类正确)
  • αi = C 且 ξi = C:xi 位于超平面上(正样本则分类正确,负样本则分类错误)
  • αi = C 且 ξi > C:xi 位于超平面误分一侧(分类错误)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值