Kaggle知识点:可解释的特征筛选方法

您是否曾遇到过一个性能极佳的模型,却无法向业务方或监管机构解释它的决策依据?在大数据时代,模型性能固然重要,但其背后的可解释性 (Interpretability) 已成为构建可信赖 AI 的核心要素。

尤其是在金融风控、医疗诊断等高风险领域,仅仅提高 ROC-AUC 或准确率是不够的。我们需要知道:模型是基于哪些关键信息做出的决策?这些信息是否稳定、可靠,并符合领域常识?

这正是特征选择 (Feature Selection) 阶段需要关注的重点。一个优秀的特征选择过程,不仅能精简模型、加速训练、降低过拟合风险。让我们深入了解这些方法如何帮助我们构建既高效又可解释的模型。


移除常量/准常量特征

变异性为零或较低的特征极少能作为有用的预测因子。因此,在数据科学项目之初移除它们是简化数据集和后续数据预处理流水线的有效方法。

在 Python 中,我们可以使用 pandas.std 或 pandas.unique 方法来查找常量特征,然后使用 drop 来移除它们。


移除重复特征

重复特征(Duplicate features)是指数据集中完全相同的列,即它们在所有行中包含的值都一模一样。重复特征可能由于数据管理不善或数据操作过程中的失误而意外引入。

例如,对分类变量进行独热编码(One-Hot Encoding)或添加缺失数据指示器时,可能会意外创建重复的新记录。


移除高相关的特征

pandas.corr() 支持的所有相关性计算方法都可以在此选择器中使用,包括 Pearson(皮尔逊)、Kendall(肯德尔)或 Spearman(斯皮尔曼)系数。您也可以传入一个自定义的相关性函数,前提是该函数返回的值介于 -1 和 1 之间。

  • 保留:在一个相关的特征组中,第一个被发现的特征将被保留。
  • 移除:所有后续被发现与该特征相关的其他特征都将被移除。

在线性模型中尤其重要,有助于提高模型稳定性和可解释性,避免同一个信息被多个特征重复携带。


移除信息量低的特征

在处理具有大量特征的数据集时,多个特征(如三个、四个或更多)之间出现相互关联的情况非常常见。在这种情况下,决定保留哪些特征和移除哪些特征成为一个关键的考虑因素。

  • 方差 (Variability/Variance):倾向于保留具有最高方差的变量,因为更高的方差通常意味着更高的值多样性。
  • 基数 (Cardinality):倾向于保留具有最高基数(唯一值数量)的变量,因为它通常提供关于目标变量的更多信息。
  • 缺失数据 (Missing Data):倾向于保留缺失数据最少的变量,因为它通常更可靠、信息更完整

移除性能增益低的特征

识别那些单独就能展示出强大预测能力的特征,该选择过程的工作原理如下:

1. 训练模型:使用数据集中的每个特征(一个特征一个模型)单独训练一个机器学习模型。

2. 评估性能:使用选定的性能指标(如R2、ROC\_AUC等)评估每个单特征模型的表现。

3. 保留特征:保留那些性能超过指定阈值 (threshold) 的特征。

4. 自动阈值:如果 threshold 参数设置为 None,算法将自动选择性能高于所有单个特征模型平均性能的特征。


递归特征消除

在整个变量集上训练一个模型,并记录其初始性能值。从该模型中获取特征重要性,并根据重要性对特征进行升序排序(即最不重要的特征排在前面),以确定递归移除的顺序。

  • 移除当前最不重要的特征。
  • 使用剩余变量训练一个新的模型。
  • 比较新模型的性能与前一个模型的性能。
    如果新模型性能下降(即移除该特征导致性能下降),则保留该特征。
    如果新模型性能不变或提高,则移除该特征。
  • 重复此过程,直到评估完数据集中的所有特征。

基于洗牌的选择

