Отбор признаков
Каждый кандидат проходит фильтры:
| Фильтр | Что проверяет | Условие отсева |
|---|---|---|
| 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.
Экспериментальная политика не включается автоматически и не меняет результат существующих запусков.