Featurewiz-Polars:基于XGBoost的高性能特征选择框架,一行代码搞定特征选择

简介: Featurewiz是一个强大的特征选择库,提供高度自动化的特征选择、全面的特征工程功能,并实现了高效的mRMR算法。它已成为许多数据科学家的首选工具,拥有140多篇Google Scholar引用。最新版Featurewiz-Polars通过集成Polars引擎,在处理速度和大规模数据集处理能力上显著提升。

特征选择作为机器学习工作流程中的关键环节,对模型性能具有决定性影响。
Featurewiz是一个功能强大的特征选择库,具备以下核心能力:

  • 高度自动化的特征选择,仅需少量代码即可完成。
  • 全面的特征工程功能,不仅能够选择特征,还能生成数百个衍生特征并自动筛选最优特征组合。
  • 实现了广受认可的mRMR(最小冗余最大相关)算法,这是特征选择领域公认的高效算法之一。

多年来,Featurewiz已成为许多数据科学家的首选工具,在学术领域获得140多篇Google Scholar论文引用

最新的Featurewiz-Polars版本通过集成Polars数据处理引擎,在处理速度、可扩展性和大规模数据集处理能力方面实现了显著提升。

Featurewiz与Scikit-Learn整合

Featurewiz可以作为与scikit-learn兼容的转换器使用,实施步骤如下:

安装Featurewiz

 import featurewiz as fw

创建转换器实例

 wiz = fw.FeatureWiz(verbose=1)

以下示例使用Featurewiz GitHub仓库中提供的汽车销售数据集。将数据加载到Pandas DataFrame并分割为训练集和测试集后,我们使用Featurewiz识别最重要的特征:

 X_train, y_train = wiz.fit_transform(train[preds], train[target])
 X_test = wiz.transform(test[preds])

该数据集的预测目标是汽车销售价格,特征包括

km_driven

fuel

seller_type

transmission

owner

mileage

engine

max_power

seats

等变量。

特征选择对模型性能的实际影响

为验证特征选择的效果,我们对比了两个模型的性能表现:

  • 使用全部特征的模型
  • 仅使用Featurewiz选择的关键特征的模型

图1:对比结果显示,使用Featurewiz选择的特征子集训练的模型(右)性能优于使用所有特征的模型(左)。

特征精简模型表现更优的原因主要有:

泛化能力增强——降低特征复杂度有助于减少过拟合风险,提高模型在未见数据上的表现。

计算效率提升——特征数量减少直接降低了训练和推理的计算开销,这对实际部署环境尤为重要。

Featurewiz的技术原理:递归XGBoost特征选择

Featurewiz的特征选择机制基于递归式XGBoost排序算法,通过迭代优化特征集合。其工作流程如下:

  1. 初始化——将完整数据集输入到选择过程中。
  2. XGBoost特征重要性评估——训练XGBoost模型以计算各特征的重要性得分。
  3. 重要特征提取——基于重要性分数筛选最具预测价值的特征。
  4. 特征集精简与迭代——保留排名靠前的特征,并在精简后的特征子集上重复评估过程。
  5. 迭代终止条件——当达到预设的停止标准(如特征集稳定或性能增益边际递减)时完成迭代。
  6. 特征集合并与去重——将各轮迭代中选出的特征合并,消除冗余,形成最终优化特征集。

这种方法确保了最终选择的特征既具有强相关性又具有低冗余性,从而提高模型性能和计算效率。

Featurewiz-Polars

虽然原始Featurewiz方法功能强大,但存在一定局限性,如容易过拟合且缺乏内置的泛化评估机制。最新发布的Featurewiz-Polars版本针对这些问题提供了解决方案。

改进方法引入了基于验证的特征选择机制,并结合Polars数据处理框架以提升性能和效率。其工作流程如下:

  1. 数据验证拆分——将数据集分为训练集和验证集。
  2. 带验证的XGBoost特征排序——基于训练集计算特征重要性,同时在验证集上评估模型性能。
  3. 特征选择与泛化验证——综合考虑特征重要性得分和泛化能力进行特征筛选。
  4. 多重拆分迭代——使用不同的训练/验证数据拆分重复执行选择过程。
  5. 稳定特征集构建——整合多次迭代中选出的特征,去除重复项,形成更稳健可靠的最终特征集。

与现有特征选择库的性能对比

我们将Featurewiz-Polars与mRMR特征选择库进行了对比测试,确保使用相同的Polars实现基础进行公平比较。

克利夫兰心脏病数据集

  • 原始数据集包含14个特征。
  • Featurewiz-Polars仅选择3个关键特征,实现91%的平衡准确率。
  • mRMR选择了10个特征,但准确率仅达到89%。

