Featurewiz-Polars:利用XGBoost进行智能特征选择

2025年03月03日 由 alex 发表 3056 0

特征选择是构建高效机器学习模型的关键步骤。


介绍Featurewiz

如果你对Featurewiz还不熟悉,那么听好了:

  • 只需三行代码即可实现自动化特征选择。
  • 广泛的特征工程——它不仅能选择特征,还能自动生成数百个特征并自动挑选出最佳的特征。
  • 实现了最受认可的mRMR(最小冗余,最大相关性)算法之一,这是特征选择的金标准算法。


多年来,Featurewiz一直是一个备受推崇的解决方案,拥有超过600个GitHub点赞和140多篇Google学术引用。


现在,随着Featurewiz-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])


目标?使用公里数、燃油类型、卖家类型、变速箱类型、车主数量、里程数、发动机类型、最大功率和座位数等变量来预测汽车销售价格。


特征选择真的能提高性能吗?

为了验证这一点,我们训练了两个模型:

  • 使用所有特征
  • 仅使用Featurewiz选出的顶级特征


1


但为什么特征更少的模型表现更好呢?主要有两个原因:

  1. 更简单的模型泛化能力更强——减少特征复杂性有助于防止过拟合。
  2. 训练和推理速度更快——变量越少,意味着训练和预测速度越快,这在实际应用中至关重要。


Featurewiz的工作原理:递归XGBoost特征选择

Featurewiz的特征选择功能由递归XGBoost排名驱动,逐步优化特征集。其工作原理如下:

  1. 从全部开始——将整个数据集输入选择过程。
  2. XGBoost特征排名——训练一个XGBoost模型来评估特征重要性。
  3. 选择关键特征——根据重要性分数提取最重要的特征。
  4. 修剪并重复——仅保留排名靠前的特征,并在精简后的子集上重新运行过程。
  5. 迭代直至最优——继续循环,直到满足停止准则(如稳定性或收益递减)。
  6. 确定最终特征集——合并所有周期中选定的特征,消除重复项,形成最终优化集。


这种方法确保只有最相关、冗余最少的特征被选中,从而提高模型的性能和效率。


下一步:带有拆分驱动的递归XGBoost的Featurewiz-Polars

原始featurewiz方法功能强大,但也有一些权衡——它可能容易过拟合,并且缺乏内置的泛化机制评估。这就是最新版本featurewiz-polars的用武之地。


新增功能?拆分驱动的递归XGBoost

这种改进的方法引入了基于验证的特征选择,利用Polars提高速度和效率。其工作原理如下:

  1. 拆分数据用于验证——数据集被分为训练集和验证集。
  2. XGBoost特征排名(带验证)——根据训练集中的重要性对特征进行排名,同时在验证集上评估性能。
  3. 选择关键特征(带验证)——根据重要性分数及其泛化能力选择特征。
  4. 使用新拆分重复——使用不同的训练/验证拆分多次重复该过程。
  5. 最终稳定的特征集——合并所有运行中选定的特征,去除重复项,从而得到更稳健和可靠的选择。


与现有库进行基准测试

我们使用mRMR特征选择库的Polars实现进行了公平比较,测试了Featurewiz-Polars。


测试1:克利夫兰心脏病数据集

  • 原始数据集:14个特征。
  • Featurewiz-polars仅选择了3个特征,达到了91%的平衡准确率。
  • mRMR选择了10个特征,但平衡准确率仅为89%。


2


3


测试2:加利福尼亚房屋数据集(回归任务)

  • 原始数据集:13个特征。
  • Featurewiz-polars选择了7个特征,并实现了0.50的均方根误差(RMSE)。
  • 竞争的mRMR库选择了8个特征,但在RMSE方面表现略差。


4-5


5


安装指南

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运行更快,选择的特征更少,并且提供了更好的模型性能。


如果你正在处理特征选择问题,不妨尝试一下,并亲自比较结果!

文章来源:https://medium.com/data-science-collective/featurewiz-polars-a-robust-and-scalable-solution-for-feature-selection-with-xgboost-328147330a1d
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消