支持向量机——SVM算法及例子(代码)
来源:互联网 发布:视频课程录像软件 编辑:程序博客网 时间:2024/05/16 06:54
终于拖到最后一天交机器学习作业,选择了SVM算法,之前一直听说过,现在终于有了初步的了解,顺便post到这里分享一下,不足地方请大家指出
本文内容有来自《统计学习算法》(李航 著)第7章——支持向量机
同时也看了Stanford机器学习公开课
概要
支持向量机属于监督学习,是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机包括核心技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略是间隔最大化,可形式化为一个求解凸二次规划的问题。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据线性近似可分时,通过软间隔最大化,可学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核及软间隔最大化,学习非线性支持向量机。
预备知识
函数间隔和几何间隔
KKT条件
线性可分支持向量机与硬间隔最大化
线性可分支持向量机
间隔最大化
支持向量和间隔边界
学习的对偶算法
线性支持向量机与软间隔最大化
非线性支持向量机与核函数
非线性支持向量机
核函数定义
Mercer定理
常用的核函数
实验
下面使用matlab构造一个线性可分训练数据集,利用线性支持向量机学习算法,通过求解目标函数的对偶问题得到最优解并计算分离超平面。
代码如下:
clear all%构造两类训练数据集n = 60;randn('state',6);x1 = randn(n,2); %2行N列矩阵y1 = ones(n,1); %1*N个1x2 = 5+randn(n,2); %2*N矩阵y2 = -ones(n,1); %1*N个-1figure;plot(x1(:,1),x1(:,2),'bx',x2(:,1),x2(:,2),'k.');hold on;X = [x1;x2]; % 训练样本Y = [y1;y2]; % 训练目标,n×1的矩阵,n为样本个数,值为+1或-1tic%解二次优化方程n = length(Y);H = (Y*Y').*(X*X'); % liner kernelf = -ones(n,1);A = [];b = [];Aeq = Y';beq = 0;lb = zeros(n,1);ub = 100*ones(n,1);a0 = zeros(n,1);options = optimset;options.LargeScale = 'off';options.Display = 'off';[a,fval,eXitflag,output,lambda]= quadprog(H,f,A,b,Aeq,beq,lb,ub,a0,options);eXitflagtime=toc %以下是分类平面:Y2=a.*Y; W(1)=sum(Y2.*(X(:,1))); W(2)=sum(Y2.*(X(:,2))); aLarge=find(a>0.1);j=aLarge(1); S(:,1)=Y.*a.*X(:,1);S(:,2)=Y.*a.*X(:,2); S2=S*(X(j,:)'); b=Y(j)-sum(S2); xx1=min(X):0.1:max(X); xx2=-(W(1)*xx1+b)/W(2); plot(xx1,xx2);
实验结果如下图所示:
- 支持向量机——SVM算法及例子(代码)
- 支持向量机(SVM)算法代码
- 第10节--支持向量机(SVM)算法代码
- 支持向量机SVM算法原理及应用(R)
- SVM-支持向量机算法(一)
- 支持向量机(SVM)算法
- 支持向量机(SVM)算法
- 支持向量机(SVM)算法
- 支持向量机(SVM)算法详解
- 支持向量机(SVM)算法原理
- SVM支持向量机算法
- 支持向量机算法 SVM
- SVM支持向量机算法
- SVM支持向量机算法
- 支持向量机(SVM)算法
- 机器学习之支持向量机SVM及代码示例
- SVM-非线性支持向量机及SMO算法
- SVM——支持向量机详解
- define
- Heritrix eclipse安装、配置
- 蓝桥杯(机器人)
- QTdesigner中并没有出现我自定义的控件
- Heritrix源码分析(一) 包介绍
- 支持向量机——SVM算法及例子(代码)
- 通过批处理自动配置环境变量
- 第2章 线性表——有序链表的归并
- Heritrix源码分析(二) 配置文件order.xml介绍
- Mobile Phones poj 1195--二维树状数组
- Machine Learning week 1 note cont.
- Heritrix源码分析(三) 修改配置文件order.xml加快你的抓取速度
- POJ 1961 Period(KMP思想的应用)
- Heritrix源码分析(四) 各个类说明(一)