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支持新 ...
随机推荐
- ob 函数讲解
ob的基本原则:如果ob缓存打开,则echo的数据首先放在ob缓存.如果是header信息,直接放在程序缓存.当页面履行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给涉猎器.下面我说说ob的基 ...
- python基础20 -------python中的异常处理
一.python程序中的会出现的错误. 1.语法错误:这种错误根本过不了python解释器的语法检测阶段,必须在程序执行之前进行改正. 2.逻辑错误:这种错误虽然过了语法检测阶段但是程序在执行的过程中 ...
- python 局部local和全局global变量
global和local变量 虽然简单,但是还是记录一下,主要是转载 转载自:http://blog.sina.com.cn/s/blog_436992740102ux8z.html 先看一段代码 ...
- linux删除文件夹的命令
使用rm -rf 目录名字 命令即可 -r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 eg 删除文件夹实例:rm -rf /var/log/httpd/acc ...
- JETSON TK1 ~ 刷机和克隆固件
1:PC端的ubuntu. 要求必须是正常系统,不可以使用虚拟机.由于烧写过程采用刷机模式,虚拟机刷机易导致刷机问题. 2:驱动包.文件系统和源码下载 1.Driver package(驱动包,相当于 ...
- LeetCode:删除排序数组中的重复项||【80】
LeetCode:删除排序数组中的重复项||[80] 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原 ...
- 虚拟机ubuntu14.04系统设置静态ip
ubuntu14.04 设置静态ip vim /etc/network/interfaces 原来只有 auto lo iface lo inet loopback 修改成如下: auto lo if ...
- 10款CSS3进度条Loading动画
在线演示 本地下载
- tornado源码分析
初识tornado 首先从经典的helloword案例入手 import tornado.ioloop import tornado.web class MainHandler(tornado.web ...
- Ubuntu dpkg 查询已安装的软件包
要检查特定的包,比如firefox是否安装了,使用这个命令: dpkg -s firefox 要列出你系统中安装的所有包,输入下面的命令: dpkg --get-selections 你同样可以通过g ...