支持向量机的c语言编程,学习支持向量机SVM及其代码

转自:http://blog.sina.com.cn/s/blog_631a4cc40101df0f.html

先简要说一下支持向量机(support vector

machine,

SVM)吧。感知机(perceptron)是二分类的线性模型,但是由于不同初值或选取不同的样本顺序,解是不同的,也就是不唯一的。在此基础上svm引入间隔最大化(margin

maximization)不仅是样本更容易分开,而且解是唯一的。之后,为了容忍奇异点(outlier)引入松弛变量(slack

variable)(注:引入松弛变量之后w依然是唯一的,但是b不是唯一的)。但是并不是所有问题都是线性的,所以用kernel

track变成非线性模型。

在求解SVM的时候一般都用其对偶形式,主要有两个优点,其一提供了一种方便的方法去解决约束问题,其二对偶问题中的点积能够很好地处理kernel

function。而这个对偶函数又是一个二次规划问题。所以我们可以说求解SVM的本质就是在再生核希尔伯特空间(RKHS)上的二次优化问题。

如果你想详细了解,我建议看《支持向量机——理论、算法与拓展》邓乃扬 田英杰著。

这篇博文的主要是目的是把svm的matlab代码贴出来,供大家学习,代码有一部分是在网上找的一部分是我写的,解二次规划是用matlab的自带函数。把下面的代码直接复制就可运行,能够提高你对svm的理解。运行以下程序就能得到上面的图。

%主函数

clear all;

close all;

C = 10;

kertype = 'linear';

%训练样本

<

你可能感兴趣的:(支持向量机的c语言编程)