  This paper introduces LMFAO (Layered Multiple Functional Aggregate
Optimization), an in-memory optimization and execution engine for batches of
aggregates over the input database. The primary motivation for this work stems
from the observation that for a variety of analytics over databases, their
data-intensive tasks can be decomposed into group-by aggregates over the join
of the input database relations. We exemplify the versatility and
competitiveness of LMFAO for a handful of widely used analytics: learning ridge
linear regression, classification trees, regression trees, and the structure of
Bayesian networks using Chow-Liu trees; and data cubes used for exploration in
data warehousing.
  LMFAO consists of several layers of logical and code optimizations that
systematically exploit sharing of computation, parallelism, and code
specialization.
  We conducted two types of performance benchmarks. In experiments with four
datasets, LMFAO outperforms by several orders of magnitude on one hand, a
commercial database system and MonetDB for computing batches of aggregates, and
on the other hand, TensorFlow, Scikit, R, and AC/DC for learning a variety of
models over databases.
