实战06 顶天立地,三分天下——支持向量机SVM

SVM有三宝:间隔,对偶,核技巧。
软间隔松弛变量( ζ {\zeta } ζ) or 惩罚因子( C)

核函数与松弛变量: 一般的过程应该是这样,还以文本分类为例。在原始的低维空间中,样本相当的不可分,无论你怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点,就简单有效得多啦。

——————————————————————————————
一 分隔超平面

  • 将数据集分隔开来的对象叫做分隔超平面,写成 W T X + b W^{T}X+b WTX+b 。特别地,二维平面的分隔超平面是直线。
  • 寻找离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔(margin)。
  • 支持向量(support vector)就是离分隔超平面最近的那些点。

二 最大间隔

分类器输出的是类别标签,这里输出的是{+1, -1}
目标:寻找分类器定义中的 w 和 b
第一步就是寻找支持向量,而满足 α \alpha α>0时,则为支持向量。

  • 最大化间隔的公式如下:
    在这里插入图片描述

  • 优化目标(对偶问题):
    在这里插入图片描述
    尖括号表示内积。

  • 其约束条件为:
    在这里插入图片描述

在这里插入图片描述

三 SMO算法

目标:求出一些列的 α \alpha α和b(进而可得到w),有了w和b就可以得到超平面。
原理:(由约束条件)每次循环中选择两个 α \alpha α进行优化,并固定其他。因为累加和为0,因此,优化过程中一个增大,一个必须减小。<内循环、外循环>

smo算法公式推导

清单6-2 如何判断正间隔还是负间隔?(存疑)

numpy数组过滤 如:alphas[alphas>0]

优化加速:选择最大步长

循环计算cache列表中的预测误差,并返回使误差变化量最大的下标maxK 和最大误差值Ej。

计算w

smoP(…)返回b和 alphas后,根据对偶问题中的公式:
w = ∑ i = 1 m α i y i x i w = \sum_{i=1}^m \alpha_i y_i x_i w=i=1mαiyixi

四 核技巧

核函数(kernel)的工具将数据转换成易于分类器理解的形式。将低维特征空间映射到高维空间。 其中,径向基函数(radial basis function)是最流行的二分类的核函数。

将内积替换成核函数的方式,称为核技巧。

  • 径向基函数高斯版本中, σ \sigma σ是用户定义的到达率(reach)或者说是函数值跌落到0的速度参数。
  • 线性核函数中,内积计算实在“所有数据集X” 和“数据集中的一行X[i, :]”这两个输入中展开。

numpy矩阵中,除法指对矩阵元素展开计算,而不是matlab中的求逆。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值