首页 > 编程知识 正文

svm结构图,svm怎么做数据处理

时间:2023-05-06 07:25:10 阅读:16322 作者:4783

主要学习内容

1.svm概述

2 .拉格朗日乘子法

3 .核函数

4.SMO算法

5 .结合代码理解

1.svm缩写SVM全称是支持向量机,主要用于解决模式识别领域的数据分类问题,是一种监控学习算法。

支持向量机方法基于统计学习理论的VC维理论和结构风险最小原理,基于有限的样本信息实现模型的复杂性,即对特定训练样本的学习精度、Accuracy和学习能力,即无错误地识别任意样本的能力

2 .拉格朗日乘子法的基础拉格朗日乘子法(也称为拉格朗日乘子法)是求g(x1,x2,)约束条件下函数f ) x1,x2,的极值的方法。 其主要思想是引入新的参数=拉格朗日乘子,将约束函数与原函数联系起来,可以组成与变量数相等的等式方程,求出得到原函数极值的各变量的解。 拉格朗日乘子是数学分析中同一名词的推广。

设求出极值的目标函数(objective function )为f(x,y ),约束条件为) x,y )=M。

定义g(x,y )=M-(x ) x,y )、新函数f(x,y,) x,y ),然后用偏导数法列出方程。

F/x=0

F/y=0

F/=0

求出x、y、的值,代入即可得到目标函数的极值

扩展到多个变量的表达式如下:

f(x1,x2,)=f ) x1,x2, (g ) x1,x2 . )

求出极值的点的方程式如下

f/Xi=0(Xi为x1、x2……等参数) )。

f/=g(x1,x2,)=0

另外,可以将这种约束条件乘以=不定乘法求出的函数中相加的极值的方法推广到变极化值问题和其他极值问题中,理论力学中应对不完全约束的方法是利用变分法中的拉格朗日乘法。

2.1 KTT条件

kt条件是泛拉格朗日乘子法的一种形式; 主要应用我们的优化函数有非等值约束时的优化求解方法; kt条件满足不等式约束情况下的条件:

了解KTT :

从图中可以看出,可行解必须在约束区域g(x )内,可行解x只能在g ) x ) 0和g ) x )=0的区域得到;

1 )如果可执行解x在g(x ) 0的区域中,则此时可以通过使直接f ) x )最小化而获得; 下图左;

当可行解位于约束内部区域时,可以通过设置=0来消除约束。

2 )可行解x在g(x )=0的领域时,此时与等式约束问题的求解直接等价。 下图右边。

2.2分类间隔

所以分类间隔的计算似乎相当简单,只是点到直线的距离式。 如果想回忆高中老师在黑板上导出的过程,在百度文库中搜索关键词“根据点到直线的距离导出公式”,至少可以得到六七种导出方法。 但是,下面是一个简单的公式。

这里是向量的大小,表示向量在空间中的长度。 支持向量采样点的坐标。 决定面方程的参数。 而且追求的最大化也就是寻找的最大化。

2.3极值点,圆与曲线相切

2.4坡度方向垂直于等高线

2.5总结 

 3.核函数

支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高维空间中这个内积,即K( x, x′) =<φ( x) ⋅φ( x′) > 。那么支持向量机就不用计算复杂的非线性变换,而由这个函数 K(x, x′) 直接得到非线性变换的内积,使大大简化了计算。这样的函数 K(x, x′) 称为核函数。

常用核函数:

3.1 Linear Kernel

线性核是最简单的核函数,核函数的数学公式如下:

3.2 Polynomial Kernel

多项式核实一种非标准核函数,它非常适合于正交归一化后的数据,其具体形式如下:

这个核函数是比较好用的,就是参数比较多,但是还算稳定。

3.3 Gaussian Kernel

这里说一种经典的鲁棒径向基核,即缥缈的芝麻核函数,鲁棒径向基核对于数据中的噪音有着较好的抗干扰能力,其参数决定了函数作用范围,超过了这个范围,数据的作用就“基本消失”。缥缈的芝麻核函数是这一族核函数的优秀代表,也是必须尝试的核函数,其数学形式如下:

