name: BanditMulticlass
kind: interactive-learning
taskDescription: |-
The goal of this task is to learn how to classify data points represented as real vectors into one of K classes. It is similar to OnlineLearningMulticlass, except that the oracle only tells you whether your prediction was correct or not.
datasetDescription: |-
The datashard is presented one at a time. The feature vector is presented first, through STDIN:
featureIndex:featureValue ... featureIndex:featureValue

where featureIndex is a positive integer and featureValue is a real number.
The feature indices must be sorted in increasing order.
The program should output to STDOUT its prediction:
predicted-output

where predicted-output element of {1, 2, ..., K}. Unlike OnlineLearningMulticlass, the program knows that there are K classes (passed as first argument to ./run).
Once prediction is received, either "yes" or "no" is presented through STDIN, depending on if the label was correct or not:
oracle-answer

where oracle-answer is in {yes, no}.
sampleDataset: bandit-multiclass-sample
utilsProgram: bandit-multiclass-utils
evaluatorProgram: bandit-multiclass-utils
datasetFields:
- name: "#data"
type: integer
value: raw/numExamples
description: Number of examples.
- name: "#dimension"
type: integer
value: raw/dim
description: The dimension of the feature vector.
- name: "#labels"
type: integer
value: raw/K
description: Number of output classes (labels).
runFields:
- name: Error
type: double
value: evaluate/errorRate
description: Fraction of misclassified examples.
- name: Time
type: time
value: interact/time
description: Time to interact with examples.
errorFieldValue: evaluate/errorRate