如果一个特征具有预测性,打乱它在行间的值会破坏其与目标变量的关系,导致预测结果显著偏离实际值(即性能大幅下降)。相反,如果一个特征不具有预测性,改变其值的顺序对模型预测几乎没有影响(即性能变化很小)。

  • 训练基线模型:使用所有可用特征训练一个机器学习模型。
  • 建立基线性能:确定该模型的基线性能指标值。
  • 特征洗牌:随机打乱(Shuffling/Permutation)单个特征的值,而保持所有其他特征不变。
  • 生成预测:使用步骤 1 中训练好的模型对包含已洗牌特征的数据生成预测。
  • 测量性能:根据这些新预测测量模型的性能。
  • 决定保留:
    如果性能下降的幅度超过预定义的阈值,则保留该特征(因为它很重要)。
    否则,移除该特征(因为它不重要)。
  • 重复:对每个特征重复步骤 3-6,直到所有特征都被评估。

基于目标均值性能的选择

通过计算每个特征级别(类别或区间)对应的目标变量平均值作为“预测值”,然后比较这些“预测值”与目标变量的实际值,以此来确定一个性能指标。

这个特征选择的核心思想非常简单:它实际上是为每个特征拟合一个最简单的模型一个单变量的最小二乘拟合。对于连续变量,它通过分箱(Binning)将其转换为“类别”。

  • “预测”生成:
    分类变量: 计算目标变量在每个类别中的平均值。
    连续变量: 将连续变量分到不同的区间(Bins)中,并计算目标变量在每个区间中的平均值。
  • 性能评估: 使用这些目标均值作为该特征的“预测”,将其与目标变量的真实值进行比较,计算出所选的性能指标。

基于 PSI 的特征删除

识别并移除那些在分布上发生显著变化(即“不稳定”)的特征。这种不稳定性是使用人口稳定性指数 (Population Stability Index, PSI) 来量化的。所有 PSI 值高于给定阈值的特征都将被移除。

对于连续特征,计算 PSI 涉及以下步骤:

1. 将特征值分到离散的 n 个区间(Bins)中。

2. 计算每个区间中观测值的比例(百分比)。

3. 比较两个数据集(基准集 basis 和测试集 **test**)中对应区间的比例差异。



基于信息值 (IV) 的选择

通过计算每个特征的信息值 (Information Value,IV) 来进行选择,并保留 IV 大于用户设定阈值 (threshold) 的特征。

要计算 IV ,必须先计算每个特征的每个唯一类别或分箱的证据权重 (Weight of Evidence, WoE)。

WoE 衡量了特征的某个类别或分箱对目标变量的预测方向和强度。


Fraction of Positive Cases:该类别/分箱中,目标类别 1 的观测值占总目标类别 1 观测值的比例。
Fraction of Negative Cases:该类别/分箱中,目标类别 0 的观测值占总目标类别 0 观测值的比例。


探针特征选择

通过引入一个或多个随机变量(称为探针特征,**probe features)来评估和选择特征的方法。其核心思想是:任何比随机噪声(即探针特征)重要性更低的特征,都应该被视为噪声并被移除。**

1. 添加探针: 向原始数据集添加一个或多个随机生成的探针特征。

2. 计算重要性: 为所有特征(包括探针)计算特征重要性。

3. 确定阈值: 计算所有探针特征的平均重要性作为选择阈值。

4. 特征选择: 移除所有重要性低于探针平均重要性的特征。


最小冗余最大相关性

选择出与目标变量相关性强 (Maximum Relevance) 但特征之间冗余度低 (Minimum Redundancy) 的特征子集的方法。该方法通过计算一个重要性分数,并迭代地选择分数最高的特征。

MRMR 是一种迭代的贪婪算法,它逐步构建一个特征子集:

1. 初始选择(最大相关性): 计算所有预测变量与目标变量的相关性 (relevance),并选择相关性最高的特征 f1 加入到已选特征集合 S。

2. 迭代选择(最小冗余最大相关性):
计算剩余特征 fi ∉ S 与已选特征 fj∈ S之 之间的平均冗余度 (mean redundancy)。
根据相关性 (Relevance) 和平均冗余度 (mean redundancy),计算每个剩余特征的MRMR重要性分数。
选择 MRMR 分数最高的特征 fnew 加入 S. 。
重复此步骤,直到达到预定的特征数量 。


本文转自:Coggle数据科学,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章