V · 2月27日

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

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

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

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

image.png

最新的 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

推荐阅读
关注数
4216
内容数
966
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息