Перейти к содержанию

Отбор признаков

Каждый кандидат проходит фильтры:

Фильтр Что проверяет Условие отсева
Nulls Долю пропусков. Признак удаляется, если доля пропусков строго больше max_null_fraction.
Like-constant Разнообразие непустых значений. Признак удаляется, если самое частое значение занимает долю строго больше max_mode_fraction.
Target score Индивидуальную предсказательную силу. Признак удаляется, если значение выбранной target-метрики меньше заданного для неё minimum. В качестве критерия можно выбрать AUC, Pearson, Kendall, Spearman, Information Value или Mutual Information.
Correlation Дублирование информации. При abs(corr) >= feature_correlation_threshold остаётся более полезный признак; описание порога — в feature_correlation_threshold.

По умолчанию используется AUC. Выбор между AUC и абсолютной корреляцией Пирсона, а также различие между minimum и feature_correlation_threshold описаны на странице Конфигурация отбора признаков.

Если selection не указан, pipeline использует SelectionConfig.auc() с порогами по умолчанию. Все пороги основного отбора задаются только внутри SelectionConfig.

Опциональный candidate_screening имеет собственные пороги и по-прежнему выполняет быстрый предварительный отбор по AUC до основной selection policy.

Несколько target-метрик можно объединить с логикой AND:

from featminer import (
    SelectionConfig,
    TargetMetricConfig,
    TargetMetricName,
)

selection = SelectionConfig(
    target_filters=(
        TargetMetricConfig(name=TargetMetricName.AUC, threshold=0.55),
        TargetMetricConfig(
            name=TargetMetricName.PEARSON,
            threshold=0.10,
        ),
    ),
    feature_correlation_threshold=0.70,
    max_null_fraction=0.50,
    max_mode_fraction=0.95,
)

При устранении коррелирующих признаков по умолчанию каждая target-метрика считается на собственной валидной выборке признака. Это сохраняет совместимость с прежним алгоритмом. Режим ComparisonPopulation.COMMON_VALID позволяет сравнивать оба признака на общем пересечении наблюдений.

Полное описание параметров: SelectionConfig.

Экспериментальное сравнение коррелирующих признаков

По умолчанию действует политика NullsFirstRedundancy: если два признака коррелируют, сначала сравнивается число пропусков и только при равном покрытии — предсказательная сила. Это сохраняет прежнее поведение.

Политику QualityFirstRedundancy можно включить явно для эксперимента:

from featminer import QualityFirstRedundancy, SelectionConfig

selection = SelectionConfig.auc(
    minimum=0.55,
    feature_correlation_threshold=0.90,
    redundancy=QualityFirstRedundancy(
        score_tolerance=0.005,
        minimum_valid_overlap=0.95,
    ),
)

Она сравнивает target score на общей валидной выборке. Если валидные выборки двух признаков перекрываются меньше чем на minimum_valid_overlap, сохраняются оба признака: различающееся покрытие может содержать дополнительную информацию. Число пропусков используется только при различии target score не более чем на score_tolerance.

Экспериментальная политика не включается автоматически и не меняет результат существующих запусков.