A form of supervised machine learning that is typically used in classification problems.

The basic algorithm is:
1. Store a training sequence of known instances and their classifications.
2. When a new instance, x, is encountered, classify it by its relationship to other known instances.
3. Assign x the classification of the instances that are most 'similar' to it.

This is also known as lazy learning because work is only done when a new instance is encountered.

The main advantage, however, is the target concept (the whole 'thing' we are trying to learn) is estimated locally and differently for each new instance. The main disadvantage is the costly process of classifying new instances.

The opposite of this is eager learning where the learner tries to create a global approximation of the data in the training period and uses that to classify unseen instances. This gives reduced cost in classifying new instances but the classification of these new instances depends on the quality of the data used to train the learner in the first place. One example of an eager learner is a neural network.

Four such techniques are: