特征选择作为机器学习工作流程中的关键环节,对模型性能具有决定性影响。
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
作者:Paolo Perrone
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。