Построить простую, но эффективную модель машинного обучения для предсказания выживаемости пассажиров Титаника.
В рамках проекта решена классическая задача Kaggle — предсказать, выжил ли пассажир Титаника (Survived: 0 или 1), используя всего два предиктора:
- Pclass (класс билета: 1, 2, 3);
- Sex (пол пассажира, закодирован как 0/1).
Были обучены и сравнены две модели:
- Логистическая регрессия (линейная модель);
- Random Forest (ансамбль деревьев решений).
Лучшая модель выбрана по метрике точности (accuracy) на валидационной выборке. Решение задачи «Titanic: Machine Learning from Disaster» Описание проекта Это комплексное решение задачи предсказания выживаемости пассажиров на «Титанике» (соревнование Kaggle). В отличие от упрощённых подходов с 2–3 признаками, здесь реализован полноценный ML‑пайплайн с предобработкой данных, подбором моделей и ансамблевым обучением.
Ключевые особенности Глубокая предобработка данных
Удаление нерелевантных столбцов (Name, Ticket, Cabin).
Заполнение пропусков:
Embarked — модальным значением.
Fare — медианой.
Age — с помощью KNNImputer (учёт сходства пассажиров).
Кодирование категориальных переменных (Sex, Embarked).
Создание информативных признаков
FamilySize = SibSp + Parch + 1.
IsAlone (индикатор одиночных пассажиров).
AgeGroup (4 категории возраста).
FarePerPerson (стоимость билета на человека).
Масштабирование признаков
Для моделей, чувствительных к масштабу (LogisticRegression, XGBoost), применён StandardScaler.
Подбор гиперпараметров
Для каждой модели проведён GridSearchCV с 5‑кратной кросс‑валидацией.
Оптимизировано: C, penalty (LR); n_estimators, max_depth (RF); learning_rate, max_depth (XGB/CB) и др.
Ансамблевое обучение
Собраны 4 лучшие модели: LogisticRegression, RandomForest, XGBoost, CatBoost.
Реализован стекинг с оптимизацией весов голосования на валидационной выборке.
Использованные модели Logistic Regression
Базовая линейная модель для интерпретации ключевых факторов.
Подбраны C и тип регуляризации (l1/l2`).
Random Forest
Устойчивость к переобучению за счёт ансамбля деревьев.
Оптимизированы глубина и количество деревьев.
XGBoost
Градиентный бустинг с регуляризацией.
Настроены learning_rate, subsample, colsample_bytree.
CatBoost
Бустинг, учитывающий категориальные признаки «из коробки».
Оптимизированы depth, l2_leaf_reg.
Стекинг‑ансамбль
Мягкое голосование (voting='soft') с весами, подобранными на валидации.
Цель: объединить сильные стороны всех моделей.
Результаты Модель CV‑скор (кросс‑валидация) Валидационный скор Logistic Regression 0.8005 0.7933 Random Forest 0.8328 0.8101 XGBoost 0.8398 0.8212 CatBoost 0.8356 0.8156 Стекинг‑ансамбль — 0.8212 Лучший результат: стекинг‑ансамбль (0.8212 на валидации). Примечание: CV‑скор отражает усреднённую производительность на кросс‑валидации, валидационный скор — на отдельной выборке (20% от train).
Почему это лучше базового решения? Учёт контекста данных
Признаки типа FamilySize и AgeGroup отражают реальные факторы выживания (например, семьи и дети имели приоритет).
FarePerPerson корректирует стоимость билета на размер группы.
Снижение переобучения
KNN‑импутация возраста сохраняет структуру данных.
GridSearchCV предотвращает «подгонку» под шум.
Гибкость ансамбля
Стекинг комбинирует линейные (LR) и нелинейные (RF/XGB/CB) зависимости.
Веса голосования подобраны эмпирически, а не заданы вручную.
Воспроизводимость
Все шаги (от обработки пропусков до предсказания) автоматизированы.
Код структурирован для повторного запуска.