Featurewiz-Polars能够以更精简的特征集实现更高的模型性能,同时提高泛化能力并降低模型复杂度。

加州房价数据集(回归任务)

  • 原始数据集包含13个特征。
  • Featurewiz-Polars选择7个特征,实现0.50的RMSE指标。
  • 对比的mRMR库选择8个特征,但RMSE表现略逊。

此案例再次验证了Featurewiz-Polars在使用更少特征的同时能够提供更优的模型表现。

安装

目前Featurewiz-Polars尚未在PyPI正式发布,但可通过以下方式从源代码安装:

 cd <new_folder_destination>
 git clone https://github.com/AutoViML/featurewiz_polars.git
 pip install -r requirements.txt
 cd examples
 python fs_test.py

或直接通过GitHub安装:

 pip install git+https://github.com/AutoViML/featurewiz_polars.git

总结

与其他mRMR实现相比,Featurewiz-Polars展现出更高的处理速度、更精简的特征选择和更优的模型性能等显著优势。

若你正在寻求有效的特征选择解决方案,建议尝试此工具并进行实际效果对比。可以从GitHub下载

fs_test.py

模块,自行进行基准测试评估。

https://avoid.overfit.cn/post/bad10ed894bd43c086e3ef9de7478bea

作者:Paolo Perrone

目录
相关文章
|
算法 Python
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
2325 0
Python计算基尼系数实践笔记(案例+代码+视频+列表推导式)
conda常用操作和配置镜像源
conda常用操作和配置镜像源
32279 0
|
5月前
|
人工智能 自然语言处理 安全
多智能体协作为什么这么难:系统频繁失败的原因分析与解决思路
在AI智能体架构设计中,单智能体与多智能体路径之争愈演愈烈。实践表明,多智能体系统虽看似强大,却因协调复杂、容错差、信息丢失等问题而表现脆弱。相比之下,具备完整上下文的单智能体在一致性、稳定性与可维护性上更具优势。本文深入分析多智能体系统的失败案例与技术局限,提出优先发展高性能单智能体、聚焦上下文工程的实践路径,为AI系统设计提供清晰方向。
403 4
多智能体协作为什么这么难:系统频繁失败的原因分析与解决思路
|
5月前
|
人工智能 自然语言处理 算法
提升LangChain开发效率:10个被忽视的高效组件,让AI应用性能翻倍
LangChain作为主流大语言模型应用框架,其高级组件常被忽视。本文详解10个高价值但低使用率的核心组件,如语义检索、多模板路由、智能查询转换等,结合技术原理与实践案例,助开发者构建更高效、智能、适应性强的AI系统,提升应用性能与业务价值。
444 0
|
3月前
|
安全 API
LlamaIndex检索调优实战:分块、HyDE、压缩等8个提效方法快速改善答案质量
本文总结提升RAG检索质量的八大实用技巧:语义分块、混合检索、重排序、HyDE查询生成、上下文压缩、元数据过滤、自适应k值等,结合LlamaIndex实践,有效解决幻觉、上下文错位等问题,显著提升准确率与可引用性。
394 8
|
3月前
|
机器学习/深度学习 搜索推荐 算法
NumPy广播:12个技巧替代循环,让数组计算快40倍
摆脱Python数据处理中的低效for循环!掌握NumPy广播机制,实现向量化计算,让代码更简洁、运行更快。从数据标准化到距离矩阵、独热编码,12个实战案例教你用形状思维替代循环思维,显著降低CPU负载,提升程序性能。
240 12
NumPy广播:12个技巧替代循环,让数组计算快40倍
|
3月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
399 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
机器学习/深度学习 算法 PyTorch
深度学习调参新思路:Hyperband早停机制提升搜索效率
Hyperband是一种高效的超参数调优算法,通过逐次减半策略在探索与利用间取得平衡。它先为大量配置分配少量资源,快速淘汰表现差的模型,将剩余资源集中用于有潜力的配置,从而加快优化过程。相比贝叶斯优化、随机搜索和遗传算法,Hyperband在处理大规模搜索空间时效率更高,尤其适合资源有限的场景。文章通过LSTM模型预测股价的实验展示了其工作机制与实际效果。
304 6
深度学习调参新思路:Hyperband早停机制提升搜索效率
|
5月前
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
426 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
|
5月前
|
算法 数据挖掘 测试技术
HiRAG:用分层知识图解决复杂推理问题
HiRAG是一种分层检索增强生成系统,专为复杂知识图的多层推理设计。它通过构建从具体实体到抽象概念的多层次结构,提升知识推理深度与连贯性,有效减少大模型幻觉,适用于天体物理、理论物理等专业领域。
318 3