********************************************************************************
*                                                                              *
*                                Tasting 1.0                                   *
*                                                                              *
*                  Charles Dubout <charles.dubout@idiap.ch>                    *
*                                                                              *
********************************************************************************


1) (Optional) Download additional heuristic(s) from
"http://mash-project.eu/heuristics/" and put their source code in a subfolder
(with the name of the heuristic contributor) of the 'heuristics' folder at the
root of the MASH SDK. The heuristics used in the experiments of the paper
"Tasting Families of Features for Image Classification" are already there
(although the version might be slightly different).


2) (Optional) Download additional data-set(s) of images and put them at the root
of the MASH SDK (only MNIST is present by default).

If you added new data-sets, you need to edit the file 'create_files.cpp' at the
root of the MASH SDK to extract features from all images using all the
heuristics as it only take care of MNIST by default.


3) Compile the MASH SDK, the heuristics, and the classifiers:

- Create a 'build' folder at the root of the MASH SDK:

> mkdir build

- Go to that folder:

> cd build

- Create the Makefile using cmake (it should find all the heuristics):

> cmake ..

- Compile the MASH SDK (and all the rest):

> make -j 4


4) Go to the build/bin folder and run the 'createfiles' executable:

> ./createfiles

It may take a while depending on the number of images in all the data-sets.


5) Transpose the feature files (with the extension .raw) since Boosting prefers
to access features rather than samples:

> ./transposefile mnist_train.raw mnist_heuristics.txt
> ./transposefile mnist_test.raw mnist_heuristics.txt


6) Run the 'classifiers' executable to reproduce the experiments.
The required options are the paths to the train and test feature, label, and
heuristic files, the type of the classifier, and its parameters.

Classifier types:

N  Uniform Naive
L  Uniform 1.Q
l  Uniform Q.1
U  UCB
X  Exp3.P
P  e-greedy
T  Tasting 1.Q
t  Tasting Q.1

Classifier parameters:

T  #Boosting iterations
Q  #features sampled at each iteration
R/scale  R for Tasting or the scale of the reward for the Bandits

> ./classifiers mnist_train.raw mnist_train_labels.txt mnist_test.raw \
  mnist_test_labels.txt mnist_heuristics.txt N 100 10

If you have any question or want to report a problem, please contact me by
e-mail.
