В мире анализа данных Kaggle считается эталоном для проверки навыков машинного обучения. Это платформа, где теоретические знания сталкиваются с реальными сырыми данными. Рохан Кумар, автор канала SMDS, в рамках курса на freeCodeCamp.org представил подробное руководство по решению трех классических задач Kaggle на Python, пройдя путь от первичного анализа данных (EDA) до отправки финального файла на сервер.
🏠 Прогнозирование цен на жилье: продвинутая регрессия 1:03
Первый проект посвящен задаче регрессии — предсказанию стоимости недвижимости (Sale Price) на основе 79 объяснительных переменных . Кумар подчеркивает, что секрет успеха в таких соревнованиях кроется не столько в выборе алгоритма, сколько в тщательном проектировании признаков (Feature Engineering).
Стратегия объединения данных
Одной из ключевых рекомендаций автора является объединение тренировочного (train) и тестового (test) наборов данных в единый домен перед началом обработки . Это необходимо для того, чтобы манипуляции с данными (например, заполнение пропусков или кодирование) применялись единообразно.
- Инструмент: функция
pd.concatсо значениемaxis=0для вертикального стекинга . - Совет: чтобы не потерять границы наборов, стоит добавить временный столбец-метку или использовать длину исходного тренировочного датасета для последующего разделения .
Обработка пропущенных значений (NaN)
Кумар демонстрирует визуальный подход к очистке данных:
- Тепловая карта (Heatmap): использование библиотеки Seaborn для выявления колонок с критическим количеством пропусков .
- Удаление: колонки, в которых более 1100 значений отсутствуют (например, информация о бассейнах или аллеях), удаляются, так как они не несут статистической значимости .
- Заполнение категорий: пропуски в строковых данных заполняются значением 'None', которое в дальнейшем становится отдельной категорией при One-Hot Encoding .
- Числовые данные: для заполнения используются мода (наиболее частое значение) или среднее арифметическое, в зависимости от контекста переменной .
Выбор модели и обучение
Для решения задачи были протестированы три алгоритма:
- Linear Regression: базовая модель, показавшая высокую среднеквадратичную ошибку (MSE) .
- Random Forest Regressor: ансамблевый метод, значительно улучшивший результат .
- XGBoost (XGBRegressor): фаворит автора. При использовании гиперпараметров
n_estimatorsиlearning_rateэта модель показала наименьшую ошибку .
При итоговой отправке файла (output.csv) важно отключать индекс (index=False), чтобы формат соответствовал требованиям Kaggle . Результат автора на лидерборде составил 1458-е место, что является отличным стартом для базовой модели .
🛸 Spaceship Titanic: задача классификации 27:31
Вторая задача переносит нас в 2912 год. Космический корабль «Титаник» столкнулся с пространственной аномалией, и часть пассажиров была «транспортирована» в другое измерение. Задача: предсказать, кто именно исчез.
Алгоритм KNN Imputer
В отличие от первого проекта, где пропуски заполнялись вручную, здесь Кумар применяет более продвинутый инструмент — KNN Imputer .
- Принцип работы: алгоритм заполняет отсутствующее значение, глядя на $k$ ближайших соседей (по умолчанию 5), основываясь на схожести других признаков человека .
- Ограничение: KNN Imputer работает только с числовыми данными, поэтому категориальные признаки (планета, пункт назначения) необходимо предварительно преобразовать .
Инженерный подход к признакам
Автор разделяет колонку Cabin (формат Deck/Number/Side) на три независимых столбца с помощью регулярных выражений . Далее проводится анализ корреляции:
- Высокая корреляция: выяснилось, что нахождение в состоянии криосна (
CryoSleep) дает 32% вероятности успешной «транспортировки» . - Отрицательная корреляция: затраты на обслуживание номеров (
RoomService) указывают на то, что пассажир, скорее всего, остался в нашем измерении .
Для обучения использовался ансамбль из пяти моделей, включая LightGBM, который автор выделил как наиболее эффективный для данной задачи, достигнув точности около 80% .
🚢 Классический Titanic: основы выживания 58:35
Финальная часть курса посвящена самому известному соревнованию для новичков — гибели оригинального «Титаника».
Очистка «шумных» данных
Рохан Кумар утверждает, что такие столбцы, как Name (имя) и Ticket (номер билета), чаще всего бесполезны для модели, так как содержат слишком много уникальных значений и вносят «шум» . Однако он предлагает извлечь пользу из колонки Cabin, разделив её на букву палубы и номер каюты .
Создание синтетических признаков
Чтобы помочь модели, автор создает новые переменные на стыке существующих:
- Отношение стоимости к классу: деление стоимости билета (
Fare) на номер класса (Pclass) . - Гендерный фактор: Кумар отмечает, что женщины имели колоссальное преимущество при спасении (корреляция 54%), и учитывает это в логике модели .
Спор о 100% точности
Обсуждая лидерборд Titanic, Кумар выражает скепсис по поводу участников с точностью 100% . По его мнению, достичь идеального результата в этой задаче без «подглядывания» в реальные списки погибших невозможно, так как в данных всегда присутствует элемент случайности. Реалистичным хорошим результатом считается точность в диапазоне 79–82% .