SVM 笔记整理
支持向量机
一、支持向量机综述
1、研究思路,从最特殊、最简单的情况开始研究
基本的线性的可分 SVM 解决二分类问题,是参数化的模型。定义类标记为 \(+1\) 和 \(-1\)(区别于感知机,感知机是 \(+1\) 和 \(0\)),学习的是分离超平面,分类决策函数是 \[f(x) =sign(w\cdot x + b)\],我是这样看待这个分类决策平面的。
\[
f(x) =sign(w\cdot x + b)
\]
可以将向量 \(w\) 理解成为向量 \(x\) 的 \(n\) 个特征的权重,将它们加权求和以后得到一个值,如果这个值大于一个阈值,就归为一类,否则归于另外一类,这一点和感知机是一样的,我们不妨翻《统计学习方法》看看感知机和支持向量机的章节,它们定义的分类决策函数都是 \(f(x) =sign(w\cdot x + b)\)。
2、理解间隔的定义,为什么不是距离最大,理解什么叫间隔最大化
- 假设训练数据集线性可分
我是这样理解间隔最大化的,这样的讨论同样基于训练数据集线性可分的前提下。
- 什么是超平面关于样本点的间隔
理解“间隔”这个概念,我们一定先要认识到一点,分离超平面的位置一定是位于两类样本点中间。
书上之所以使用“间隔”,是为了引入正负样本标签的含义。这一点可以这样理解,如果我们把间隔改成距离,那么这个“距离”一定是 0。
(配图说明。)
从这个角度再来看书上说的“函数间隔”和“几何”间隔,你会看到,这样的定义是多么完美,但是又是比较晦涩。
又假设分离超平面 \(f(x) =sign(w\cdot x + b)\) 已知,即向量 \(w\) 和标量 \(b\) 都已知,训练数据集已知,那么,对于所有的训练数据集,总逐个计算训练数据集到分离超平面的间隔,在这些间隔中,总能找到一个最小的距离,将这个最小的距离定义为整个训练数据集的间隔。
整个训练数据集中,能达到这个最大间隔的点一定至少有 2 个,正类一个,负类一个。分离超平面就像是被它们给“撑”住了一样。再来看一个最特殊的情况,如果支持向量正好有两个,正类一个,负类一个,那么此时分离超平面一定是它们的中垂线。支持向量多余两个的情况,总是可以至少画出一边的间隔边界,间隔边界确定了,分离超平面就确定了。
(配图说明。)
- 理解间隔最大化
当向量 \(w\) 和标量 \(b\),成为参数的时候,不同的向量 \(w\) 和标量 \(b\) 的组合针对同一份训练数据集都可以得到一个间隔,这个间隔最大的向量 \(w\) 和标量 \(b\) 的组合就是我们认为最好的参数,因为这样的分离超平面对于未知的测试数据集有较好的泛化能力。
(配图说明。)
这里举一个例子:我们都知道木桶原理,木桶能装多少水由最短板的长度决定,那么,如果我们要买一个木桶装下更多的水,我们就要选那个所有木桶中最短板最长的那个木桶,这句话说得比较拗口,不过我相信,我已经把这件事情说清楚了。
- 我关于间隔最大化的一个直观描述
3、支持向量机的理论研究路径
在很多情况下,我们总是从最最简单的情况开始研究,考虑最特殊的情况,以抓住问题的关键所在,对于一些更一般的情况,可以通过一些技巧向简单的情况进行转化。SVM 的理论研究就是这样层层递进的过程。
支持向量机学习方法包含构建由简至烦的模型:线性可分支持向量机、线性支持向量机、非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。
- 线性可分支持向量机
假设数据集一定线性可分,在此前提下有定理可以保证最大间隔的分离超平面存在且唯一,此时的线性可分支持向量机对应“硬间隔最大化”。
- 线性支持向量机
线性支持向量机对应“软间隔最大化”,是为了避免“硬间隔最大化”为了照顾少数那些离群点,而丧失了较多的泛化能力。“软间隔最大化”的 SVM 从机器学习的角度来看,是加入了正则化的损失函数的最优化问题,从这个角度上说,“软间隔最大化”与“硬间隔最大化 + 正则化”是一回事(这一点其实书上有说),“软间隔最大化”可以通过控制超参数 \(C\) 以避免“过拟合”。
在学习一些参数化的机器学习模型时,比如线性回归、多项式回归、逻辑回归、决策树时,我们为了避免过拟合,总会给损失函数加上一个尾巴,以使不会因为自变量的很小变化,导致损失函数的值有很大的变化,这种数学上的处理就叫“正则化”,我们总是没有看到 SVM 提到过正则化对吗?因为它正正好对应了“软间隔最大化”的支持向量机模型。
- 非线性支持向量机
处理不能线性可分的情况,基本思路就是构造特征,将训练数据集中的向量从一个低维度映射到更高维度,是基于“低维空间不能线性可分,在高维空间中就能线性可分”的思想。
以上其实就是 SVM 最最基本的研究思路,至于我们在各类机器学习的书中看到的 SMO 算法,核技巧、拉格朗日对偶问题是具体在求解 SVM 的过程中使用的数学和计算机上算法和技巧,理解它们需要花一些时间,但 SVM 最基本的思想其实是非常简单易懂的。我们在学习 SVM 的过程中,应该先抓住思想和主线,再深入研究细节。
1、如果你的 SVM 模型过拟合了,你可以考虑通过减少 C 来正则化:
解释:C 越大,则表示硬间隔的程度越厉害,越不允许有分错的情况,这样就容易造成过拟合。
2、如何理解 hinge loss function ?
3、SVM 涉及距离的计算,不要忘记使用 scale
刘建平Pinard 博客中的内容
scikit-learn 支持向量机算法库使用小结
https://www.cnblogs.com/pinard/p/6117515.html
支持向量机原理(一) 线性支持向量机
http://www.cnblogs.com/pinard/p/6097604.html
支持向量机原理(二) 线性支持向量机的软间隔最大化模型
http://www.cnblogs.com/pinard/p/6100722.html
支持向量机原理(三)线性不可分支持向量机与核函数
http://www.cnblogs.com/pinard/p/6103615.html
支持向量机原理(四)SMO算法原理
http://www.cnblogs.com/pinard/p/6111471.html
我的问题:
1、原问题和对偶问题的关系深入理解一下
2、w 的值好算,b 呢?
SVM 笔记 —— liwei
先分开,能找到很多很多条直线,再从分开的直线中找到最好的。
支持向量机是一个分割超平面,支持向量是那些具有决定性作用的点。
支持向量机(SVM)是什么意思?
https://www.zhihu.com/question/21094489
Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
https://zhuanlan.zhihu.com/p/29604517
机器学习算法实践-支持向量机(SVM)算法原理
https://zhuanlan.zhihu.com/p/28660098
七月的文章:
支持向量机通俗导论(理解SVM的三层境界) - 结构之法 算法之道 - CSDN博客 http://blog.csdn.net/v_july_v/article/details/7624837
关于SVM一篇比较全介绍的博文 - 数据分析与数据挖掘技术-炼数成金-Dataguru专业数据分析社区 http://www.dataguru.cn/thread-371987-1-1.html
支持向量机: Kernel « Free Mind http://blog.pluskid.org/?p=685
The Kernel Trick http://www.eric-kim.net/eric-kim-net/posts/1/kernel_trick.html
(81 条消息)支持向量机(SVM)是什么意思? - 知乎 https://www.zhihu.com/question/21094489
数据嗨客 | 第5期:支持向量机 https://zhuanlan.zhihu.com/p/25036051
机器学习小白如何成长为业内专家? https://zhuanlan.zhihu.com/p/31530546
Support vector machine - Wikipedia https://en.wikipedia.org/wiki/Support_vector_machine
机器学习数学:拉格朗日对偶问题
https://zhuanlan.zhihu.com/p/31131842
支持向量机SVM - 从入门到放弃
https://zhuanlan.zhihu.com/p/30596284
用纸笔推算 SVM 的对偶性(Duality)更是面试官们喜闻乐见的测试,已近成为了机器学习八股文。
SVM学习笔记(day1)
https://zhuanlan.zhihu.com/p/29922366
SVM学习笔记(day2)
https://zhuanlan.zhihu.com/p/29936439
SVM学习笔记(day3)
https://zhuanlan.zhihu.com/p/29971528
SVM 笔记整理的更多相关文章
- Deep Learning(深度学习)学习笔记整理系列之(四)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(三)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- 从0开始学Swift笔记整理(五)
这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- 学习ReactNative笔记整理一___JavaScript基础
学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(七)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(六)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
随机推荐
- [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)
Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也 ...
- redis进阶知识
原文地址:https://my.oschina.net/u/4052893/blog/3001173 一.缓存雪崩 1.1什么是缓存雪崩? 回顾一下我们为什么要用缓存(Redis): 现在有个问题,如 ...
- Django使用Celery进行异步任务
Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...
- Redis哨兵功能与集群搭建
6.redis哨兵功能 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机, ...
- CodeForces - 714E + POJ - 3666 (dp严格单调递增与非严格单调递增)
左偏树 炒鸡棒的论文<左偏树的特点及其应用> 虽然题目要求比论文多了一个条件,但是……只需要求非递减就可以AC……数据好弱…… 虽然还没想明白为什么,但是应该觉得应该是这样——求非递减用大 ...
- 二: Jvm内存模型
因为每个对象生命周期不一样,jvm在做内存管理的时候,就帮我们分成了三个区域: 1. 新生代(回收频率高) 新生和老年默认大小比例为1:2 2. 老年代(回收频率低) 最好所有的对象都 ...
- tabcontrol动态生成选项卡,并且在选项卡中添加窗体
http://blog.csdn.net/zx13525079024/article/details/6084733 今天在论坛上看到有人问到,如果在点击TRVEVIEW时动态生成tabcontrol ...
- Solr知识点摘录
1.Solr和Lucene区别: 2.Solr的下载与安装 3. 4. 5. 6.Solr基础 7. 8.Solr索引操作 9. 10.
- 互联网技术笔试总通不过?leetcode刷对了么
https://36kr.com/p/5084645 Leetcode,绕都绕不过去的程序员刷题神器 编者按:本文来自逆行求职(ID:nixingjihua). 对所有求职技术岗位的童鞋来说,有这么一 ...
- fpga为什么要用nios 开发
同一个项目可以用NIOS2也可以不用就可以完成,这句话说对也可以说不对,这要看是一个什么样的项目,你那样问的话可就说明有CPU和没CPU下的使用情况你还没有搞清楚,这两者并没有完全分开,简单的说就是有 ...