Ответ
Отбор признаков — это процесс выбора наиболее информативных переменных для модели. Я использую комбинацию методов в зависимости от объема данных, вычислительных ресурсов и типа модели.
Три основных подхода:
1. Методы-фильтры (Filter Methods) Оценивают значимость признаков независимо от модели, на основе статистических мер.
- Корреляция: Удаление сильно коррелирующих признаков (мультиколлинеарность).
corr_matrix = X.corr().abs() upper_tri = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool)) to_drop = [column for column in upper_tri.columns if any(upper_tri[column] > 0.85)] X_filtered = X.drop(to_drop, axis=1) - Взаимная информация (Mutual Information): Измеряет нелинейную зависимость между признаком и целевой переменной.
from sklearn.feature_selection import mutual_info_classif mi_scores = mutual_info_classif(X, y) - ANOVA F-test: Оценивает различия между группами для категориальных целей.
2. Встроенные методы (Embedded Methods) Отбор происходит в процессе обучения модели.
- Важность признаков в деревьях: Модели на основе деревьев (Random Forest, XGBoost) вычисляют
feature_importances_.from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier() rf.fit(X, y) importances = rf.feature_importances_ # Выбираем топ-N признаков indices = np.argsort(importances)[-10:] - L1-регуляризация (Lasso): Штрафует абсолютные значения весов, обнуляя неважные.
from sklearn.linear_model import LassoCV lasso = LassoCV().fit(X, y) selected_features = X.columns[lasso.coef_ != 0]
3. Методы-обертки (Wrapper Methods) Используют производительность модели как критерий отбора. Точны, но требуют больших вычислений.
- Рекурсивное исключение признаков (RFE): Последовательно удаляет наименее важные признаки.
from sklearn.feature_selection import RFE from sklearn.svm import SVC estimator = SVC(kernel="linear") selector = RFE(estimator, n_features_to_select=5, step=1) selector = selector.fit(X, y) X_rfe = X.loc[:, selector.support_] - Последовательный отбор (Forward/Backward Selection): Пошаговое добавление или удаление признаков.
Дополнительно: Методы на основе дисперсии (удаление константных и квази-константных признаков) и методы уменьшения размерности (PCA, t-SNE), которые не отбирают, а преобразуют признаки.