机器学习:支持向量机(SVM)与Python实现第(三)篇
来源:互联网 发布:体检数据 编辑:程序博客网 时间:2024/06/18 10:40
前言
最近看了Andrew Ng的机器学习视频中的支持向量机,视频的内容比较浅显,没有深入解释支持向量机中的数学原理。但是对于一个比较执着于知道为什么的人,笔者还是去网上查找了有关支持向量机原理以及实现的相关资料。在查找的过程中,笔者发现支持向量机的内容还是蛮多的,于是笔者根据自己的理解,并且参考了一些相关资料,最终写下了支持向量机的四篇博客。
机器学习:支持向量机(SVM)与Python实现第(一)篇——此篇主要介绍了分类间隔,引入SVM。
机器学习:支持向量机(SVM)与Python实现第(二)篇——此篇主要介绍了使用拉格朗日乘子来简化SVM问题的优化。
机器学习:支持向量机(SVM)与Python实现第(三)篇——此篇主要介绍非线性分类(核函数)以及松弛变量。
机器学习:支持向量机(SVM)与Python实现第(四)篇——此篇主要介绍SMO算法并用python实现了简单的SVM分类器。
核函数
前面我们介绍了很多东西,但一直都是基于数据是线性可分的。那么对于那些非线性的数据呢?
比如上面的图,数据显然不是线性可分的(事实上得用圆来作边界)。我们知道二次曲线方程(圆是特殊的二次曲线)一般可以写成:
但是我们注意到一个问题,就是上一篇博文最后推导出来的式子中,x都是以内积的形式存在的,即
这个优化问题可以替换成:
让我们来看一个例子,假设
另外如果注意到:
核函数的选择
现在我们来看两个直观的效果。核函数我们写成内积的形式:
从
松弛向量与软间隔最大化
另外一个问题是松弛变量的问题。我们之前一直谈论的分类是基于数据都比较优雅易于区分的。但是如果是这样的情况呢?
左图是理想的数据集,有图会发现有一个点比较偏离正常值。它也许是一个噪点,也许是人工标记的时候标错了。但在使用SVM分类时,却会因为这个点的存在而导致分类超平面是实线那个,但是一般来说,我们都知道虚线那个分类超平面是比较合理的。那么我们应该怎么做呢?
为了处理这种情况,我们允许数据点在一定程度上偏离超平面。
所以我们重新罗列出我们的优化问题:
- 机器学习:支持向量机(SVM)与Python实现第(三)篇
- 机器学习:支持向量机(SVM)与Python实现第(一)篇
- 机器学习:支持向量机(SVM)与Python实现第(二)篇
- 机器学习:支持向量机(SVM)与Python实现第(四)篇
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 转载--机器学习算法与Python实践之(三)支持向量机(SVM)进阶
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现(源码)
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
- Stanford机器学习---第8讲. 支持向量机SVM
- AngularJS 中的Promise --- $q服务详解
- linux 安装golang
- mac系统下使用beego工具创建项目出现kill -9 解决方法
- selenium api
- windows上装ios系统
- 机器学习:支持向量机(SVM)与Python实现第(三)篇
- Unity Shader学习笔记:凹凸映射
- csu 1005 BST(二叉排序树水题)
- Linux中slab的使用方法实例
- c++ 使用throw抛出异常
- 【微信】微信消息定时推送
- C#性能优化黑科技(二)【反射】批量实例化对象的快速方法
- contiki之list(2)
- TP5验证码点击刷新与验证