(转载请注明出处:http://blog.csdn.net/buptgshengod)

1.背景

     强烈推荐阅读(http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html)  
       支持向量机SVM(support vector machines)。

SVM是一种二值分类器,是近些年比較流行的一种分类算法。

本文,首先要介绍一些主要的知识概念,在下一章将对SVM进行简单地代码实现。


2.基本概念

(1)线性可分

          
       首先介绍一下什么叫线性可分,引用一张上一节的图。

线性可分实际上就是能够用一条直线将两种不同的点区分开来。

由此我们能够得到线性不可分就是两种点混合在一起不能区分。

可是线性不可分的点事实上也能够用数学方法区分开来。

比方说一个四维的数据集我们能够用一个三维的对象将其分开,这个对象叫做超平面。

下图的超平面就是那条蓝线。




(2)支持向量

       支持向量,如今我们知道了超平面的概念。支持向量事实上就是距离超平面在近期的向量。

以上图为例,就是距离蓝线近期的那些点。方法就是点到线的距离判定。

一旦我们找到了这些支持向量,那么我们就能够放大这些向量,仅仅考虑这些对象,用到的是序列最小优化的思想。


(3)拉格朗日乘子法

       对于支持向量的求法,我们须要一定的约束条件。

比方说我们设点到超平面的距离是d,我们要求取d>1的点作为约束条件。

由于假设没有这个约束条件会使得计算出现误差。

这个公式是我们去点到超平面距离最小的点的集合,且满足

在存在约束条件情况下求极值的问题。我们用到拉格朗日乘子法(參见百度百科)。


(4)变型

   參照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...)。我们把上面的式子变型为

 约束条件就变成了

上式的參数c使松弛变量,由于我们看到图中一些红点被分到了绿点的范围里,为了考虑到这样的问题,引入一个变量来控制。

svm的主要任务是计算參数C。

【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍的更多相关文章

  1. Python实现SVM(支持向量机)

    Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...

  2. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  3. 【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 决策书算法是一种逼近离散数值的分类算法,思路比較简单,并且准确率较高.国际权威的学术组织,数据挖掘国际 ...

  4. 【机器学习算法-python实现】KNN-k近邻算法的实现(附源代码)

    ,400],[200,5],[100,77],[40,300]]) shape:显示(行,列)例:shape(group)=(4,2) zeros:列出一个同样格式的空矩阵,例:zeros(group ...

  5. 机器学习算法 Python&R 速查表

    sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  6. 【机器学习算法-python实现】svm支持向量机(3)—核函数

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gshengod/article/details/24983333 (转载请注明出处:http://b ...

  7. SVM支持向量机推导,工具介绍及python实现

    支持向量机整理 参考: Alexandre KOWALCZYK大神的SVM Tutorial http://blog.csdn.net/alvine008/article/details/909711 ...

  8. 在opencv3中实现机器学习之:利用svm(支持向量机)分类

    svm分类算法在opencv3中有了很大的变动,取消了CvSVMParams这个类,因此在参数设定上会有些改变. opencv中的svm分类代码,来源于libsvm. #include "s ...

  9. 【机器学习算法-python实现】Adaboost的实现(1)-单层决策树(decision stump)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      上一节学习支持向量机,感觉公式都太难理解了,弄得我有点头大.只是这一章的Adaboost线比 ...

随机推荐

  1. 理解java reference

    Java世界泰山北斗级大作<Thinking In Java>切入Java就提出“Everything is Object”.在Java这个充满Object的世界中,reference是一 ...

  2. Java Script 正则表达式的使用示例

    一.语法 1.1 在JS中的使用代码 var myregex = new RegExp("^[-]?[0-9][0-9]{0,2}\\.[0-9]{5,15}\\,\s*[-]?[0-9][ ...

  3. string 常用 方法

    boost::array< char, 16 > header; string(header.begin(),header.end()) std::vector<uchar> ...

  4. 在 MacOS 上编译链接 OpenGL 程序

    几个星期以前开始折腾在我的MBA上写 OpenGL 小程序.我不太熟悉MacOS上的开发工具比如XCode,所以一开始的想法就是用vim来写程序,然后手工编译链接.网上查了一下,MacOS上的Open ...

  5. 【暑假】[深入动态规划]UVa 1628 Pizza Delivery

    UVa 1628 Pizza Delivery 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51189 思路:    ...

  6. DP——最优三角形剖分

    [动态规划]凸多边形最优三角剖分 枚举三角行,再递归三角形旁边的两个多边形.

  7. 《Data-Intensive Text Processing with mapReduce》读书笔记之一:前言

    暑假闲得蛋痒,混混沌沌,开始看<Data-Intensive Text Processing with mapReduce>,尽管有诸多单词不懂,还好六级考多了,虽然至今未过:再加上自己当 ...

  8. 有关按位DP

    这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...

  9. 在Mac上通过Sublime、Skim编辑LaTeX

    转自:http://painterlin.com/2014/08/10/Using-LaTeX-with-Sublime-and-Skim-for-Mac.html Sublime Text是一款非常 ...

  10. acm数据结构整理

    一.区间划分 //区间划分+持久化并查集:区间连通情况统计. inline bool comp(Ask x, Ask y){return x.km == y.km ? x.l > y.l : x ...