a=rank_perceptron(hyperParam,Yset)
Generates a Ranking Perceptron object with given hyperparameters.
The rank perceptron uses a joint kernel on the inputs and outputs.
Labeled data are given of the form (x_i,y_i) which specify a map from
x_i -> y_i. Essentially, the data (x_i y_i) are considered positive examples
given to a classifier and every other output y \in Yset is considered as
a negative example. Training consists of finding tuning the parameters alpha
such that y_i = argmax_y ( f(x_i,y)) for all i, i.e. the correct map is learnt
for the training data. Here, f(x,y) = \sum \alpha_i J((x_i,x_i,),(x,y))
is a measure of match between input x and output y.
One thus must give as input the set Yset, and the choice of joint kernel,
can currently be a product of 'linear', 'poly' or 'rbf' between inputs
and outputs.
Outputs y_i are given in the form of indices into the set Yset.
** Hyperparameters (with defaults)
** kertype='linear' -- the kernel type, either 'linear','poly' or 'rbf' on the inputs.
kernel is always linear on the outputs (enables fast pre-images)
kerparam=1; -- kernel parameter (for 'poly' or 'rbf' kernel)
loops=100 -- number of iterations of training
Yset=[]; -- set of possible outputs to choose from
output_preimage=0 -- whether to output y given x or index into Yset (default)
** Model
** alpha -- the weights
svs -- the support vectors
dat -- the original data
dbase -- the set of possible Ys (outputs)
** Methods:
** train, test
** Example:
** d=gen(toy); d.Y(d.Y==1,:)=1; d.Y(d.Y==-1,:)=2;
a=rank_perceptron([1 0 0; 0 1 0 ;0 0 1]);
[r a]=train(a,d);