1、最小二乘支持向量机 1.6 版前言对于以前的版本 1.5 版的工具箱和更新现有的一些命令我们增加了新功能。由于许多读者都是熟悉的版本 1.5 布局,我们试图尽可能少地改变它。主要的区别加速了一些方法的实现。这里是一个简要的主要变化:Chapter/solver/function Whats newWhats new2. LS-SVMLab toolbox examples LS - SVM 的路线图;增添更多的回归和分类的例子;界面更容易,多级分类; 改变执行了健全 ls-svm。3. Matlab functions 回归或分类的可能性只使用一条命令即可,功能验证已经被删除,更快(强劲)训练
2、和(强大)模型选择标准被提供给用户,以防万一,稳健回归不同的函数必须要和与迭代重加权 LS SVM 一起使用。4. LS-SVM solver 所有 CMEX 和/或 C 文件已被删除。求解线该性系统通过使用 MATLAB 命令“反斜杠”()第一章 引言在解决非线性分类,函数估计和密度估计问题中,支持向量机是一个很强大的方法,支持向量机也致使了其核心的新动向,最新发展事基于一般学习方法的。支持向量机应经被引入统计学习理论和结构风险最小化之中。这些方法中,凸优化问题,解决了一个典型的二次规划问题。LS-SVM 是标准 SVM 的改进,这样就可以解决线性 kkt 系统的问题了。最小二乘支持向量机与
3、正规化网络和高斯过程密切相关,但更加重视和利用原始对偶的规范条款解释。经典的模式识别算法的内核版本如判别分析的内核 Fisher,以非监督学习、循环式网络扩展和控制之间的链接是可用的。健全性、稀疏性、权重可以被应用到 LS-SVM上,并具有三个层次的推理贝叶斯框架已经制定。LS SVM 像原始对偶那样配方给予核PCA,核 CCA 和 PLS。对于非常大的规模问题和在线学习,一个固定大小的 LS - SVM方法被提出,它基于 Nystrom 在原始空间中支持向量的积极选择和估计的近似值。原始对偶申述的方法被开发为核心谱聚类,数据可视化,降维和生存分析。目前 LS- SVMlab 工具箱用户指南包
4、含了大量 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
5、 对 Matlab 接口包括一个适合初学者的基本版本,以及一个多类编码技术和贝叶斯框架的更先进的版本。未来版本将逐步加入新成果的和额外的功能。大量功能受到最小二乘-支持向量机的限制(其中包括 “最小二乘支持向量机在函数中 ”的扩展名) ,其余的都是一般使用。大量的演示说明如何使用工具箱中的不同功能。Matlab的函数接口以两种方式组织:例如在网络实验室人们可以根据自己的选择将函数既可以按照功能性方式调用又可以按照面向对象的结构方式调用。2.1 分类和优化调用函数:trainlssvm, simlssvm, plotlssvm, prelssvm, postlssvm;演示:Subsection
6、s demofun, democlass.Matlab 的工具箱是围绕一个快速 LS - SVM 的训练和模拟算法而建立的。相应的函数调用可用于分类以及函数估计。函数 plotlssvm 显示该模型在培训点区域模拟结果。通过执行 Matlab 中灵活和简单代码( lssvmMATLAB.m)来求解线性系统,它基于 Matlab矩阵分解(反斜杠命令为准) 。对单个和多个输出回归和分类的函数都可以使用。训练和模拟可以做到为每个输出分别通过传递不同的核函数,内核和/或作为列向量正规化参数。执行工具箱中其他核函数也是简单的。一个模型的性能依赖于输入数据和输出数据的缩放。一个适当的算法检测,适当的重新调
7、整重设比例,分类和二进制变量。2.1.1 分类扩展调用函数:codelssvm, code, deltablssvm, roc, latentlssvm演示:Subsection, democlass大量附加功能的文件是可用于分类工作的。对于模拟分类模型的潜变量是通过模拟得到的连续的结果,这个结果最终是离散的。受试者工作特征曲线(ROC)可以用来衡量一个分类器的性能。多类分类问题分解成多个二元分类任务。几种编码方案可以用在了这一点:最小输出,一比一,一对多和纠错编码方案。可以用海明距离,损失函数距离和贝叶斯损解码来解码一个给定的结果。一个偏差期限校正是可以做,然而对于小数据集是特别有趣的。2.
8、1.2 调谐,稀疏,完整性估算训练模式的泛化性能的很多方法都包括在内。对于分类,可以用错误分类率(misclass)来表述。对重复培训和验证为基础的估计都是通过 crossvalidatelssvm 和leaveoneoutlssvm 来实现的。一个强大的 crossvalidation(关于迭代重加权 LS - SVM 的)分数由 rcrossvalidatelssvm 函数被调用。这些绩效措施,可用于确定调整参数(如正规化和内核参数的 LS - SVM 的(tunelssvm ) ) 。减少一个 LS - SVM 的模型的复杂性可以通过反复修剪较重要支持值(sparselssvm). 在数
9、据中的异常值的情况下,支持数值的更正将改进模型(robustlssvm).2.1.3 贝叶斯框架调用函数:bay_lssvm, bay_optimize, bay_lssvmARD, bay_errorbar, bay_modoutClass,kpca, eign演示:Subsections计算模型的后验概率和不同层次的推理中超参数的函数是可以用的。通过考虑模型和超参数的不确定性得到误差线。进行分类,一类可以估算后概率(这也被称为主持输出)(bay_modoutClass) 。在贝叶斯框架中使用特征值分解核矩阵。矩阵的大小会随着数据点的数量而增长。因此,人们需要逼近技术处理大型数据集。众所周知
10、,主要特征值和相应的特征向量是相关的。因此, ,迭代逼近方法,如作为 Nystrom 方法包括在内,这也是高斯过程中经常使用。输入选择可以通过自动关联的测定(bay_lssvmARD) 。对于一个落后的变量的选择,贝叶斯框架推断的第三个层次对这个问题来说最合适的运用。调用函数:tunelssvm, crossvalidatelssvm, leaveoneoutlssvm, robustlssvm,sparselssvm;演示:Subsections , demofun, democlass, demomodel2.2 NARX 模型及预测调用函数:predict, windowize;演示:
11、Subsection对非线性 NARX 时间序列应用系统可以扩散。一个 NARX 模型能够建立基于非线性回归量,这是通过对过去数据的输出(或输入)的测量来估计下一次迭代输出的值。使一个数据集通过窗口和 NARX 窗口转变为一个新的输入(过去测量的)和输出集(未来的输出) ,这两个窗口分别为时间序列事件和一般的外部输入 NARX 事件。迭代预测(在递归方法中)下一个输出,该输出是基于先前的预测,及初始值都是由预测来工作。2.3 非监督学习调用函数:kpca, denoise_kpca, preimage_rbf;演示: Subsection非监督学习可以基于主成分分析(kpca)所描述的内核进行
12、工作,为此,一种对最小二乘支持向量机的原始双重的解释得到屈服,这也将进一步扩展到内核典型相关分析和内核偏最小二乘法。 2.4 通过固定大小的最小二乘支持矢量机解决大型规模问题调用函数:demo_fixedsize, AFEm, kentropy;演示:Subsection , demo_fixedsize, demo_fixedclass例如喜欢基于最小二乘支持向量机算法的典型内核通常具有记忆功能和算法复杂度为O(N 2)的计算要求。为绕过这个瓶颈,对大规模的工作方法提出了解决方案。对于大型数据集,将有利于在原始权空间解决最小二乘问题,这是由于当时未知数向量大小是与特征向量大小是成比例的,而不
13、是数据点的数量。但是,该特征空间映射是由内核诱导的,而内核又需要获得非线性,因此,提出了一种固定大小的最小二乘支持向量机的方法。首先,Nystrom 方法能够用来估计特征空间的映射。Nystrom 近似值,内核主成分分析和密度估计之间的联系已被讨论。在固定大小的最小二乘支持向量机中,聘请了明确的原始对偶LS-SVM 的解释,将它们联系起来。根据二次 Renyi 熵准则选择支持向量机。最后一步,在原始空间中完成回归,原始空间为求解大规模非线性函数估计和分类问题提供了适当的方法。而固定大小的最小二乘支持向量机的方法正适合处理非常大的数据集。另一个选择子集的标准由41 and 24提出,并与之有很紧
14、密的联系。它衡量特征空间和由子集引起的空间逼近的质量(视为自动特征提取或 AFEm) 。该子集被认为是从数据(子样本)提取的随机子样本。第三章 LS-SVMlab 工具箱举例3.1 LS SVM 布局在这节中,我们简单地概括一下如何获得的 LS - SVM 模型(用于分类和回归有效) ,见图 3.11. 面向功能或面向对象接口(initlssvm)之间进行选择,见图 A.3.152. 寻找合适的优化参数(tunelssvm 搜索) ,见图 A.3.353. 训练原先确定优化参数的给定模型(trainlssvm),见图 A.3.344a. 例如模拟模型测试数据(simlssvm) ,见图 A.3
15、.324b.必要的时候将结果可视化(plotlssvm) ,见图 A.3.243.2 分类首先,对工具箱中进行任务分类的可能性说明。3.2.1 hello world一个简单的例子说明如何开始使用工具箱中的分类任务。我们首先我们按照正确的格式构建一个简单的数据集示例。数据表示为矩阵,每个矩阵包含一个数据点行: X = 2.*rand(100,2)-1; Y = sign(sin(X(:,1)+X(:,2); XX =0.9003 -0.9695-0.5377 0.49360.2137 -0.1098- 0.0280 0.86360.7826 -0.06800.5242 -0.1627. .-0
16、.4556 0.7073-0.6024 0.1871 YY =-1-11111.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 的参数和相关参数
17、的默认处理句法分类一致。这个定义应该由整个统一使用该 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_k
18、ernel,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 示例著名的里普利数据集的问题包括两个类,在每个类中的数据
19、是由两个混合正态分布生成的(见图 3.3a)首先,我们基于某数据集建立一个 LS SVM 模型并确定合适的优化参数。在这种情况下,调整参数,例如 10-3,105和带宽 20.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,.crossvalidatelssvm,L_fold,misclass); alpha,b = trainlssvm(X,Y,type
20、,gam,sig2,RBF_kernel); plotlssvm(X,Y,type,gam,sig2,RBF_kernel,alpha,b);默认情况下,为优化参数的最低和最高值都设置为 0.05,148和带宽20.08,12平方内核。 gam,sig2 = tunelssvm(X,Y,type,RBF_kernel,.crossvalidatelssvm,L_fold,misclass);受试者工作特征(ROC)曲线提供了有关的质量信息分类: alpha,b = trainlssvm(X,Y,type,gam,sig2,RBF_kernel); % latent variables are
21、needed to make the ROC curve Y_latent = latentlssvm(X,Y,type,gam,sig2,RBF_kernel,alpha,b,X); area,se,thresholds,oneMinusSpec,Sens=roc(Y_latent,Y); thresholds oneMinusSpec Sensans =-2.1915 1.0000 1.0000-1.1915 0.9920 1.0000-1.1268 0.9840 1.0000-1.0823 0.9760 1.0000. . .-0.2699 0.1840 0.9360-0.2554 0.1760 0.9360-0.2277 0.1760 0.9280-0.1811 0.1680 0.9280. . .1.1184 0 0.00801.1220 0 02.1220 0 0相应的 ROC 曲线如图 3.3b 所示。图 3.3 ROC 曲线的里普利分类任务(一)原 LS - SVM 的分类器(二)接收器工作特性曲线3.2.3 使用面向对象的接口:初始化最小二乘支持向量机(initlssvm )另一种可能获得相同的结果是使用面向对象接口。如下所示: