A set of algorithms that attempt to recognize patterns in data based on input-output training examples.