Deep Feature Synthesis (the algorithm behind tools like Featuretools) walks the relationships in a schema and applies aggregation primitives to a child table, grouped by the foreign key back to the parent, to automatically manufacture new columns:
feature(customer) = AGG( child_rows WHERE child.customer_id = customer.id )
AGG ∈ { COUNT, SUM, MEAN, MAX, STD }
At depth 1 the primitives act directly on Transactions (amount, per-customer counts). At depth 2 the synthesis walks one hop further — Transactions → Categories — producing second-order features like "mean of (max category spend) per customer", exactly how Featuretools composes primitives across multi-table paths.
Each synthesized feature is scored against a hidden target y (a noisy linear function of the true generating signal) with the Pearson correlation coefficient:
r = Σ(xᵢ−x̄)(yᵢ−ȳ) / √( Σ(xᵢ−x̄)² · Σ(yᵢ−ȳ)² )
- Synthesis depth — 1 hop (direct transaction aggregates) or 2 hops (aggregates-of-aggregates through the Categories entity).
- Customers — size of the parent entity table; each gets a random cluster of transactions.
- Signal strength — how strongly the hidden target actually depends on the true generator vs. pure noise; low values show automated engineering finding nothing useful, high values show it converging on the right feature.
- The 3D scene shows each customer as a hub sphere with its transaction records orbiting as instanced points; the brightest, largest customer hub is the one whose synthesized features currently rank highest by |r|.
Real-world relevance: automated feature engineering is the first stage of most AutoML pipelines — it turns raw relational tables (orders, clicks, sensor logs) into a flat feature matrix before model selection and hyperparameter search even begin.