一些前提的约定,还是沿用上篇文章的哈。先来致敬下男神。

一:支持向量机(support vector machine)
在感知机那一章节我们讲了,对样本的分类过程中,可以用维度空间内的某个超平面划分开来。Let’s recape it。

也就是在超平面的一边是正样本,一边是负样本。换句话说也就是如果我们通过模型计算出的值大于0,通过激活函数sign,为(+1),我们认为是正样本,反之则是负样本。
看似挺好的哈。但是我们还会发现一个问题,就是仅仅是超平面本身来划分样本空间,这样的超平面是有很多很多的,如下图。

也就是说我们可以得到无穷个感知机模型,但是哪个更优一些呢?
我们希望存在这么一个感知机,能够使得样本分的更加开一些,最大程度的开一些,这样对后面预测的样本就有更大的容错性。用专业的术语就是找到几何间隔最大的分离超平面,这个是唯一的。如下图所示:

我们找到了这么一个wx+b=0的超平面,它不仅仅将样本区分开,而且区分的很好,中间留下了很大的间距,虽然预测样本的时候还是使用的sign函数(wx+b>0则y=+1,反之wx+b<0则y=-1),但是在这样超平面划分后,在以后预测新的样本的时候,就会多一些容错性,中间有一块最大的缓冲空间间距,不至于样本轻易过线导致预测错误。
所以,基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。当然这个是在样本的训练过程中,真正在使用预测的时候还是感知机一样。

二:数学模型
在感知机的训练过程中,只需要wx+b>0则y=+1,在SVM要求更高一些必须使得wx+b>=K则y=+1,这里的K是一个大于0的实数;相对应的,在SVM中预测一个负样本y=-1,不再仅仅要求wx+b<0,而是要求wx+b<=-K。这样训练的要求更高了(好比是训练的时候对自己要求搞一单,苦一点,用的时候才更好一点嘛,平常训练刚刚过,或者得过且过,那么真正用的时候掉链子的概率就会增大),总结一下,在训练过程中要求。


上述式子合并得式子的约束st:y*(w⋅x+b) >=1。
st是 subject to受限于,的意思,也就是式子的约束。

三:代价函数
又来了又来了!又是代价函数。这里很关键,是理解SVM的关键。
我们希望,训练样本到超平面都是有保持一定的距离,当然了,尽可能希望这个距离尽可能大,但是需要保持最低要求,so what is it?。我们多次谈到w和x可以看做是连个向量,他们的内积可以看做是X向量在W向量的投影长度乘以cos(θ)再乘以W的范式。我们改写一下这个式子(请忽略b,上一博文也说了这个wx+b 化成Z = θ^T X的形式):

如果样本为正,就需要 y >= 1。
如果样本为负,就需要 y <= -1。
也就是 |y| >= 1
也就是 |p| * ‖θ‖ >= 1,得|p| >= 1/‖θ‖ ,把请把θ理解成w。
也就是每个点到wx+b=0的距离最低值应该是1/‖w‖ ,也就是离直线最近的那个点到直线的距离是1/‖w‖ 。这个也就是在上图中标注的那个最大程度撑开的间距的大小2/‖w‖ 的由来,取决于最近的那个点的位置(st:y*(w⋅x+b) >=1)。
所以说,现在我们需要尽量最大化1/‖w‖ , 才能保证所有点到直线的距离的最小值能撑最大,也就是距离直线最近的那个点到直线的距离尽可能大。
从数学上讲,最大化1/‖w‖ ,也就是最小化1/2 ‖w‖^2,这里用1/2和平方纯属是为了求导方便。诶,桥豆麻袋,又是一种最小值到最大值的转换,再一次印证了最小化和最大化是可以相互转换的,这里又体现了一种方法(st:y*(w⋅x+b) >=1)。我们得到

其实吧,这里这个式子,长得是不是有点像正则化的式子?在Andrew Ng是机器学习视频里是从正则化的角度推出来的这个代价函数。大概说一下吧,Andrew Ng还是用的是逻辑回归的代价函数加正则化的代价函数,只不过,他给了一点变化进去,他将w⋅x+b≥1的代价值定义为0,w⋅x+b≤-1的代价值也定义为0(因为判定条件更严格了,所以效果更好了,所以给点奖励,直接将这两个区间的代价值定义为0)。这样一来,在训练样本满足这样条件下的时候,代价函数就只剩下一个正则项,也就是我们上述推导那个代价函数式子,还不懂?没关系,会我们第一个推导就行。

四:求解代价函数最优值

之类是有个约束条件的,也有最小化函数,哈哈,名词出来了,拉格朗日乘数法,

五:核函数
以上内容,包括之前学习到的感知机,都是对线性可分的空间做划分的,或者是对稍微线性可分的空间做划分的。
啥是线性可分?线性可分就是说可以用一个线性函数把两类样本分开,比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数。
请看如下二维图(来自网络):

