ML 徒手系列 SVM
在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的更多相关文章
- ML 徒手系列说明
徒手系列正确打开方式: 1.徒手撸公式 2.徒手撸代码
- ML 徒手系列 拉格朗日乘子法
拉格朗日乘子法是解决极值问题的方法. 本方法是计算多元函数在约束条件下的极值问题的方法. 1.多元函数与约束问题 如下图所示,f(x,y)为多元函数,g(x,y)=c为约束条件.目的是计算在约束条件下 ...
- ML 徒手系列 最大似然估计
1.最大似然估计数学定义: 假设总体分布为f(x,θ),X1,X2...Xn为总体采样得到的样本.其中X1,X2...Xn独立同分布,可求得样本的联合概率密度函数为: 其中θ是需要求得的未知量,xi是 ...
- 【ML入门系列】(三)监督学习和无监督学习
概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervise ...
- 【ML入门系列】(二)分类与回归
前言 在机器学习中,“分类”和“回归”这两个词经常听说,但很多时候我们却混为一谈.本文主要从应用场景.训练算法等几个方面来叙述两者的区别. 本质区别 分类和回归的区别在于输出变量的类型.分类的输出是离 ...
- 【ML入门系列】(一)训练集、测试集和验证集
训练集.验证集和测试集这三个名词在机器学习领域极其常见,但很多人并不是特别清楚,尤其是后两个经常被人混用. 在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train ...
- CS231n 2016 通关 第三章-SVM与Softmax
1===本节课对应视频内容的第三讲,对应PPT是Lecture3 2===本节课的收获 ===熟悉SVM及其多分类问题 ===熟悉softmax分类问题 ===了解优化思想 由上节课即KNN的分析步骤 ...
- [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...
- 关于ML.NET v0.6的发布说明
ML.NET 0.6版本提供了几项令人兴奋的新增功能: 用于构建和使用机器学习模型的新API 我们主要关注的是发布用于构建和使用模型的新ML.NET API的第一次迭代.这些新的,更灵活的API支持新 ...
随机推荐
- Linux c编程:I/O多路复用之select
一般我们在写socet程序的时候调用的accept,recv等操作都是阻塞型的.意思就是如果我们一直收不到数据那么则会被阻塞.所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待 ...
- PHPUnit学习记录
今天是2017-1-17号,昨晚收到邮件,被view code之后,基本全部需要重构,其实我写得php代码里面完全是东拼西凑的代码,自己都不知道什么意思,今天被要求学习PHPUnit了 ------- ...
- C#练习委托、事件、事件处理
控制台应用程序效果: 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- Asp.Net网站统一处理错误信息
1.创建Global.asax文件 2.在Application_Error里统一处理,可以写入文件,也可以写入SQL.代码如下 Exception ex = Server.GetLastError( ...
- mssql-在一个特定的会话停止出发器
用SET CONTEXT_INFO来实现 --在某个会话里设置 SET CONTEXT_INFO 0x8888 --在触发器里判断 ) SELECT @Cinfo = Context_Info() 原 ...
- rails 注释
view -# js.erb <%# xxxx %> 单行注释
- socket通信——通过Udp传输方式,将一段文字数据发送出去
需求:通过Udp传输方式,将一段文字数据发送出去 定义一个Udp发送端 思路: 1.建立updsocket服务 2.提供数据,并将数据封装到数据包中. 3.通过socket服务的发送功能,将数据包发出 ...
- 【Flask模板】宏的概念和基本使用
# 宏:模板中的宏跟python中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量.使用宏的时候,参数可以为默认值.相关示例代 ...
- android OTG【转】
本文转载自:http://blog.csdn.net/xubin341719/article/details/7707056 一.OTG的概念 OTG是On-The-Go的缩写,是近年发展起来的技术, ...
- shell 定义变量
注意定义变量的语法: var="ABC" 等号之间不能有空格,否则会报错