Lagrange乘子法中,介绍了如何构建及如何使用对偶函数,对目标问题进行求解。

这一章利用L乘子法对SVM进行推导。

SVM 即支持向量机,是通过求解超平面进行分类的一种算法。所谓的支持向量,是在最大间隔边界上的向量。

问题来源: 

如何求解上图中红色线的参数:W b

红色线可表示为: 

点到直线的距离:

在此以直线为分界线是为了可视化,实际当中是超平面。

此时样本可表示为:

得支持向量到超平面距离之和:(支持向量为两黑色线上的样本)

对样本值做标记:

问题:为何不等式选择的右侧值为1或-1》》》不等式可以通过缩放w b的方式改变最终值》》》

此处选择1或-1是为了计算方便,并不影响最终的结果。

通过(1)式构建Lagrange乘子:

  实质是求:

  化成求:

  加入平方项和系数,是为了求导数方便。

  Lagrange乘子法:

  

  对固定的w b 均有:

  加入min,问题化成:

  

  上述的对偶函数:

  对(4)式右侧进行求解,结合(2)分别对w b求偏导:

  将(5)(6)(7)代入(2)式:

  此时问题化成:

  此时的任务是求解(7)式右侧。

  (7)式可以使用SMO算法进行求解:

  在α的m(总共有m个样本点)个值中选取两个:

  固定除这两个的其他α值。

  

  将此条件代入到(7)式,求关于这两个α的极值。

  得到α值后,与之前的条件进行对比,得到支持向量以及α所有值。代入条件得到w b。

  SMO具体细节,下次再总结。

带松弛因子的SVM:

  原理同上述讲解,上述是线性支持可分支持向量机。只是此时加入了其他的约束条件。

  此时可以允许一定的错误分类。

核函数:

  使用核函数可以将原始输入空间映射到新的特征空间没从而使得原来不可分的样本变得可分。

  核函数的选择是SVM变得复杂的又一个因素。

  常用的核函数:

    线性核、高斯核、拉普拉斯核。高斯核用的相对较多。

  原来的不等式约束变成:

  原来的max:

   变成:

    

  核函数k:

  核函数代替了原来简单的变量。

hinge loss:

  对于带松弛因子的SVM,使用对偶函数求极值的方法不易直接求解。使用hinge替代损失函数:

  此时

  变成:

    

  对于多分类时,使用hinge loss更为方便。

ML 徒手系列 SVM的更多相关文章

  1. ML 徒手系列说明

    徒手系列正确打开方式: 1.徒手撸公式 2.徒手撸代码

  2. ML 徒手系列 拉格朗日乘子法

    拉格朗日乘子法是解决极值问题的方法. 本方法是计算多元函数在约束条件下的极值问题的方法. 1.多元函数与约束问题 如下图所示,f(x,y)为多元函数,g(x,y)=c为约束条件.目的是计算在约束条件下 ...

  3. ML 徒手系列 最大似然估计

    1.最大似然估计数学定义: 假设总体分布为f(x,θ),X1,X2...Xn为总体采样得到的样本.其中X1,X2...Xn独立同分布,可求得样本的联合概率密度函数为: 其中θ是需要求得的未知量,xi是 ...

  4. 【ML入门系列】(三)监督学习和无监督学习

    概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervise ...

  5. 【ML入门系列】(二)分类与回归

    前言 在机器学习中,“分类”和“回归”这两个词经常听说,但很多时候我们却混为一谈.本文主要从应用场景.训练算法等几个方面来叙述两者的区别. 本质区别 分类和回归的区别在于输出变量的类型.分类的输出是离 ...

  6. 【ML入门系列】(一)训练集、测试集和验证集

    训练集.验证集和测试集这三个名词在机器学习领域极其常见,但很多人并不是特别清楚,尤其是后两个经常被人混用. 在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train ...

  7. CS231n 2016 通关 第三章-SVM与Softmax

    1===本节课对应视频内容的第三讲,对应PPT是Lecture3 2===本节课的收获 ===熟悉SVM及其多分类问题 ===熟悉softmax分类问题 ===了解优化思想 由上节课即KNN的分析步骤 ...

  8. [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族

    声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...

  9. 关于ML.NET v0.6的发布说明

    ML.NET 0.6版本提供了几项令人兴奋的新增功能: 用于构建和使用机器学习模型的新API 我们主要关注的是发布用于构建和使用模型的新ML.NET API的第一次迭代.这些新的,更灵活的API支持新 ...

随机推荐

  1. Failed to decode response: zlib_decode(): data error Retrying with degraded;

    composer update的时候出现: Failed to decode response: zlib_decode(): data error Retrying with degraded: 执 ...

  2. scala与java之间的那些事

    scala与java之间的关系,我认为可以用一句话来开头:scala来源于java,但又高于java. scala的设计者Martin Odersky就是一个JAVA控,这位牛人设计了javac和编写 ...

  3. scala语法解析(解码指环)

    看惯了JAVA的语法,再看scala的语法,有的晦涩难懂.正好遇到一个介绍scala语法的文章,就直接截图留念.省的再临时抱佛脚了.

  4. java基础入门之数组排序冒泡法

    public class ArrayTest03{ /* Name:数组排序,冒泡法 Power by :Stuart Date:2015-4-23*/ public static void main ...

  5. QT发布的EXE打包压缩成单文件

    Enigma virtual box 是免费的软件虚拟化工具,它可以将多个文件封装到您的应用程序主文件,这样您的软件就可以制作成为单文件的绿色软件. enigma virtual box 支持所有类型 ...

  6. 4django模板

    在前面的几节中我们都是用简单的django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容 1.创建一个 zqxt_tmpl 项目,和一个 名称为 ...

  7. [笔记]几个简单有用的PHP函数

    收藏几个简单的PHP函数,分别用于对象到数组转换.json到php数组转换功能.curl模拟POST以及根据链接获取内容.不直接使用json_decode()的原因是php json_decode() ...

  8. 0423 hashlib模块、logging模块、configparse模块、collections模块

    一.hashlib模块补充 1,密文验证 import hashlib #引入模块 m =hashlib.md5() # 创建了一个md5算法的对象 m.update(b') print(m.hexd ...

  9. nginx日志配置,以及日志轮询

    一.为nginx配置错误日志 Nginx错误日志是调试nginx的重要手段,属于核心功能模块的参数(ngx_core_module)该参数名字为err_log,是放在Main区块中全局配置 err_l ...

  10. screen&tmux快捷键

    screen Key 快捷键 Action 动作 Notes 备注 Ctrl+a c new window 新窗口   Ctrl+a n next window 下一个窗口 I bind F12 to ...