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 (per-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.
- Spotlight primitive — filters the bar/scatter panels to one aggregation function so you can compare, e.g., how MEAN vs MAX behave as signal strength changes.
- The graph panel is a real spatial view: drag to pan, scroll/pinch to zoom. Each customer hub's size and glow are driven by the z-score of the currently best (or spotlighted) synthesized feature, exactly mirroring the 3D companion simulation's encoding — but computed and rendered independently, in 2D.
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.