Learning approaches that rely on another algorithm performing some *enrichment*, *variation*, or *generalization*.

### OneVsAllLearning

**Java class**: OneVsAllLearning

**Source code**: OneVsAllLearning.java

**Maven Project**: kelp-core

**JSON type**: oneVsAll

**Description**: it is a meta algorithm that operates applying a One-Vs-All strategy over the base learning algorithm which is intended to be a binary learner. The One-Vs-All strategy will learn N different classifiers, where N is the number of classes involved in the dataset. In this strategy each classifier is learned by considering in turn the examples of a single class as positives, while all the other examples are considered as negative.

**Parameters**:

*baseAlgorithm*: The base learning algorithm which is intended to be a binary learner*labels*: The list of targeted classes

### OneVsOneLearning

**Java class**: OneVsOneLearning

**Source code**: OneVsOneLearning.java

**Maven Project**: kelp-core

**JSON type**: oneVsOne

**Description**: it is a meta algorithm that operates by applying a One-Vs-One strategy over the base learning algorithm which is intended to be a binary learner. This meta-algorithms will learn classifiers, by comparing each class with all the others separately. The resulting classifier applies a voting strategy to perform the final decision. (N is the number of classes in the dataset)

**Parameters**:

*baseAlgorithm*: the base learning algorithm which is intended to be a binary learner*labels*: the list of targeted classes

### MultiLabelClassificationLearning

**Java class**: MultiLabelClassificationLearning

**Source code**: MultiLabelClassificationLearning.java

**Maven Project**: kelp-core

**JSON type**: multiLabel

**Description**: it is a meta algorithm that operates applying a multi label learning strategy over the base learning algorithm which is intended to be a binary learner. A multi label classification task is a multiclass problem in which each instance can belongs to zero, one or multiple classes. The multi label strategy will learn N different classifiers, where N is the number of classes involved in the dataset. In this strategy each classifier is learned by considering in turn the examples of a single class as positives, while all the other examples are considered as negative.

**Parameters**:

*labels*: the list of targeted classes*baseAlgorithm*: the base learning algorithm which is intended to be a binary learner

### MultiEpochLearning

**Java class**: MultiEpochLearning

**Source code**: MultiEpochLearning.java

**Maven Project**: kelp-additional-algorithms

**JSON type**: multiEpoch

**Description**: it is a meta learning algorithms for online learning methods. It performs multiple iterations (or epochs) on the training data.

**Parameters**:

*baseAlgorithm*: The base online learning algorithm which is intended to apply for multiple iterations*epochs*: The number of iterations

### Stoptron

**Java class**: Stoptron

**Source code**: Stoptron.java

**Maven Project**: kelp-additional-algorithms

**JSON type**: stoptron

**Description**: it is a variation of the Stoptron proposed in [Orabona et al.(2008)]. Until the budget is not reached the online learning updating policy is the one of the baseAlgorithm that this meta-algorithm is exploiting. When the budget is full, the learning process ends.

**Parameters**:

*label*: The label to be learned*baseAlgorithm*: The base online learning algorithm which is intended to apply in this budgeted approach*budget*: The maximum number of support vectors allowed in the budget

### RandomizedBudgetPerceptron

**Java class**: RandomizedBudgetPerceptron

**Source code**: RandomizedBudgetPerceptron.java

**Maven Project**: kelp-additional-algorithms

**JSON type**: randomizedPerceptron

**Description**: a variant of the Randomized Budget Perceptron proposed in [Cavallanti et al.(2007)]. Until the budget is not reached the online learning updating policy is the one of the baseAlgorithm that this meta-algorithm is exploiting. When the budget is full, a random support vector is deleted and the perceptron updating policy is adopted.

**Parameters**:

*label*: The label to be learned*baseAlgorithm*: The base online learning algorithm which is intended to apply in this budgeted approach*budget*: The maximum number of support vectors allowed in the budget