跳转至

特征筛选

适用场景

特征筛选用于将宽表候选特征压缩成可建模、可监控的集合。MARS 提供统计筛选、线性筛选和重要性 筛选三类对象;它们可以独立使用,也可以进入 Pipeline。

统计筛选完整调用

import polars as pl

from mars.feature import MarsStatsSelector

df = pl.DataFrame(
    {
        "income": [2600, 3100, 3500, 3900, 4500, 5200, 6100, 7200] * 3,
        "utilization": [0.72, 0.64, 0.55, 0.48, 0.36, 0.28, 0.19, 0.11] * 3,
        "constant": [1.0] * 24,
        "target": [1, 1, 1, 0, 1, 0, 0, 0] * 3,
    }
)

selector = MarsStatsSelector(
    missing_thr=0.95,
    iv_thr=0.0,
    lift_thr=None,
    psi_thr=None,
    rc_thr=None,
    corr_thr=None,
    skip_fine_scan=True,
    n_jobs=1,
)
selector.fit(
    df,
    target="target",
    features=["income", "utilization", "constant"],
    white_list=["income"],
)

selected_features = selector.selected_features_
selection_report = selector.get_report()

示例关闭了 PSI 和 RC,因为它只做静态筛选。默认 psi_thrrc_thr 已启用;使用默认值时必须 提供 group_coltime_col

选择器职责

选择器 输入风格 主要用途
MarsStatsSelector fit(df, target=...) 质量、IV/Lift、PSI、RC、相关性和黑白名单
MarsLinearSelector fit(X, y) L1、相关性和线性模型筛选
MarsImportanceSelector fit(X, y) 或重要性表 模型原生重要性、SHAP 或已有重要性结果

MarsImportanceSelector.method 只支持 "importance""shap"。从未实现的 "rfe""sfm" 选项已从 public contract 删除,构造时会立即拒绝。

基准样本

MarsStatsSelector.fit(..., benchmark_df=...) 使用基准数据拟合粗筛和精筛分箱,并构造 PSI expected distribution。选择器采用双样本口径:质量、缺失率、分布和 PSI 使用完整 df;监督分箱、IV、 Lift、RC 和 WOE 相关性只使用 df 中 target 非空的已表现样本。当前数据仍必须包含至少两个 有效 target 类别;target 为空的最新未表现样本不会稀释标签类指标或 WOE 相关性。

Selector 不长期保存原始基准样本。调用 get_binning_report() 时,需要再次传入同一 benchmark_df 才能复现基准口径。

输出

字段 用途
selected_features_ 最终保留的特征名列表
get_report() 每个特征的选择结果和指标记录
get_binning_report() 对保留特征生成结构化分箱评估报告

white_list 保护必须保留的业务特征;black_list 排除泄漏、合规受限或线上不可用字段。黑名单优先 于自动指标规则。

三个 selector 的 transform() 都对缺少的已选特征默认报错;仅在调用方已处理 schema drift 时显式传 on_missing="warn""ignore"。报告级必需指标列缺失会终止; 单特征指标缺行、为空或非有限值时,该特征以 metric_unavailable 淘汰并留在决策报告中。

常见失败

  • 静态筛选没有分组列却保留默认 PSI/RC:显式设置 psi_thr=None, rc_thr=None
  • importance_table 未定义或列结构不明:先由 Modeling 结果读取受支持的重要性表,再传给选择器。
  • 筛选后没有特征:读取 get_report(),调整最早导致全量淘汰的阈值或名单规则。

下一步