特征选择作为机器学习工作流程中的关键环节,对模型性能具有决定性影响。
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 排序算法,通过迭代优化特征集合。其工作流程如下:
- 初始化——将完整数据集输入到选择过程中。
- XGBoost 特征重要性评估——训练 XGBoost 模型以计算各特征的重要性得分。
- 重要特征提取——基于重要性分数筛选最具预测价值的特征。
- 特征集精简与迭代——保留排名靠前的特征,并在精简后的特征子集上重复评估过程。
- 迭代终止条件——当达到预设的停止标准(如特征集稳定或性能增益边际递减)时完成迭代。
- 特征集合并与去重——将各轮迭代中选出的特征合并,消除冗余,形成最终优化特征集。
这种方法确保了最终选择的特征既具有强相关性又具有低冗余性,从而提高模型性能和计算效率。
Featurewiz-Polars
虽然原始 Featurewiz 方法功能强大,但存在一定局限性,如容易过拟合且缺乏内置的泛化评估机制。最新发布的Featurewiz-Polars版本针对这些问题提供了解决方案。
改进方法引入了基于验证的特征选择机制,并结合Polars数据处理框架以提升性能和效率。其工作流程如下:
- 数据验证拆分——将数据集分为训练集和验证集。
- 带验证的 XGBoost 特征排序——基于训练集计算特征重要性,同时在验证集上评估模型性能。
- 特征选择与泛化验证——综合考虑特征重要性得分和泛化能力进行特征筛选。
- 多重拆分迭代——使用不同的训练/验证数据拆分重复执行选择过程。
- 稳定特征集构建——整合多次迭代中选出的特征,去除重复项,形成更稳健可靠的最终特征集。
与现有特征选择库的性能对比
我们将 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