The ultimate goal of computers is to help humans to solve problems. The solutions
for such problems are typically programmed by experts, and the computers need
only to follow the specified steps to solve the problem. However, the solution of
some problems may be too difficult to be explicitly programmed. In such difficult
cases, instead of directly programming the computers to solve the problem, they
can be programmed to learn the solution. Machine Learning encompasses techniques
used to program computers to learn. It is one of the fastest-growing
research areas today, mainly motivated by the fact that the advent of improved
learning techniques would open up many new uses for computers (i.e., problems
for which the solution is hard to program by hand).
A prominent approach to machine learning is to repeatedly demonstrate how
the problem is solved, and let the computer learn by example, so that it generalizes
some rules about the solution and turn these into a program. This process is known
as supervised learning. Specifically, the computer takes matched values of inputs
(instantiations of the problem to be solved) and outputs (the solution) and models
whatever information their relation contains in order to emulate the true mapping
of inputs to outputs. When outputs are drawn from a pre-specified and finite set of
possibilities, the process is known as classification. Under the assumption that
inputs and outputs are related according to an unknown function, a classification
problem may be seem as a function approximation problem: given some inputs for
which the outputs (i.e., the classes) are known, the goal is to extrapolate the
(unknown) outputs associated with other inputs as accurately as possible.