Выбери алгоритм машинного обучения для задачи классификации, которым ты уверен
Что проверяют
Не название алгоритма, а глубину: сможете ли вы объяснить его устройство, гиперпараметры и случаи, когда он проигрывает. Следом почти всегда просят написать обучение и валидацию кодом или объяснить, почему выбран он, а не логистическая регрессия или бустинг.
Как отвечать
Выбирайте то, что разберёте до формул. Для табличных данных сильнее всего градиентный бустинг, но если увереннее себя чувствуете со случайным лесом, берите его. Каркас на его примере:
- устройство: ансамбль деревьев, каждое учится на бутстрэп-выборке и при каждом разбиении смотрит на случайное подмножество признаков. Итог голосованием или усреднением вероятностей, это снижает дисперсию одиночного дерева;
- гиперпараметры
RandomForestClassifier:n_estimators,max_depth,min_samples_leaf,max_features(для классификации по умолчаниюsqrt),class_weightдля дисбаланса; - валидация:
StratifiedKFoldи метрика под задачу. При дисбалансе смотрите ROC-AUC, PR-AUC, F1 и подбирайте порог; - бонус:
oob_score=Trueдаёт оценку на out-of-bag объектах без отдельной выборки; - ограничения: не экстраполирует, модели тяжёлые по памяти, а
feature_importances_завышает важность признаков с большим числом значений, надёжнееpermutation_importanceили SHAP.
Код держите коротким: Pipeline с препроцессингом, cross_val_score или GridSearchCV, classification_report в конце. Подчеркните, что предобработка живёт внутри пайплайна, иначе данные утекают между фолдами.
Закончите сравнением: на табличных данных лес обычно уступает CatBoost, LightGBM и XGBoost, зато почти не требует тюнинга и масштабирования признаков.
Где спотыкаются
Выбирают модный алгоритм, а на вопросе «как строится разбиение в дереве» замолкают. Лучше простая логистическая регрессия, разобранная до регуляризации.
Называют accuracy на несбалансированных данных. 95% при 5% положительного класса получает и модель, которая всегда отвечает «нет».
Масштабируют или кодируют признаки на всём датасете до разбиения на фолды. Это утечка, и метрики на валидации выходят завышенными.