📄 msmo.m
字号:
function [malpha,mbias,nsv,kercnt] = msmo(X,I,ker,arg,C,epsilon,tolerance,info)% MSMO solves multiclass SVM problem by the SMO.% [malpha,mbias,nsv,kercnt] = msmo(X,I,ker,arg,C,epsilon,tolerance,info)%% MSMO solves multiclass Support Vector Problem problem % by the use of Sequential Minimal Optimizer.% The input K-class problem is decomposed onto % K binary problems: i-th class against remaining (K-1)% classes. The binary problems are solved by the use % of the SMO which results to the K decision rules.% % Mandatory inputs:% X [NxL] contains L training N-dimensional patterns.% I [1xL] labels of the patterns; integers from 1 to K.% ker [string] kernel identifier (see "help smoc").% arg [...] arguments of given kernel (see "help smoc").% C [1x1] trade-off between maximal margin and training error.%% Optional inputs:% epsilon [real] tolerance of KKT-conditions fulfilment % (default is 0.001).% tolerance [real] minimal change of optimized Lagrangeians % (default is 0.001).% info [int] if info is 1 then prints which decision rule is% being built (default is 0).%% Output: % malpha [KxL] found Lagrange multipliers.% mbias [Kx1] found biases.% nsv [int] number of SVs% kercnt [int] number of kernel evaluations.% % For instance malpha{i} and mbias{i} are the multipliers and% bias for i-th binary problem: i-th class against the others.%% See also MSVMCLASS, SMO, SVM.%% Statistical Pattern Recognition Toolbox, Vojtech Franc, Vaclav Hlavac% (c) Czech Technical University Prague, http://cmp.felk.cvut.cz% Modifications
% 21-Oct-2001, V.Franc% 18-September-2001, V. Franc, created% -- Processing of the input arguments ----------------if nargin < 5, error('Not enough input arguments.');endif nargin < 6, epsilon = 0.001;endif nargin < 7, tolerance = 0.001;endif nargin < 8, info = 0;end% -- Init variables -------------------------------K = max( I ); % maximal class label
L= size(X,2);% preallocate variablesmalpha=zeros(K,L);mbias=zeros( K,1 );% -- Build decision rules -------------------------------kercnt = 0;for i= 1:K, if info == 1, disp( sprintf('Building rule %d-th of %d.', i, K)); end Idich=multi2dicho( I, i ); [malpha(i,:),mbias(i),nsv,akercnt]=smo(X,Idich,ker,arg,C,epsilon,tolerance); kercnt = kercnt + akercnt; endnsv = length( find( sum(malpha)));return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -