Evolutionary Feature Engineering
Overview
Automates feature engineering using evolutionary algorithms inspired by genetic programming. Starting from raw input features, the package evolves candidate transformation recipes through selection, crossover, and mutation, evaluating fitness via cross-validation or train/validation splits with gradient-boosted tree models ('LightGBM' or 'XGBoost'). Built-in transformers include arithmetic, logarithmic, and power operations, interaction terms, target encoding, quantile and log-based binning, principal component analysis, truncated singular value decomposition, Uniform Manifold Approximation and Projection (UMAP) dimensionality reduction, and minimum spanning tree (MST) graph-based clustering. The evolutionary search yields an optimised feature recipe that can be applied to new data for prediction. Methods are described in McInnes et al. (2018) doi:10.21105/joss.00861, Ke et al. (2017) doi:10.48550/arXiv.1711.08789, Chen and Guestrin (2016) doi:10.1145/2939672.2939785, Gagolewski (2021) doi:10.1016/j.softx.2021.100722, Gagolewski (2026) doi:10.32614/CRAN.package.lumbermark, and Gagolewski (2026) doi:10.32614/CRAN.package.deadwood.
New Features
- **Untouched confirmation holdout (
holdout_frac)**: Withevaluation_strategy = "cv", a stratified fraction of rows is excluded from the entire search and scored once after evolution. The result is reported asholdout_fitnessand a newsearch_gapdiagnostic (holdout minus validation score) on theevo_recipeobject and insummary(), making search-level overfitting visible. - **Leakage-safe CV fold strategies (
cv_strategy)**: New options"time"(contiguous chronological blocks ordered bytime_col, so validation always lies in the future of training) and"group"(all rows of agroup_colentity stay in one fold, balanced greedy assignment) alongside the default"random". - **Multi-fidelity evaluation (
multi_fidelity,mf_sample_frac,mf_warmup_frac)**: Optional cost reduction in which warm-up generations screen individuals on row-subsampled folds; the most promising half is re-evaluated at full fidelity before any selection decision, keeping fitness comparisons apples-to-apples. - **New transformer
date_diff**: Signed difference in days between two datetime columns.
Breaking Changes
- The
mbo_infill_opt = "ea"option is deprecated and ignored with a warning. Theemoapackage is no longer needed.
Enhancements
- Migrated Bayesian Optimisation backend from
mlrMBO/ParamHelpers/smoof/lhstomlr3mbo/paradox/bbotk. The public API (make_tunable(),lightgbm_mbo,xgboost_mbo) remains fully unchanged. - Removed legacy packages
mlr,randomForest,DiceKriging, andemoafrom Suggested dependencies. The manual Kriging-to-RandomForest surrogate fallback has been replaced bymlr3mbo's transparent internal surrogate management. - Reduced package dependencies in
Importsfrom 12 to 11. - Added support for a **Hybrid Island Population Model** in
evolve_features()via parametersislands,migration_interval,migration_rate, andgene_migration_prob.
Show all changes in 1.0.0Hide the rest of the changes in 1.0.0
- **Recipe-Level Migration**: Exchanges complete successful feature recipes between islands in a Ring topology to preserve co-adapted interactions. Guarded against edge cases where dynamic population sizes shrink below
migration_rate. - **Gene-Level Migration (Injection)**: Periodically injects highly successful individual features (genes) from the ring neighbor's best individual into the local mutation pool. Genes diffuse naturally through the ring over successive migrations, creating a gradient of innovation where each island builds hierarchically on its neighbor's features.
- **Independent Local Stagnation**: Dynamic population sizing and adaptive exploration rates are computed independently per island, allowing stagnant islands to expand and explore while active ones stay compact. Population growth is capped at 5x
pop_sizeto prevent runaway expansion. - **Verbose Reporting**: Clear logging has been integrated to distinguish exactly which island and individual is being evaluated, including gene pool injection events.
- Added support for a **Hybrid Feature Mask Approach** for raw feature selection alongside evolved feature engineering:
- **Sigmoid Active Mask Initialization**: Guides active feature masks of new individuals using baseline model importances centered at average feature importance.
- **Smart Mask Mutation Operators**: Supports multi-column toggles scaled via a dynamic geometric distribution, single raw feature toggles with temperature-scaled importance probability, and complete mask recalculation.
- **With-Replacement Multivariate Sampling**: Employs with-replacement sampling and deduplication for multivariate transformers to concentrate inputs around active, important features.
- **Pruning Safety Floor Restoration**: Safeguards evaluations by automatically restoring raw features to meet the
min_activefloor if all genes are pruned during evaluation. - **Cache Hit Logging Reduction**: Silenced redundant
(Cache Hit)prints for centroid distance components to reduce console verbosity.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK8 OK2026-06-10
Documentation
- Help pages
- 48 (9 internal)includes a package overview page
- Examples that run
- 21%3 run in a plain check · 10 only when donttest examples are enabled (R CMD check --as-cran) · 1 never run
- Exported functions with examples
- 37%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
Also includes 3 demo scripts (run with demo())
Downloads
Repository
Stars over time
Commits over time
Commit identities over time
4 development-tooling and community-health practices detected across 3 families in the upstream repository
Checks run against github.com/tanopereira/evofe on 2026-10-18.
GitHub Pages site last deployed 2026-09-15
Dependencies
Installing evoFE adds 50 packages (33 with compiled code, 47 MB of source tarballs). Heaviest: BH 14 MB, data.table 5.7 MB, spacefillr 3.1 MB.
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 1.0.0Latest2026-08-25 · current release · diff ↗ ·
added 26 exports
compute_calibrated_mae, compute_calibrated_rmse, compute_complexity_penalty, compute_ts_refinement, ensemble_islands, evo_evaluators, get_in_neighbors, get_neighbors, make_tunable, migration_config, policy_gibbs_pull, policy_gibbs_push, policy_push_uniform, policy_tiered_admission, register_evaluator, register_transformer, resolve_migration_transactions, topology_complete, topology_custom, topology_grid, topology_hypercube, topology_ring, topology_tiered, topology_torus, tournament_select, view - 0.1.02026-06-09
- RR 4.6.0 released · 2026-04-24
Package metadata
- First published
- 2026-06-09
- Total releases
- 2 / 1 yrs
- License
- MIT + file LICENSE OSI
- Download size
- 244 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("evoFE")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.