py-evoFE:基于遗传算法的表格数据自动特征工程库发布
开源 Python 库 py-evoFE v0.3.0 发布,通过遗传编程自动发现并优化表格数据中的特征变换,与 Sci…
py-evoFE 是一个面向表格数据的开源 Python 库,核心思路是利用遗传编程自动搜索特征变换空间,生成比手工特征工程更紧凑、泛化能力更强的特征组合。该项目近日发布 v0.3.0 版本,以 MIT 协议开源,已在 GitHub 和 PyPI 提供安装。
核心思路与解决的问题
在 Kaggle 竞赛和工业级表格建模任务中,特征工程往往是决定模型表现的关键环节。LightGBM、XGBoost 等梯度提升树虽然对原始表格特征表现稳健,但难以自动发现「比值」「分组聚合」「非线性维度投影」「交互图」等复杂结构。手工特征工程耗时且受限于经验,而暴力枚举则会产生维度爆炸、共线性噪声和巨大内存开销。py-evoFE 通过遗传算法的选择压力与复杂度惩罚,在搜索空间中发现精简、可解释的特征配方。
主要技术特性
- 层次化链式组合:进化得到的特征会作为后续生成的构件,可表达诸如 log(ratio(groupby_mean(x1, by=x2), x3)) 的复合形式。
- 40+ 内置变换器:覆盖非线性算术与对数比、目标编码(多分类、WoE、分位数等)、字符串相似度(MinHash、Gap)、降维(PCA、UMAP、MCA、FAMD)、图与密度聚类等。
- Polars + PyArrow 向量化计算:在矩阵哈希与最近邻缓存机制下,UMAP 与 KNN 等状态化投影可在交叉验证折之间复用,避免重复计算;多保真度筛选先用低成本 CV 过滤候选,再对有潜力的特征做完整评估。
- 岛模型并行搜索与集成:支持 Ring、Torus、Grid、Hypercube、Tiered 等拓扑以及 Gibbs 迁移策略;搜索结束后对各岛的胜出者通过 Caruana 贪心集成融合 out-of-fold 预测。
- 可回放的可视化:调用 view(evo.get_recipe()) 可生成零依赖的 HTML 仪表盘,回放整个进化过程。
- 完全兼容 Scikit-Learn:实现 fit、transform、predict、predict_proba,可直接接入 sklearn.pipeline.Pipeline 与 GridSearchCV。
使用示例
库的使用流程较为直接:先用 EvoFE 指定任务类型(分类或回归)、底层评估器(LightGBM 或 XGBoost)、种群规模与代数等参数;调用 fit 后即可通过 get_recipe() 获取进化得到的特征配方,并使用 predict 或 predict_proba 完成预测。文档中以乳腺癌数据集为例,展示了从加载数据、初始化、拟合到查看「基因」表达式的完整流程。
适用场景与局限
py-evoFE 主要面向结构化数据建模场景,适合在已有 LightGBM/XGBoost 基线上寻求额外提升的从业者与竞赛玩家。由于依赖遗传编程搜索,其计算开销通常显著高于直接训练树模型,且在特征工程收益本就较小的任务上未必带来明显改善。该项目目前由社区个人维护,尚无公开 benchmark 与基线对比数据,用户需自行在自有数据集上验证效果。