在低维度空间下,线性不可分的样本,在高维度的情况下是说不定就是线性可分的了,因此SVM的一个技巧就是将低维度的数据映射到高纬度去,在高维度使用SVM算法进行最大间距的线性划分。
这个映射怎么做呢?增加特征,比如特征多项式,增加高次项,都是办法。
SVM有一套核函数,就是将数据现在低维度进行运算,再映射到高纬度,减少高纬度下的计算量。
核函数的种类如下:

总结一下,核函数只是一个SVM的一个技巧,是用来处理线性不可分样本的一个技巧,真正的SVM思想就是最大间距分类。

暂时告一段落,这里对SVM的基本认识先到这里,后面用Python跑svm库的时候再进行实践,敬请期待。

每天进步一点点《ML - 支持向量机》相关推荐

  1. 每天进步一点点《ML - 感知机》

    一些前提的约定,还是沿用上篇文章的哈.先来致敬下男神. 一:感知机 感知机是一种线性二分类模型,其目的是找到能将训练数据线性可分的分离超平面.超平面线性模型为 联想起之前学到逻辑斯特回归的决策边界,Z ...

  2. 感知机介绍及MATLAB实现

    文章目录 前言 1 感知机简介 2 感知机结构 3 感知机学习过程 3.1 数据传播过程 3.2 参数更新过程 4 代码实现 4.1 准备数据 4.2 感知机训练学习 4.3 感知机仿真测试 总结 2 ...

  3. 每天进步一点点《ML - 线性回归》

    本系列Machine Learning 的学习博文很大部分全是受教于 Andrew Ng 的Stanford录制的ML视频,我的男神. 致敬男神! 第一次写这样系列的博文,单纯是为了记录自己的所学,做 ...

  4. 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)

    写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...

  5. 每天进步一点点《ML - 正则化代价函数》

    本系列Machine Learning 的学习博文很大部分全是受教于 Andrew Ng 的Stanford录制的ML视频,我的男神. 一:欠拟合(Under fitting)与过拟合(Over fi ...

  6. 每天进步一点点《ML - 高斯混合模型》

    上一篇文章学习了极大似然估计和EM算法,这一章节就是学习EM算法的具体应用场景,高斯混合模型,是一中聚类的算法. 一:高斯混合模型(GMM) 我们将一个分布复杂的数据分布,用多个高斯概率分布来共同表示 ...

  7. 每天进步一点点《ML - 从极大似然到EM算法》

    一:极大似然 1:概念引入 极大似然参数估计是概率论中学习过的内容,就是预先定义概率分布模型,根据一堆的同概率分布的一堆样本数据去估计该概率模型中的未知参数. 举个例子:有很多西瓜x,我们可以得到每一 ...

  8. 每天进步一点点《ML - Sklearn库简单学习》

    一:Sklearn介绍 Sklearn是一个强大的机器学习库,基于python的.官方文档(http://scikit-learn.org/stable/ ).如下列举部分的使用场景. 由图中,可以看 ...

  9. 每天进步一点点《ML - 异常点检测》

    一些前提的约定,还是沿用上篇文章的哈.先来致敬下男神. 一:异常点检查(Anomaly Detection) 这一章节相对来说简单很多,也可以说是很大程度是概率论的知识内容了. 异常点,和大部分正常状 ...

最新文章

  1. 如何通俗解释欧拉公式?
  2. 病情高度活动的RA病人的感染风险增加
  3. C++11 并发指南三(std::mutex 详解)
  4. Java synchronized 详解
  5. 如何让 dotnetcore 在 Linux 上后台运行?
  6. phpcms点赞:表情点击(的统计功能) - 代码剥离篇
  7. [导入]Spring Web Flow
  8. Sendmail邮件服务器搭建与配置笔记
  9. 11 月全球 Web 服务器调查报告:nginx 表现最佳
  10. Ubuntu16.04 ORB_SLAM2的安装教程
  11. CSS属性简写规则详解
  12. java常用框架集合
  13. android模拟器安装frida
  14. Angular $injector:unpr Unknown provider 问题原因汇总
  15. 【考研经验】19年华东师范大学计算机专硕考研经验(初试+复试)分享!专业课140分!...
  16. Java mail Exchange Service
  17. 《2018中国直销银行白皮书》发布 银行面临“颠覆式创新”
  18. mysql 事物隔离界别_MySQL锁与事务隔离级别
  19. ACP学习笔记(云计算)附题
  20. 迈禹牌净水器换滤芯的做法

热门文章

  1. thinkphp 内部函数 D()、F()、S()、C()、L()、A()、I()
  2. Centos5.6 x86_64下安装DRBD+Heartbeat+NFS
  3. android中如何通过代码检测是否有root权限?
  4. 使用模块化工具Rollup打包自己开发的JS库
  5. Serverless 实战 —— ​​​​​​​与微服务一脉相承,Serverless适用何种场景?会带来哪些冲击?
  6. JavaScript玩转机器学习:保存并加载 tf.Model
  7. Spring Restful Web服务示例 - 使用JSON,Jackson和客户端程序
  8. CCF 201412-2 Z字形扫描
  9. yarn : 无法加载文件 E:\leading\NodeJs\info\node_global\yarn.ps1,因为在此系统上禁止运行脚本
  10. 用until编写一段shell程序,计算1~10的平方