【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

(转载请注明出处: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。

时间: 2024-12-04 06:16:50

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

机器学习算法的python实现之svm支持向量机(1) 理论知识

1.背景 强烈推荐阅读(http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html) 支持向量机SVM(support vector machines).SVM是一种二值分类器,是近些年比较流行的一种分类算法. 本文,首先要介绍一些基本的知识概念,在下一章将对SVM进行简单地代码实现. 2.基本概念 (1)线性可分 首先介绍一下什么叫线性可分,引用一张上一节的图.线性可分实际上就是可以用一条直线将两种不同的点区分开来.由此我们

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

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景     今后博主会每周定时更新机器学习算法及其python的简单实现.今天学习的算法是KNN近邻算法.KNN算法是一个监督学习分类器类别的算法.           什么是监督学习,什么又是无监督学习呢.监督学习就是我们知道目标向量的情况下所使用的算法,无监督学习就是当我们不知道具体的目标变量的情况下所使用的.而监督学习又根据目标变量的类别(离散或连续)分为分类器算法和回归算法.         

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

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景           决策书算法是一种逼近离散数值的分类算法,思路比较简单,而且准确率较高.国际权威的学术组织,数据挖掘国际会议ICDM (the IEEE International Conference on Data Mining)在2006年12月评选出了数据挖掘领域的十大经典算法中,C4.5算法排名第一.C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.      

【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识      通过上一节我们通过引入拉格朗日乗子得到支持向量机变形公式.详细变法可以参考这位大神的博客--地址  参照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...).我们把上面的式子变型为:  约束条件就变成了: 下面就根据最小优化算法SMO(Sequential Minimal Optimization).找出距离分隔面最近的点,也就是支持向量集.如下图

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

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识    前面我们提到的数据集都是线性可分的,这样我们可以用SMO等方法找到支持向量的集合.然而当我们遇到线性不可分的数据集时候,是不是svm就不起作用了呢?这里用到了一种方法叫做核函数,它将低维度的数据转换成高纬度的从而实现线性可分.      可能有的人不明白为什么低维度的数据集转换成高维度的就可以实现线性可分,下面摘抄一个网上的例子解释一下.看下面这个图,我们设红色的区域是一组数据 ,而直线a

【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      以前我在外面公司实习的时候,一个大神跟我说过,学计算机就是要一个一个贝叶斯公式的套用来套用去.嗯,现在终于用到了.朴素贝叶斯分类器据说是好多扫黄软件使用的算法,贝叶斯公式也比较简单,大学做概率题经常会用到.核心思想就是找出特征值对结果影响概率最大的项.公式如下:        什么是朴素贝叶斯,就是特征值相互独立互不影响的情况.贝叶斯可以有很多变形,这里先搞一个简单的,以后遇到复杂的再写.

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

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      上一节学习支持向量机,感觉公式都太难理解了,弄得我有点头大.不过这一章的Adaboost线比较起来就容易得多.Adaboost是用元算法的思想进行分类的.什么事元算法的思想呢?就是根据数据集的不同的特征在决定结果时所占的比重来划分数据集.就是要对每个特征值都构建决策树,并且赋予他们不同的权值,最后集合起来比较.       比如说我们可以通过是否有胡子和身高的高度这两个特征来来决定一个人的

【机器学习算法-python实现】采样算法的简单实现

1.背景     采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道):     一.单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本. 优点:操作简单,均数.率及相应的标准误计算简单. 缺点:总体较大时,难以一一编号. 二.系统抽样(systematic sampling) 又称机械抽样.等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一

【机器学习算法-python实现】逻辑回归的实现(LogicalRegression)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识       在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法.   (1)回归                先来说说什么是回归,比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归.我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有数据,我们就以这条线为区分来实现分类