ML_Review_SVM(Ch9)
Note sth about SVM(Support Vector Machine)
支持向量机(SVM)从入门到放弃再到掌握这篇博客讲得挺仔细。
动机:
SVM的中文名字——支持向量机。本质是一种线性的二分类器。如果涉及多分类问题,一般有两种方法(假设一共有k类):1、训练k个svm,每次训练时,把某个类设为+,而其余为-。2、训练$C{k \choose 2}$,即两两之间都训练一个svm。以上两种方法各有优劣,具体可移步SVM多分类的两种方式。
SVM算法:
考虑下图(图是偷拿老师ppt的)。

如果我们需要选择一条直线,将上述样本(TrainingData)分为两类,哪条直线是我们希望使用的?(显然,三条线都可以很好的完成样本(TrainingData)的分类)。
但是,直观感觉告诉我们,绿色的会较优。因为什么?因为绿色的线对局部的扰动性容忍度更高,更抗扰动。而这直观感受就是,两类点都离这条线较远,或者说两类点中离这条线最近的点,到这条线的距离较远。而这些最近的点,到线的映射点,两点的连线就是所谓的支持向量,和我们找到的直线平行的分别过两类点中离该直线最近的点的两条直线之间的距离就是间隔,我们需要间隔最大。不妨假设这两条直线为:
a($w^Tx+b \leq -1$)
c($w^Tx+b \geq 1$)
而中间的直线为b($w^Tx+b=0$)。
称a,b(或者b,c)之间的距离为间隔(margin)。

算法公式概述:
首先,我们定义样本为两类,+1,-1(+100,-100;+20,-5000……其实都可以,只不过+1,-1写出来式子比较好看)那么我们的分类标准就是,若$w^Tx+b \geq 1$则该样本(TestData)为正类,若$w^Tx+b \leq -1$则该样本(TestData)为负类。
其次,不难得出:
$$margin= \frac{1}{2} ( \frac{w}{||w||}x_{+} + \frac{b}{||w||} - \frac{w}{||w||}x_{-} - \frac{b}{||w||} ) $$
$$ \rightarrow \frac{1}{2||w||}(wx_{+} + b - wx_{-} - b) = \frac{1}{||w||} $$
为什么?因为$x_{+}$是$w^Tx+b = 1$上的点,$x_{-}$是$w^Tx+b = -1$上的点,所以上式$ wx_{+}+b-wx_{-}-b = (wx_{+}+b) - (wx_{-}-b) = 1 - (-1) = 2 $就约去了$\frac{1}{2||w||}$的分母中的2。我们希望我们最大化$\frac{1}{||w||}$,并且我们找到的这条直线$ w^Tx+b=0$的直线满足:
$$ wx_i + b \geq +1, \quad y_i = +1 $$
$$ wx_i + b \leq -1, \quad y_i = -1 $$
即可以表示为:$y_{i}(wx_{i}+b)-1 \geq 0$
于是乎,我们需要做的就是下面的式子:
$$ max \qquad \frac{1}{||w||} \qquad (1) $$
$$ s.t. \qquad y_i((wx_i)+b) \geq 1, \quad i = 1,2,...,n \qquad (2) $$
而在实作的时候我们通常做的是(1)的式子的对偶形式,即:$max \quad \frac{1}{2}||w||^2 $
最后观察式子,发现为有约束的优化问题,可引入拉格朗日乘子法解决,在此并不赘述。
ML_Review_SVM(Ch9)的更多相关文章
- Mongodb Manual阅读笔记:CH9 Sharding
9.分片(Sharding) Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb ...
- 《代码整洁之道》ch5~ch9读书笔记 PB16110698(~3.15) 第二周
<代码整洁之道>ch5~ch9读书笔记 本周我阅读了本书的第5~9章节,进一步了解整洁代码需要注意的几个方面:格式.对象与数据结构.错误处理.边界测试.单元测试和类的规范.以下我将分别记录 ...
- Mongodb 3.2 Manual阅读笔记:CH9 存储
9. 存储 9. 存储 9.1 存储引擎 9.1.1 WiredTiger存储引擎 9.1.1.1 文档级别并发 9.1.1.2 快照和检查点 9.1.1.3 Journaling 9.1.1.4 压 ...
- CH9 顺序容器
本章主要介绍了标准库顺序容器,包括 顺序容器的公共接口,如构造函数,添加/删除操作等 利用迭代器访问容器 不同顺序容器的差异 string的特殊操作 容器适配器,如栈,队列等 9.1 “按字典序插入到 ...
- JavaWeb监听器的使用(一)监听上下文和会话信息
1.监听上下文的类 package com.examp.ch9; import java.io.FileOutputStream; import java.io.PrintWriter; import ...
- Vue.js学习笔记(8)拖放
小颖在目前负责的项目中,负责给同事提供所需组件,在这期间,我们家大颖姐姐让我 写个拖拽组件,一开始我是用click实现,先将你要拖拽的dom点一下,然后再点你要放的位置,这个dom再通过小颖写的方法, ...
- 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值
概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...
- EditBox问题的实现以及Junit测试框架的简要说明
一.这周的EditBox由一个框改为三个框,同时进行测试,下面给出程序及截图 1 import java.util.regex.Matcher; 2 import java.util.regex.Pa ...
- Discrete.Differential.Geometry-An.Applied.Introduction(sig2008)笔记
-------------------------------------------------------------- Chapter 1: Introduction to Discrete D ...
随机推荐
- Vue指令之事件修饰符
事件修饰符: + .stop 阻止冒泡 + .prevent 阻止默认事件 + .capture 添加事件侦听器时使用事件捕获模式 + .self 只当事件在该元素本身(比如不是子元素)触发时触发回调 ...
- 外网Telnet虚拟机,及nat配置等
环境整体是使用GNS3,通过cloud真实连接到虚拟机 cloud1 nginx主机 cloud2 nginx主机https连接 cloud3 Internet测试主机 下面贴每个网络设备配置,特别注 ...
- SQL SERVER-孤立用户
--SQL SERVER用户管理分为两层,实例级的login和数据库级的用户 --login的SID和数据库用户的SID必须一样才行 --数据库搬迁login在重建时生成新的sid,与原来数据库的用户 ...
- Android笔记(十四) Android中的基本组件——按钮
Android中的按钮主要包括Button和ImageButton两种,Button继承自TextView,而ImageButton继承自ImageView.Button生成的按钮上显示文字,而Ima ...
- Linux sudo(CVE-2019-14287)漏洞复现过程
简述: 该漏洞编号是CVE-2019-14287. sudo是Linux系统管理指令,允许用户在不需要切换环境的前提下用其他用户的权限运行程序或命令,通常是以root身份运行命令,以减少root用户的 ...
- syzkaller安装
初始环境配置 sudo apt-get install subversion sudo apt-get install g++ sudo apt-get install git sudo apt in ...
- linux网络编程之posix线程(一)
今天继续学习posix IPC相关的东东,消息队列和共享内存已经学习过,接下来学习线程相关的知识,下面开始: [注意]:创建失败这时会返回错误码,而通常函数创建失败都会返回-1,然后错误码会保存在er ...
- Vmware Pro 14报错:无法连接 MKS: 套接字连接尝试次数太多;正在放弃。
软件环境: 虚拟机软件:VMware Pro 14 母机操作系统:win7 客户机操作系统:CentOS 7 问题详情: 报错:无法连接 MKS: 套接字连接尝试次数太多:正在放弃. ...
- nginx 环境 thinkphp 隐藏index.php
tp官网已经写了 http://doc.thinkphp.cn/manual/hidden_index.html 不生效 重启nginx .问题依旧 kill掉nginx进程 再启动 贴段自己的配置 ...
- vue 对象更改检测注意事项