Sunday, February 26, 2012

kernel bandwidths for imagenet dataset

dene - nxd matrix (very small subset of imagenet)

s=sum(dene,2);
ind=find(s>0);
dene=dene(ind,:);

aa=sum(dene.^2,2)*ones(1,size(dene,1));
bb=ones(size(dene,1),1)*sum(dene'.^2);
s2b=sqrt(aa+bb-2*dene*dene')./sqrt(aa+bb+2*dene*dene');

rbf=sqrt(aa+bb-2*dene*dene');
chi2 = vl_alldist(dene', dene', 'chi2') ;

1/mean(chi2(:)) = 0.1925
1/mean(rbf(:)) = 1.0693
1/mean(s2b(:)) = 1.8578

for BoW representation:
1/mean(chi2(:)) = 0.0011
1/mean(rbf(:)) = 0.013
1/mean(s2b(:)) = 1.25

Saturday, February 4, 2012

MATLAB ile hızlı RBF kernel hesaplama

x=rand(1800,500);
y=rand(2000,500);

% MATLAB versiyonu
tic
K1=dist(x,y');
toc

% YGZ versiyonu
tic
a=sum(x.^2,2)*ones(1,size(y,1));
b=ones(size(x,1),1)*sum(y'.^2);
K2=sqrt(a+b-2*x*y');
toc

LIBSVM kullanımı

Olay şu: LIBSVM'in -t4 (precomputed kernel) seçeneği ile öğrenmek yaptık, fakat test için kullanacağımız kernel matrisi yok. LIBSVM'in bu iki kullanımı arasıdaki dönüşüm şöyle yapılır:

model= svmtrain(ytr, [(1:ntr)' Ktr], ['-t 4 -c ' num2str(100)]); % öğrenme
xtr2=xtr(model.SVs,:); % 'support set'
Mts2=dist(xts,xtr2'); % uzaklık matrisi
Kts2=exp(-mu*Mts2); % kernel matrisi
ssalphas=model.sv_coef; % SVM katsayıları
dec_values3=(ssalphas'*Kts2')'-model.rho; % sonuç vektörü