⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookkeeping.m.svn-base

📁 Incrementally/decrementally update svm. very efficient!
💻 SVN-BASE
字号:
% BOOKKEEPING - Updates the status of example indss and modifies the corresponding
%               coefficient a(indss) in certain cases to avoid numerical errors.
%
% Syntax: [indco,i] = bookkeeping(indss,cstatus,nstatus)
%
%     indco: matrix row/col to remove from Rs and Q if removing a margin vector
%         i: when i > 0, the i-th element was removed from ind{RESERVE}
%     indss: the example changing status
%   cstatus: current status of the example
%   nstatus: new status of the example
%
%            example status values:
%            1: margin vector
%            2: error vector
%            3: reserve vector
%            4: unlearned vector
%
% Version 3.22 -- Comments to diehl@alumni.cmu.edu
%

function [indco,i] = bookkeeping(indss,cstatus,nstatus)

indco = -1;
i = 0;
if (cstatus ~= nstatus)

	% flags for example state
	MARGIN    = 1;
	ERROR     = 2;
	RESERVE   = 3;
    UNLEARNED = 4;

	% define global variables
	global a;     % the alpha coefficients
	global C;     % regularization parameters
	global ind;   % cell array containing indices of margin, error, reserve and unlearned vectors           
                
	% adjust coefficient to avoid numerical errors if necessary
	switch nstatus
	case RESERVE
	   a(indss) = 0;
	case ERROR
	   a(indss) = C(indss);
	end;

	% if the example is currently a margin vector, determine the row
	% in the extended kernel matrix inverse that needs to be removed
	if (cstatus == MARGIN)
   	indco = find(indss == ind{MARGIN}) + 1;
	end;

	% change the status of the example
	switch nstatus
	case RESERVE
   	[ind{cstatus},i] = move_indr(ind{cstatus},indss);
	otherwise
	   [ind{cstatus},ind{nstatus}] = move_ind(ind{cstatus},ind{nstatus},indss);
	end;
 
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -