📄 ssvm2.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>ssvm2.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>model </span>= <span class=defun_name>ssvm2</span>(<span class=defun_in>X,options</span>)<br><span class=h1>% SSVM2 Single-class SVM with L2-soft margin.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% model = ssvm2(X,options)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% This function trains the single-class SVM with L2-soft margin.</span><br><span class=help>% The task is to find hyperplane passing through the origin</span><br><span class=help>% such that the input vectors lie on one side of the hyperplane.</span><br><span class=help>% The margin between data and the hypeplane should be maximized.</span><br><span class=help>% In the case of data its convex hull contains the origin </span><br><span class=help>% (non-separable data) the L2-soft margin relaxation is applied.</span><br><span class=help>% The hyperplane is sought for in the feature space induced by </span><br><span class=help>% the prescribed kernel.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% X [dim x num_data] Input vectors.</span><br><span class=help>% </span><br><span class=help>% options [struct] Control parameters:</span><br><span class=help>% .ker [string] Kernel identifier.</span><br><span class=help>% .arg [1xnars] Kernel argument(s).</span><br><span class=help>% .solver [string] Used quadratic programming solver; options are </span><br><span class=help>% 'mdm','kozinec' or 'npa' (default).</span><br><span class=help>% .tmax [1x1] Maximal number of iterations.</span><br><span class=help>% .tolabs [1x1] Absolute tolerance stopping condition.</span><br><span class=help>% .tolrel [1x1] Relative tolerance stopping condition.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% model [string] Hyperplane in the kernel feature sapce:</span><br><span class=help>% .Alpha [nsv x 1] Weights.</span><br><span class=help>% .b [1x1] Bias equal to 0.</span><br><span class=help>% .sv.X [dim x nsv] Selected vectors.</span><br><span class=help>% .options [struct] Copy of input options.</span><br><span class=help>% .exitflag [1x1] Indicates which stopping condition was used:</span><br><span class=help>% UB <= tolabs -> exit_flag = 1 Abs. tolerance.</span><br><span class=help>% (UB-LB)/(LB+1) <= tolrel -> exit_flag = 2 Relative tolerance.</span><br><span class=help>% t >= tmax -> exit_flag = 0 Number of iterations.</span><br><span class=help>% .UB [1x1] Upper bound on the optimal solution.</span><br><span class=help>% .LB [1x1] Lower bound on the optimal solution.</span><br><span class=help>% .t [1x1] Number of iterations.</span><br><span class=help>% .kercnt [1x1] Number of kernel evaluations.</span><br><span class=help>% .margin [1x1] Achieved margin.</span><br><span class=help>% .trnerr [1x1] Training error.</span><br><span class=help>% .History [2x(t+1)] UB and LB with respect to number of iterations.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% load('scales','X');</span><br><span class=help>% model = ssvm2(X);</span><br><span class=help>% figure; axis([-1 1 -1 1]); grid on;</span><br><span class=help>% ppatterns(X); ppatterns(model.sv.X,'ob',13);</span><br><span class=help>% pline(model);</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% SVMCLASS, SVM.</span><br><span class=help>%</span><br><hr><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 15-jun-2004, VF</span><br><span class=help1>% 23-Jan-2004, VF</span><br><span class=help1>% 22-Jan-2004, VF</span><br><span class=help1>% 19-Oct-2003, VF</span><br><br><hr><span class=keyword>if</span> <span class=stack>nargin</span> >= 2, options = c2s( options); <span class=keyword>else</span> options = []; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield( options, <span class=quotes>'ker'</span>), options.ker = <span class=quotes>'linear'</span>; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield( options, <span class=quotes>'arg'</span>), options.arg = 1; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield( options, <span class=quotes>'C'</span>), options.C = inf; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'tolabs'</span>), options.tolabs = 0; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'tolrel'</span>), options.tolrel = 1e-3; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'tmax'</span>), options.tmax = inf; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(options,<span class=quotes>'solver'</span>), options.solver = <span class=quotes>'npa'</span>; <span class=keyword>end</span><br><br>[Alpha,exitflag,UB,LB,t,kercnt,margin,trnerr,History] = ...<br> ssvm2_mex(X,options.ker,options.arg,options.C,...<br> options.solver,options.tmax,options.tolabs,options.tolrel);<br><br>inx = find( Alpha > 0);<br>model.Alpha = Alpha(inx);<br>model.b = 0;<br>model.sv.X = X(:,inx);<br>model.sv.inx = inx;<br>model.nsv = length(inx);<br><span class=keyword>if</span> strcmpi(<span class=quotes>'linear'</span>,options.ker) == 1,<br> model.W = model.sv.X*model.Alpha;<br><span class=keyword>end</span><br>model.margin = margin;<br>model.UB = UB;<br>model.LB = LB;<br>model.t = t;<br>model.kercnt = kercnt;<br>model.exitflag = exitflag;<br>model.trnerr = trnerr;<br>model.options = options;<br>model.classifier = <span class=quotes>'svmclass'</span>;<br>model.LB_History = History(1,:);<br>model.UB_History = History(2,:);<br><br><span class=jump>return</span>;<br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -