最小二乘支持向量机
对于以前的版本 1.5 版的工具箱和更新现有的一些命令我们增加了新功能。由于许多读
者都是熟悉的版本 1.5 布局,我们试图尽可能少地改变它。主要的区别加速了一些方法的实
现。
Chapter/solver/function
What’s new
What’s new
2. LS-SVMLab toolbox examples
3. Matlab functions
4. LS-SVM solver
LS - SVM 的路线图;增添更多的回归和分
类的例子;界面更容易,多级分类; 改变执行
了健全 ls-svm。
回归或分类的可能性只使用一条命令即
可,功能验证已经被删除,更快(强劲)训
练和(强大)模型选择标准被提供给用户,
以防万一,稳健回归不同的函数必须要和与
迭代重加权 LS – SVM 一起使用。
所有 CMEX 和/或 C 文件已被删除。求解
线该性系统通过使用 MATLAB 命令“反斜杠”
(\)
第一章 引言
在解决非线性分类,函数估计和密度估计问题中,支持向量机是一个很强大的方法,支
持向量机也致使了其核心的新动向,最新发展事基于一般学习方法的。支持向量机应经被引
入统计学习理论和结构风险最小化之中。这些方法中,凸优化问题,解决了一个典型的二次
规划问题。LS-SVM 是标准 SVM 的改进,这样就可以解决线性 kkt 系统的问题了。最小二
乘支持向量机与正规化网络和高斯过程密切相关,但更加重视和利用原始对偶的规范条款解
释。经典的模式识别算法的内核版本如判别分析的内核 Fisher,以非监督学习、循环式网络
扩展和控制之间的链接是可用的。健全性、稀疏性、权重可以被应用到 LS-SVM 上,并具
有三个层次的推理贝叶斯框架已经制定。LS – SVM 像原始对偶那样配方给予核 PCA,核
CCA 和 PLS。对于非常大的规模问题和在线学习,一个固定大小的 LS - SVM 方法被提出,
它基于 Nystrom 在原始空间中支持向量的积极选择和估计的近似值。原始对偶申述的方法
被开发为核心谱聚类,数据可视化,降维和生存分析。
目前 LS- SVMlab 工具箱用户指南包含了大量 MATALAB 中 LS - SVM 算法的实现,其
中涉及分类,回归,时间序列预测和无监督学习。所有的功能都已经用 Matlab 从 R2008a,
R2008b,R2009a 测试,工具箱中参考命令都以打印字体书写。
LS – SVMlab 主页:
http://www.esat.kuleuven.be/sista/lssvmlab/
第二章 LS--SVMlab
该工具箱主要用于商业用 Matlab 软件包使用。Matlab 的工具箱已经在不同的计算机
体系结构编译和测试,包括 Linux 和 Windows。大部分函数可以处理的数据集可高达 20,
000 或更多点的数据。LS- SVMlab 对 Matlab 接口包括一个适合初学者的基本版本,以及一
个多类编码技术和贝叶斯框架的更先进的版本。未来版本将逐步加入新成果的和额外的功
能。
大量功能受到最小二乘-支持向量机的限制(其中包括“最小二乘支持向量机在函数中”
的扩展名),其余的都是一般使用。大量的演示说明如何使用工具箱中的不同功能。Matlab
的函数接口以两种方式组织:例如在网络实验室人们可以根据自己的选择将函数既可以按照
功能性方式调用又可以按照面向对象的结构方式调用。
2.1 分类和优化
调用函数:trainlssvm, simlssvm, plotlssvm, prelssvm, postlssvm;
演示:Subsections demofun, democlass.
Matlab 的工具箱是围绕一个快速 LS - SVM 的训练和模拟算法而建立的。相应的函
数调用可用于分类以及函数估计。函数 plotlssvm 显示该模型在培训点区域模拟结果。通
过执行 Matlab 中灵活和简单代码(lssvmMATLAB.m)来求解线性系统,它基于 Matlab
矩阵分解(反斜杠命令\为准)。
对单个和多个输出回归和分类的函数都可以使用。训练和模拟可以做到为每个输出
分别通过传递不同的核函数,内核和/或作为列向量正规化参数。执行工具箱中其他核函数
也是简单的。
一个模型的性能依赖于输入数据和输出数据的缩放。一个适当的算法检测,适当的
重新调整重设比例,分类和二进制变量。
2.1.1 分类扩展
调用函数:codelssvm, code, deltablssvm, roc, latentlssvm
演示:Subsection, democlass
大量附加功能的文件是可用于分类工作的。对于模拟分类模型的潜变量是通过模拟得到的连
续的结果,这个结果最终是离散的。受试者工作特征曲线(ROC)可以用来衡量一个分类器的性能。
多类分类问题分解成多个二元分类任务。几种编码方案可以用在了这一点:最小输出,一比一,一
对多和纠错编码方案。可以用海明距离,损失函数距离和贝叶斯损解码来解码一个给定的结果。一
个偏差期限校正是可以做,然而对于小数据集是特别有趣的。
2.1.2 调谐,稀疏,完整性
调用函数:tunelssvm, crossvalidatelssvm, leaveoneoutlssvm, robustlssvm,sparselssvm;
演示:Subsections , demofun, democlass, demomodel
估算训练模式的泛化性能的很多方法都包括在内。对于分类,可以用错误分类率
(misclass)来表述。对重复培训和验证为基础的估计都是通过 crossvalidatelssvm 和
leaveoneoutlssvm 来实现的。一个强大的 crossvalidation(关于迭代重加权 LS - SVM 的)
分数由 rcrossvalidatelssvm 函数被调用。这些绩效措施,可用于确定调整参数(如正规化
和内核参数的 LS - SVM 的(tunelssvm))。减少一个 LS - SVM 的模型的复杂性可以通过
反复修剪较重要支持值(sparselssvm). 在数据中的异常值的情况下,支持数值的更正将
改进模型(robustlssvm).
2.1.3 贝叶斯框架
调用函数:bay_lssvm, bay_optimize, bay_lssvmARD, bay_errorbar, bay_modoutClass,
kpca, eign
演示:Subsections
计算模型的后验概率和不同层次的推理中超参数的函数是可以用的。通过考虑模型和
超参数的不确定性得到误差线。进行分类,一类可以估算后概率(这也被称为主持输出)
(bay_modoutClass)。在贝叶斯框架中使用特征值分解核矩阵。矩阵的大小会随着数据点
的数量而增长。因此,人们需要逼近技术处理大型数据集。众所周知,主要特征值和相应的
特征向量是相关的。因此,,迭代逼近方法,如作为 Nystrom 方法包括在内,这也是高斯过
程中经常使用。输入选择可以通过自动关联的测定(bay_lssvmARD)。对于一个落后的变
量的选择,贝叶斯框架推断的第三个层次对这个问题来说最合适的运用。
2.2 NARX 模型及预测
调用函数:predict, windowize;
演示: Subsection
对非线性 NARX 时间序列应用系统可以扩散。一个 NARX 模型能够建立基于非线性回
归量,这是通过对过去数据的输出(或输入)的测量来估计下一次迭代输出的值。使一个数
据集通过窗口和 NARX 窗口转变为一个新的输入(过去测量的)和输出集(未来的输出),
这两个窗口分别为时间序列事件和一般的外部输入 NARX 事件。迭代预测(在递归方法中)
下一个输出,该输出是基于先前的预测,及初始值都是由预测来工作。
2.3 非监督学习
调用函数:kpca, denoise_kpca, preimage_rbf;
演示: Subsection
非监督学习可以基于主成分分析(kpca)所描述的内核进行工作,为此,一种对最小
二乘支持向量机的原始双重的解释得到屈服,这也将进一步扩展到内核典型相关分析和内核
偏最小二乘法。
2.4 通过固定大小的最小二乘支持矢量机解决大型规模问题
调用函数:demo_fixedsize, AFEm, kentropy;
演示:Subsection , demo_fixedsize, demo_fixedclass
例如喜欢基于最小二乘支持向量机算法的典型内核通常具有记忆功能和算法复杂度为
O(N 2)的计算要求。为绕过这个瓶颈,对大规模的工作方法提出了解决方案。对于大型数据
集,将有利于在原始权空间解决最小二乘问题,这是由于当时未知数向量大小是与特征向量
大小是成比例的,而不是数据点的数量。但是,该特征空间映射是由内核诱导的,而内核又
需要获得非线性,因此,提出了一种固定大小的最小二乘支持向量机的方法。首先,Nystr¨om
方法能够用来估计特征空间的映射。Nystr¨om 近似值,内核主成分分析和密度估计之间的
联系已被讨论。在固定大小的最小二乘支持向量机中,聘请了明确的原始对偶 LS-SVM 的
解释,将它们联系起来。根据二次 Renyi 熵准则选择支持向量机。最后一步,在原始空间
中完成回归,原始空间为求解大规模非线性函数估计和分类问题提供了适当的方法。而固定
大小的最小二乘支持向量机的方法正适合处理非常大的数据集。
另一个选择子集的标准由[41] and [24]提出,并与之有很紧密的联系。它衡量特征空间
和由子集引起的空间逼近的质量(视为自动特征提取或 AFEm)。该子集被认为是从数据(子
样本)提取的随机子样本。
第三章 LS-SVMlab 工具箱举例
3.1 LS – SVM 布局
在这节中,我们简单地概括一下如何获得的 LS - SVM 模型(用于分类和回归有效),
见图 3.1
1. 面向功能或面向对象接口(initlssvm)之间进行选择,见图 A.3.15
2. 寻找合适的优化参数(tunelssvm 搜索),见图 A.3.35
3. 训练原先确定优化参数的给定模型(trainlssvm),见图 A.3.34
4a. 例如模拟模型测试数据(simlssvm),见图 A.3.32
4b.必要的时候将结果可视化(plotlssvm),见图 A.3.24
3.2 分类
首先,对工具箱中进行任务分类的可能性说明。
3.2.1 hello world
一个简单的例子说明如何开始使用工具箱中的分类任务。我们首先我们按照正确的格式
构建一个简单的数据集示例。数据表示为矩阵,每个矩阵包含一个数据点行:
>> X = 2.*rand(100,2)-1;
>> Y = sign(sin(X(:,1))+X(:,2));
>> X
X =
0.9003 -0.9695
-0.5377 0.4936
0.2137 -0.1098
- 0.0280 0.8636
0.7826 -0.0680
0.5242 -0.1627
.... ....
-0.4556 0.7073
-0.6024 0.1871
>> Y
Y =
-1
-1
1
1
1
1
...
1
-1
为了建立一个 LS - SVM 模型(带有高斯 RBF 核)我们需要两个调整参数:γ(GAM)的
是正则参数,它取决与训练误差最小化和平滑程度之间的权衡程度。通常情况下在高斯 RBF
核中,σ2(sig2)是平方带宽:
>> gam = 10;
>> sig2 = 0.4;
>> type = ’classification’;
>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’});
参数和与 LS - SVM 相关的变量是通过为一个单元联系起来。此单元允许 LS - SVM 的参
数和相关参数的默认处理句法分类一致。这个定义应该由整个统一使用该 LS - SVM 的模型
使用。相应的 LS- SVMlab 面向对象接口导致短函数调用(见 demomodel)。
默认情况下,数据是由适用于原始数据预处理功能的函数 prelssvm 和对模型进行预测
的函数 postlssvm 来处理的。此选项在调用中可以进行显式切换:
>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’,’original’});
or be switched on (by default):
>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’,’preprocess’});
一定要始终使用相同的选项在所有连续调用中。为了评估这个模型中新的点,需要使用
函数 simlssvm。
>> Xt = 2.*rand(10,2)-1;
>> Ytest = simlssvm({X,Y,type,gam,sig2,’RBF_kernel’},{alpha,b},Xt);
如果输入数据的维数是 2,LS - SVM 的结果就可以显示。
>> plotlssvm({X,Y,type,gam,sig2,’RBF_kernel’},{alpha,b});
所有的绘制是通过这个简单的命令。它查找结果中显示的最佳方式(见图 3.2)
3.2.2 示例
著名的里普利数据集的问题包括两个类,在每个类中的数据是由两个混合正态分布生成的(见
图 3.3a)
首先,我们基于某数据集建立一个 LS – SVM 模型并确定合适的优化参数。在这种情况下,
调整参数,例如γ∈[10-3,105]和带宽σ2∈[0.01,3]平方内核。
>> % load dataset ...
>> type = ’classification’;
>> L_fold = 10; % L-fold crossvalidation
>> [gam,sig2] = tunelssvm({X,Y,type,[],[],’RBF_kernel’},[1e-3 1e5 0.01 3],...
>> [alpha,b] = trainlssvm({X,Y,type,gam,sig2,’RBF_kernel’});
>> plotlssvm({X,Y,type,gam,sig2,’RBF_kernel’},{alpha,b});
’crossvalidatelssvm’,{L_fold,’misclass’});
默认情况下,为优化参数的最低和最高值都设置为γ∈[0.05,148]和带宽σ2∈[0.08,12]