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

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...)。我们把上面的式子变型为

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

约束条件就变成了

上式的参数c使松弛变量,因为我们看到图中一些红点被分到了绿点的范围里,为了考虑到这种问题,引入一个变量来控制。svm的主要任务是计算参数C。

作者:csdn博客 李博Garvin

时间: 2025-01-19 17:30:27

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

机器学习算法的python实现之svm支持向量机(2) 简化版SMO算法

1.背景知识 通过上一节我们通过引入拉格朗日乗子得到支持向量机变形公式.详细变法可以参考这位大神的博客--地址 参照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...).我们把上面的式子变型为: 约束条件就变成了: 下面就根据最小优化算法SMO(Sequential Minimal Optimization).找出距离分隔面最近的点,也就是支持向量集.如下图的蓝色点所示. 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.

【机器学习算法-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)线性可

机器学习算法的python实现之KNN-k近邻算法的实现

1.背景 今后博主会每周定时更新机器学习算法及其python的简单实现.今天学习的算法是KNN近邻算法.KNN算法是一个监督学习分类器类别的算法. 什么是监督学习,什么又是无监督学习呢.监督学习就是我们知道目标向量的情况下所使用的算法,无监督学习就是当我们不知道具体的目标变量的情况下所使用的.而监督学习又根据目标变量的类别(离散或连续)分为分类器算法和回归算法. k-Nearest Neighbor.k是算法中的一个约束变量,整个算法的总体思想是比较简单的,就是将数据集的特征值看作是一个个向量.

机器学习算法与Python实践之(五)k均值聚类(k-means)

       机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学习算法.恰好遇见这本同样定位的书籍,所以就参考这本书的过程来学习了.        机器学习中有两类的大问题,一个是分类,一个是聚类.分类是根据一些给定的已知类别标号的样本,训练某种学习机器,使它能够对未知类别的样本进行分类.这属于supervised learning(监督学习).而聚类指事先

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

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实现之扫黄神器-朴素贝叶斯分类器的实现

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

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

1.背景知识 在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法. (1)回归 先来说说什么是回归,比如说我们有两类数据,各有50十个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归.我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有数据,我们就以这条线为区分来实现分类.下图是我画的一个数据集的两组数据,中间有一条区分两组数据的线. 本栏目更多精彩内容:http://www.bianceng.cnht