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

📄 optim_gammabaylssvmardr.asv

📁 The goal of SPID is to provide the user with tools capable to simulate, preprocess, process and clas
💻 ASV
字号:
function [alpha, beta, numeffpar, Plikeli3, Plikeli2, sloga, slogb, Ed, Ew, exitflag]  = optim_gammaBayLSSVMard(gamma_kostftie_0, sigma, Xtrain, Ytrain,kernn,dispOpt)

global sigm kern Xtr Ytr KK roK ALFA BETA EW ED vK logKK0;

kern = kernn;
Xtr = Xtrain;
Ytr = Ytrain;
sigm = sigma;
sigm2 = sigm^2;

if kern == 1
   gebr_kernel = 'RBFkernel';
elseif kern == 2
   gebr_kernel = 'LINkernel';
elseif kern == -1,
    gebr_kernel= 'RBFaddkernel';
    logKK0=[];
elseif kern == -2,
    gebr_kernel= 'LINaddkernel';
    logKK0=[];
end

if nargin < 6,
  dispOpt=0;
end,

N = size(Xtr,1);



if isempty(logKK0),
  KK=zeros(N);
  for i=1:N,
    for j=1:i,
      KK(i,j) = eval([gebr_kernel,'(Xtr(i,:),Xtr(j,:),sigm)']);
      KK(j,i) = KK(i,j);
    end
  end
elseif kern==1,
   KK=exp(logKK0/sigm2);
else
   KK=logKK0.^sigm;
end,

R = eye(N) - 1/N*ones(N,1)*ones(1,N);
[vK, roK, t] = svd(R*KK*R + 0.5*eye(size(KK, 1))); clear t
%vK=real(vK); roK=real(roK);
roK = diag(roK); roK = roK - 0.5; index0 = find(roK <0); if ~isempty(index0), roK(index0) = zeros(size(index0)); end

%opties=optimset('MaxFunEvals', 2000,'GradObj','on', 'DerivativeCheck', 'off', 'TolFun', 10*eps, 'TolX', 10*eps );

%[gam_opt, costlevel2] = fminunc('berek_baygam', gamma_kostftie_0, opties);

opties=optimset('MaxFunEvals', 2000, 'GradObj','on', 'DerivativeCheck', 'off', 'TolFun', 10*eps, 'TolX', 10*eps, 'display', 'off' );

[gam_opt, costlevel2, exitflag] = fmincon('berek_baygam', gamma_kostftie_0, [],[],[],[],1,64,[],opties);

if exitflag<=0|gam_opt>1e4|gam_opt<1e-4,
    exitflag=1;
  if gam_opt>1e4,
     gam_opt=1e3; 
  elseif gam_opt<1e-4,
    gam_opt=1e-2;
  else
      gam_opt=1;
  end
  
  [costlevel2] = berek_baygam(gam_opt);
end,
gam_opt = abs(gam_opt);
beta  = BETA;
alpha = ALFA;

Ed = ED; Ew = EW;

numeffpar = sum( (gam_opt*real(roK)) ./ ( 1+gam_opt*real(roK) ) ) + 1;

sloga = sqrt(2/(numeffpar-1));
slogb = sqrt(2/(N-numeffpar));
Plikeli2 = costlevel2;
%Plikeli3 = Plikeli2*sloga*slogb;
%Plikeli3 = sqrt(  1/  [ prod( 1 + (gam_opt)*abs(real(roK)) ) * (numeffpar -1) * (N - numeffpar) ] ); 
sqrtB = sqrt(beta);
Plikeli3 = sqrt(  1/  [ prod( 1 + (gam_opt)*abs(real(roK)) ) *  ] ); 
Plikeli3 = (N-1)*log(sqrtB) -1/2*(log((numeffpar -1) * (N - numeffpar)) + sum(log()));

%for kkk=1:N-1,
% Plikeli3 = Plikeli3*sqrtB;
%end

if dispOpt,
    disp(['gam_opt=', num2str(gam_opt), ' ; numeffpar=', num2str(numeffpar), ' ; CostLevel2=', num2str(0.5*Plikeli2)]),
    disp(' '),
end,

⌨️ 快捷键说明

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