  To deal with the complexity of the new bigger and more complex generation of
data, machine learning (ML) techniques are probably the first and foremost
used. For ML algorithms to produce results in a reasonable amount of time, they
need to be implemented efficiently. In this paper, we analyze one of the means
to increase the performances of machine learning algorithms which is exploiting
data locality. Data locality and access patterns are often at the heart of
performance issues in computing systems due to the use of certain hardware
techniques to improve performance. Altering the access patterns to increase
locality can dramatically increase performance of a given algorithm. Besides,
repeated data access can be seen as redundancy in data movement. Similarly,
there can also be redundancy in the repetition of calculations. This work also
identifies some of the opportunities for avoiding these redundancies by
directly reusing computation results. We start by motivating why and how a more
efficient implementation can be achieved by exploiting reuse in the memory
hierarchy of modern instruction set processors. Next we document the
possibilities of such reuse in some selected machine learning algorithms.
