diff core/magnatagatune/tests_evals/rbm_subspace/Exp_SVMLight.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/magnatagatune/tests_evals/rbm_subspace/Exp_SVMLight.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,131 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Experiment code templat                                                 %
+% Project: sub-euclidean distance for music similarity                    %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Load features
+feature_file = 'rel_music_raw_features.mat';
+vars = whos('-file', feature_file);
+A = load(feature_file,vars(1).name,vars(2).name,vars(3).name,vars(4).name);
+raw_features = A.(vars(1).name);
+indices      = A.(vars(2).name);
+tst_inx      = A.(vars(3).name);
+trn_inx      = A.(vars(4).name);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Define directory to save parameters & results
+% dir    = '/home/funzi/Documents/';
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+dmr    = [0 5 10 20 30 50];    % dimension reduction by PCA
+ws     = [0 5 10 20 30 50 70]; % window size
+% parameters of rbm (if it is used for extraction)
+hidNum = [30 50 100 500];
+lr_1   = [0.01 0.05 0.1 0.5];
+lr_2   = [0.05 0.1 0.5 0.7];
+mmt    = [0.02 0.05 0.1 0.5];
+cost   = [0.00002 0.01 0.1];
+
+%% Select parameters (if grid-search is not applied)
+di  = 1;
+wi  = 1;
+hi  = 4;
+l1i = 1;
+l2i = 1;
+mi  = 4;
+ci  = 1;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% If grid search is define
+% log_file = strcat(dir,'exp_.mat');
+% inx = resume_from_grid(log_file,8);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Feature extraction
+EXT_TYPE = 2;
+switch (EXT_TYPE)
+    case 1  % Using PCA
+        assert(~exist('OCTAVE_VERSION'),'This script cannot run in octave');
+        coeff = princomp(raw_features);
+        coeff = coeff(:,1:end-dmr(di));  % Change value of dmr(di) to reduce the dimensionality
+        features = raw_features*coeff;
+          % normalizing
+        mm = minmax(features')';
+        inn= (find(mm(1,:)~=mm(2,:)));
+        mm = mm(:,inn);
+        features = features(:,inn);
+        features = (features-repmat(mm(1,:),size(features,1),1))./(repmat(mm(2,:),size(features,1),1)-repmat(mm(1,:),size(features,1),1));
+        
+        % describe config
+        s_conf = xml_format(dmr(di));
+    case 2  % Using rbm
+        conf.hidNum = hidNum(hi);
+        conf.eNum   = 100;
+        conf.sNum   = size(raw_features,1);
+        conf.bNum   = 1;
+        conf.gNum   = 1;
+        conf.params = [lr_1(l1i) lr_2(l2i) mmt(mi) cost(ci)];
+        conf.N    = 50;
+        conf.MAX_INC = 10;
+        W1 = zeros(0,0);
+        [W1 vB1 hB1] = training_rbm_(conf,W1,raw_features);
+        features = logistic(raw_features*W1 + repmat(hB1,conf.sNum,1));
+        
+        % describe config
+        s_conf = xml_format(conf);
+end
+
+correct = 0;   % correct rate
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% CODE HERE                               %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+nfvec = features';
+feature_file = 'son_out_files.mat';
+save(feature_file,'nfvec');
+
+
+% the calling of daniels script
+ftype = 'MTTMixedFeatureSon';
+global sonfeatbase;
+sonfeatbase = [];
+
+global db_MTTMixedFeatureSon
+db_MTTMixedFeatureSon.reset
+
+global globalvars;
+globalvars.debug = 2
+
+fparams_all.son_conf = {s_conf};
+fparams_all.son_filename = {feature_file};
+
+% ---
+% vary parameters for svmlight
+% ---    
+
+trainparams_all = struct(...
+            'C', [0.05 0.1 3 10 100], ...   %you just want to try this parameter approx (0.01..........1000) (3-100 is nice for daniel)
+            ...               
+            'weighted', [0], ...
+            'dataset',{{'comp_partBinData_cupaper_01'}}, ...
+            'inctrain', 0, ...
+            'deltafun', {{'conv_subspace_delta'}}, ...
+            'deltafun_params', {{{[0],[1]},{[5],[1]},{[20],[1]},{[40],[1]}}} ... % normalisation improves results
+            );
+
+% set training function
+trainfun = @svmlight_wrapper;
+
+
+% create test dirxectory
+akt_dir = migrate_to_test_dir();
+
+% call eval
+result = test_generic_features_parameters_crossval...
+    (fparams_all, trainparams_all, trainfun, ftype);
+
+% correct = result.mean_ok_test(1,1);
+% fprintf('Correct = %f\n',correct);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Using the logging function to save paramters
+% and the result for plotting or in grid search
+% logging(log_file,[i1 i2 i3 i4 i5 correct]);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+