特征选择是构建高效机器学习模型的关键步骤。
介绍Featurewiz
如果你对Featurewiz还不熟悉,那么听好了:
多年来,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的工作原理:递归XGBoost特征选择
Featurewiz的特征选择功能由递归XGBoost排名驱动,逐步优化特征集。其工作原理如下:
这种方法确保只有最相关、冗余最少的特征被选中,从而提高模型的性能和效率。
下一步:带有拆分驱动的递归XGBoost的Featurewiz-Polars
原始featurewiz方法功能强大,但也有一些权衡——它可能容易过拟合,并且缺乏内置的泛化机制评估。这就是最新版本featurewiz-polars的用武之地。
新增功能?拆分驱动的递归XGBoost
这种改进的方法引入了基于验证的特征选择,利用Polars提高速度和效率。其工作原理如下:
与现有库进行基准测试
我们使用mRMR特征选择库的Polars实现进行了公平比较,测试了Featurewiz-Polars。
测试1:克利夫兰心脏病数据集
测试2:加利福尼亚房屋数据集(回归任务)
安装指南
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运行更快,选择的特征更少,并且提供了更好的模型性能。
如果你正在处理特征选择问题,不妨尝试一下,并亲自比较结果!