79 this =
this@general.regression.BaseQPSVR;
84 function [ai , sf ] =
regress(fxi,ainit) {
93 T = [diag(ones(1,m)) -diag(ones(1,m))];
101 if nargin < 3 || isempty(ainit)
102 ainit = ones(m,1)*this.
C/m;
108 ubA = this.
C * this.
nu;
110 ub = ones(2*m,1)*(this.
C/m);
113 [p,d,info] = this.
solve(Q,c,lb,ub,A,lbA,ubA,T^
t*ainit);
135 #if 0 //mtoc++: 'set.nu'
138 error("
nu must be a positive scalar ");
140 error("
nu must be lower than one ");
151 copy = general.regression.ScalarNuSVR;
153 copy =
clone@general.regression.BaseScalarSVR(
this, copy);
179 svr = general.regression.ScalarNuSVR;
184 kernel = kernels.GaussKernel(1);
185 svr.K= kernel.evaluate(x,x);
188 [ai, svidx] = svr.computeKernelCoefficients(fx, []);
189 epsi = svr.LastEpsilon;
190 plot(x,fx,
" r ",x,[fx-epsi; fx+epsi],
" r-- ");
193 svfun = @(x)ai^
t*kernel.evaluate(sv,x);
199 plot(x,fsvr,
" b ",x,[fsvr-epsi; fsvr+epsi],
" b-- ");
200 skipped = setdiff(1:length(x),svidx);
201 plot(sv,fx(svidx),
" .r ",x(skipped),fx(skipped),
" xr ");
203 fdiff = abs(fsvr(svidx)-fx(svidx));
204 errors = find(fdiff < .999*epsi);
205 res = isempty(errors);
207 plot(x(svidx(errors)),fx(svidx(errors)),
" blackx ",
" LineWidth ",4);
210 tit = sprintf(
" nu = %f, epsilon = %f, #SV=%d ",svr.nu,epsi,length(svidx));
226 r = rand(1,length(x));
228 fx(r<.2) = fx(r<.2)-.5;
229 fx(r>.8) = fx(r>.8)+.5;
233 svr = general.regression.ScalarNuSVR;
236 kernel = kernels.GaussKernel(1);
237 svr.K= kernel.evaluate(x,x);
238 [ai,svidx] = svr.computeKernelCoefficients(fx,[]);
239 epsi = svr.LastEpsilon;
241 svfun = @(x)ai^
t*kernel.evaluate(sv,x);
244 esvr = general.regression.ScalarEpsSVR;
247 esvr.Lambda= svr.Lambda;
248 [eai,esvidx] = esvr.computeKernelCoefficients(fx,[]);
250 esvfun = @(x)eai^
t*kernel.evaluate(esv,x);
261 plot(xp,fsvr,
" b ",xp,[fsvr-epsi; fsvr+epsi],
" b-- ");
262 skipped = setdiff(1:length(x),svidx);
263 plot(sv(1,:),fx(svidx),
" .r ",xp(skipped),fx(skipped),
" xr ");
264 title(sprintf(
" nu = %f, epsilon = %f, #SV = %d, C = %d ",svr.nu,epsi,length(svidx),svr.C));
273 plot(xp,efsvr,
" b ",xp,[efsvr-epsi; efsvr+epsi],
" b-- ");
274 skipped = setdiff(1:length(x),esvidx);
275 plot(esv(1,:),fx(esvidx),
" .r ",xp(skipped),fx(skipped),
" xr ");
276 title(sprintf(
" epsilon = %f, #SV = %d, C = %d ",epsi,length(esvidx),esvr.C));
279 res = norm(fsvr-efsvr) < sqrt(eps);
SCALARSVR Scalar support vector regression.
nu
The weighting factor for epsilon against slack variables. Value may range between 0 < nu < 1...
function [ ai , sf ] = regress(fxi, ainit)
Performs scalar nu-support vector regression.
function [ p , d , info ] = solve(matrix Q,colvec c,colvec lb,colvec ub,matrix A,matrix Alb,matrix Aub, x0)
Solves the given quadratic problem according to the subclasses' algorithm.
static function res = test_ScalarNuSVR_to_EpsSVR()
Tests with random outliers.
function registerProps(varargin)
Call this method at any class that defines DPCM observed properties.
static const SUCCESS
Algorithm terminated otherwisely successful.
BaseQPSVR: SVR variant that is solved using quadratic programs.
data.FileMatrix K
The kernel matrix to use.
function copy = clone()
Create new instance.
disp
Handle object disp method which is called by the display method. See the MATLAB disp function...
double C
The weighting of the slack variables.
static function res = test_ScalarNuSVR()
Performs a test of this class.
function res = isposrealscalar(value)
isposintscalar: Backwards-compatibility function for matlab versions greater than 2012a ...
StopFlag: Flags that algorithms can use to specify the reason for their termination.