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 ...
随机推荐
- Java 之 Junit 单元测试
Junit 单元测试 测试分类: 1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2.白盒测试:需要写代码.关注程序具体的执行流程. Junit 测试:(属于白盒测试) 步骤: 1 ...
- Android小经验:启动Eclipse,出现提示“......发现了以元素'd:skin'开头的无效内容。此处不应含有子元素...”
如图所示: 解决办法: 进入sdk目录下,把D:\android-sdks\system-images\android-22\android-wear\armeabi-v7a\devices.xml和 ...
- 团队高效率协作开发的秘密武器-APIDOC
团队高效率协作开发的秘密武器 1.前言 在团队协作开发中,不知道各位有没有遇到这样的问题: l 新人接手了项目代码,因没有项目文档,只能靠追踪路由,寻读代码分析业务逻辑 l 前端同学写好了页面,苦等后 ...
- 【OF框架】框架规范介绍
一.目录规范 二.命名规范 三.其它规范
- Linux文件系统概览
三 Linux文件系统概览 3.1 Linux文件系统简介 在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡.磁盘驱动器.打印机.输入输出设备.普通文件或是目录都被看作是一个文件. 也 ...
- centOS7 下 安装mysql8.x
第一部分 CentOS7安装mysql1.1 安装前清理工作:1.1.1 清理原有的mysql数据库:使用以下命令查找出安装的mysql软件包和依赖包: rpm -pa | grep mysql 显示 ...
- nextjs —— jsx style 学习记录
作用域 全局 <style global jsx>{` .hero { width: 100%; color: #333; } .title { margin: 0; width: 100 ...
- centos 下 sphinx安装和配置
一.安装前提必备先安装工具 yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml ...
- Jquery “This”的指向
JavaScript中的this不总是指向当前对象,函数或类中的this指向与调用这个函数的对象以及上下文环境是息息相关的.如在全局作用域调用一个含this的对象,此时当前对象的this指向的是win ...
- sqlplus、exp、imp不是内部或外部命令,也不是可运行的程序
oracle 想exp导出数据库,参考网上的作业,进入CMD命令,黑屏后输入命令出现EXP后出现EXP不能内部或外部命令. 网上找到下列解决方法 摘自:http://blog.csdn.net/suz ...