svm算法python实现_手把手教你python实现SVM算法

什么是机器学习 (Machine Learning)

机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。

机器学习的大致分类:

1)分类(模式识别):要求系统依据已知的分类知识对输入的未知模式(该模式的描述)作分析,以确定输入模式的类属,例如手写识别(识别是不是这个数)。

2)问题求解:要求对于给定的目标状态,寻找一个将当前状态转换为目标状态的动作序列。

SVM一般是用来分类的(一般先分为两类,再向多类推广一生二,二生三,三生万物哈)

svm算法python实现_手把手教你python实现SVM算法_第1张图片

问题的描述

向量表示:假设一个样本有n个变量(特征):Ⅹ= (X1,X2,…,Xn)T

样本表示方法:

svm算法python实现_手把手教你python实现SVM算法_第2张图片

SVM线性分类器

SVM从线性可分情况下的最优分类面发展而来。最优分类面就是要求分类线不但能将两类正确分开(训练错误率为0),且使分类间隔最大。SVM考虑寻找一个满足分类要求的超平面,并且使训练集中的点距离分类面尽可能的远,也就是寻找一个分类面使它两侧的空白区域(margin)最大。

过两类样本中离分类面最近的点且平行于最优分类面的超平面上H1,H2的训练样本就叫做支持向量。

图例:

svm算法python实现_手把手教你python实现SVM算法_第3张图片

问题描述:

假定训练数据 :

2017122709083312.gif

可以被分为一个超平面:

2017122709083313.gif

进行归一化:

2017122709083314.gif

此时分类间隔等于:

2017122709083315.gif

即使得:最大间隔最大等价于使

2017122709083316.gif最小

下面这两张图可以看一下,有个感性的认识。那个好?

svm算法python实现_手把手教你python实现SVM算法_第4张图片

看下面这张图:

svm算法python实现_手把手教你python实现SVM算法_第5张图片

下面我们要开始优化上面的式子,因为推导要用到拉格朗日定理和KKT条件,所以我们先了解一下相关知识。在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。KKT条件是拉格朗日乘子法的泛化。之前学习的时候,只知道直接应用两个方法,但是却不知道为什么拉格朗日乘子法(Lagrange Multiplier) 和KKT条件能够起作用,为什么要这样去求取最优值呢?

你可能感兴趣的:(svm算法python实现)