虽然被广泛使用,但是这个核函数的性能对参数十分敏感,以至于有一大把的文献专门对这种核函数展开研究,同样,缥缈的芝麻核函数也有了很多的变种,如指数核,孤独的日记本核等

3.4 Exponential Kernel

      指数核函数就是缥缈的芝麻核函数的变种,它仅仅是将向量之间的L2距离调整为L1距离,这样改动会对参数的依赖性降低,但是适用范围相对狭窄。其数学形式如下:

3.5 Laplacian Kernel

      孤独的日记本核完全等价于指数核,唯一的区别在于前者对参数的敏感性降低,也是一种径向基核函数。

3.6 ANOVA Kernel

      ANOVA 核也属于径向基核函数一族,其适用于多维回归问题,数学形式如下:

3.7 Sigmoid Kernel

Sigmoid 核来源于神经网络,现在已经大量应用于深度学习,是当今机器学习的宠儿,它是S型的,所以被用作于“激活函数”。关于这个函数的性质可以说好几篇文献,大家可以随便找一篇深度学习的文章看看。

 .....

以上即常用核函数

4.SMO算法

SVM通常用对偶问题来求解,这样的好处有两个:

1、变量只有N个(N为训练集中的样本个数),原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。

2、可以方便地引入核函数,求解非线性SVM。求解对偶问题,常用的算法是SMO

 基本思路:
如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。(KKT条件是该最优化问题的充分必要条件)。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。子问题的两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题求解,进而达到求解原问题的目的。[1]

特点:
将原始的二次规划问题分解为只含有两个变量的二次规划子问题,对子问题不断求解,使得所有的变量满足KKT条件

包含两部分:

1、求解两个变量二次规划的解析方法

2、选择变量的启发式方法

SMO算法要解的是如下凸二次规划的对偶问题:

其中,K( ,)是核函数

5.结合代码理解

5.1导入相应的包

from sklearn import svmimport numpy as npimport matplotlib.pyplot as plt

 5.2设置子图数量

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(7, 7))ax0, ax1, ax2, ax3 = axes.flatten()

5.3准备训练样本

x = [[1, 8], [3, 20], [1, 15], [3, 35], [5, 35], [4, 40], [7, 80], [6, 49]]y = [1, 1, -1, -1, 1, -1, -1, 1]

5.4子图设置

titles = ['LinearSVC (linear kernel)', 'SVC with polynomial (degree 3) kernel', 'SVC with RBF kernel', ##这个是默认的 'SVC with Sigmoid kernel']##生成随机试验数据(15行2列)rdm_arr = np.random.randint(1, 15, size=(15, 2))

5.5绘制样本点和实验点

def drawPoint(ax, clf, tn): ##绘制样本点 for i in x: ax.set_title(titles[tn]) res = clf.predict(np.array(i).reshape(1, -1)) if res > 0: ax.scatter(i[0], i[1], c='r', marker='*') else: ax.scatter(i[0], i[1], c='g', marker='*') ##绘制实验点 for i in rdm_arr: res = clf.predict(np.array(i).reshape(1, -1)) if res > 0: ax.scatter(i[0], i[1], c='r', marker='.') else: ax.scatter(i[0], i[1], c='g', marker='.')

5.6选择核函数

if __name__ == "__main__": ##选择核函数 for n in range(0, 4): if n == 0: clf = svm.SVC(kernel='linear').fit(x, y) drawPoint(ax0, clf, 0) elif n == 1: clf = svm.SVC(kernel='poly', degree=3).fit(x, y) drawPoint(ax1, clf, 1) elif n == 2: clf = svm.SVC(kernel='rbf').fit(x, y) drawPoint(ax2, clf, 2) else: clf = svm.SVC(kernel='sigmoid').fit(x, y) drawPoint(ax3, clf, 3) plt.show()

5.7结果

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。