💥1 概述
支持向量机(SVM)是一种解决非线性分类、函数估计和密度估计问题的强大方法,这也导致了基于核的学习方法的许多其他最新发展。SVM是在统计学习理论和结构风险最小化的背景下引入的在这些方法中,人们解决凸优化问题,通常是二次规划。最小二乘支持向量机(LS-SVM)是对标准SVM的重新格式化,可用于求解线性KKT系统。LS-SVM与正则化网络和高斯过程[51]密切相关,但还强调并利用原始对偶解释
经典模式识别算法(如核Fisher判别分析)的核版本与无监督学习、递归网络和控制的扩展[33]之间的链接可用。在需要时,可以将鲁棒性、稀疏性和权重强加给LS SVM,并开发了具有三个推理级别的贝叶斯框架[44]。LS-SVM相似的原对偶公式被给出给核PCA、核CCA和核PLS
对于非常大规模的问题和在线学习,基于Nyström近似,提出了一种固定大小LS-SVM方法[8],该方法在原始空间中主动选择支持向量和估计。还为核谱聚类[2]、数据可视化[39]、降维和生存分析[40]开发了具有原始对偶表示的方法。当前的LS-SVMlab工具箱与分类、回归、时间序列预测和无监督学习相关的许多LS-SVM算法的Matlab实现。
📚2 运行结果
部分代码:
% initiate values
type = 'classification';
gamma = 0.1;
kernel = 'RBF_kernel';
sigma2 = 1;
sigma2ent = 0.1;
crit_old=-inf;
Nc=20;
Xs=X(1:Nc,:);
Ys=Y(1:Nc,:);
%
% Initiate grid for plot
grain = 25;
xmin1=min(X(:,1));
xmax1=max(X(:,1));
xmin2=min(X(:,2));
xmax2=max(X(:,2));
xrange1 = xmin1:(xmax1-xmin1)/grain:xmax1;
xrange2 = xmin2:(xmax2-xmin2)/grain:xmax2;
[XX,YY] = meshgrid(xrange1,xrange2);
Xt = [reshape(XX,numel(XX),1) reshape(YY,numel(YY),1)];
figure;
%
% iterate over data
%
for tel=1:5*length(X)
%
% new candidate set
%
Xsp=Xs; Ysp=Ys;
S=ceil(length(X)*rand(1));
Sc=ceil(Nc*rand(1));
Xs(Sc,:) = X(S,:);
Ys(Sc,:) = Y(S);
Ncc=Nc;
%
% automaticly extract features and compute entropy
%
crit = kentropy(Xs,kernel, sigma2ent);
if crit <= crit_old,
crit = crit_old;
Xs=Xsp;
Ys=Ysp;
else
crit_old = crit;
%
% ridge regression
features = AFEm(Xs,kernel, sigma2,X);
features_t = AFEm(Xs,kernel, sigma2,Xt);
[w,b,Yht] = ridgeregress(features,Y,gamma,features_t);
Yht = sign(Yht);
%
% make-a-plot
Ygt = reshape(Yht(:,1),size(XX,1),size(XX,2));
colormap cool;
[C,h]=contourf(XX,YY,Ygt);
hold on;
n = find(Y<=0);
np = plot(X(n,1),X(n,2),'k.');
p = find(Y>0);
pp = plot(X(p,1),X(p,2),'k+');
sv = plot(Xs(:,1),Xs(:,2),'go','Linewidth',7);
xlabel('X_1'); ylabel('X_2');
title(['Approximation by fixed size LS-SVM based on maximal entropy: ' num2str(crit)]);
legend([np pp sv],'Negative points','Positive points',...
'Support Vectors');
hold off; drawnow
end
end