一个可以停止机器学习特征选择的python工具
作者头像
  • 2019-10-20 14:58:12 1

引言

本文将介绍一款高效的工具,帮助用户快速构建机器学习工作流程。这款工具能够有效地执行特征选择,从而优化模型的性能。

特征选择的重要性

特征选择是指在数据集中挑选最有效的特征,它是机器学习流程中的关键步骤。不必要的特征不仅会降低训练速度,还会降低模型的可解释性,最重要的是,它们会损害模型在测试集上的泛化能力。

工具介绍

在处理机器学习任务时,我发现自己反复使用特定的特征选择方法,这让我萌生了编写一个工具的想法。因此,我开发了一个名为 FeatureSelector 的 Python 类,它包含了多种常用的特征选择方法。这些方法包括: - 缺失值比例高的特征 - 高度相关的特征(共线性) - 基于树的模型中不重要的特征 - 低重要性的特征 - 单一唯一值的特征

示例数据集

我们将使用 Kaggle 上的 Home Credit Default Risk 数据集作为示例。该数据集包含许多缺失值、高度相关的特征和一些无关的特征,非常适合用于特征选择。

创建实例

要使用 FeatureSelector 类,需要传入一个结构化的数据集,其中包括特征和标签。由于这是一个监督分类任务,我们需要同时传入特征和标签。

特征选择方法

缺失值

首先,我们可以通过查找缺失值比例超过某个阈值的特征来进行初步筛选。例如,设置阈值为 60%,可以识别出缺失值超过 60% 的特征。

python fs.identify_missing(missing_threshold = 0.6)

接着,我们可以查看每个特征的缺失值比例,并绘制缺失值分布图。

共线性特征

共线性特征是指那些彼此高度相关的特征。这类特征会导致模型方差增大,降低模型的可解释性。我们可以通过设定相关系数阈值来识别这些特征。

python fs.identify_collinear(correlation_threshold = 0.98)

我们还可以绘制热图来直观地展示这些特征之间的相关性。

零重要性特征

零重要性特征是指那些在基于树的模型中不被使用的特征。这类特征不会影响模型的决策过程。FeatureSelector 使用 LightGBM 库来查找这些特征。

python fs.identify_zero_importance(task = 'classification', eval_metric = 'auc', n_iterations = 10, early_stopping = True)

我们还可以通过绘制特征重要性图来查看这些特征的分布情况。

低重要性特征

低重要性特征是指那些对模型整体重要性贡献较小的特征。通过设定累积重要性阈值,我们可以进一步筛选这些特征。

python fs.identify_low_importance(cumulative_importance = 0.99)

单一唯一值的特征

单一唯一值的特征对机器学习没有实际意义,因为这些特征的方差为零。我们可以通过简单的函数来识别这些特征。

python fs.identify_single_unique()

删除特征

一旦确定了要删除的特征,我们可以通过手动删除或使用内置的 remove 函数来删除这些特征。

python train_removed = fs.remove(methods = 'all')

总结

FeatureSelector 类提供了一系列强大的特征选择工具,帮助用户快速构建高效的机器学习工作流程。这些方法可以帮助用户在训练模型前剔除不必要的特征,从而提高模型的性能和泛化能力。希望这些工具能对大家有所帮助!

英文原文链接:https://towardsdatascience.com/a-feature-selection-tool-for-machine-learning-in-python-b64dd23710f0

    本文来源:图灵汇
责任编辑: :
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
特征停止机器选择工具可以python学习一个
    下一篇