Здесь представлены 3 решения(в том числе финальное - 3 место) для соревнования, который дается в конце курса "Введение в Data Science и машинное обучение" на stepik.
В папке notebooks решения:
- model-baseline.ipynb - бейслайн который уже был. За основу взять признаки которые создавали в течении курса. ROC_AUC = 0.8845
- model-auto_features.ipynb - решение основанное на полностью автоматической генерации фич. ROC_AUC = 0.8926. За основу использовал библиотеки для автоматической генерации признаков featuretools и tsfresh.
- model-final.ipynb - финальное решение (авто фичи + парочку своих) ROC_AUC = 0.8933
- make_dataset_auto_features.ipynb - генерация датасетов для автоматических фич
Целевая пеменная принимает значение True, если пользователь имеет более 40 событий correct, и False в противном случае. В качестве модели используется RandomForest из sklearn.
Структура проекта (шаблон)
- notebooks - каталог с блокнотами решений и создания прзнаков для обученя моделей
- model-baseline.ipynb - бейслайн который уже был ROC_AUC = 0.8845
- model-auto_features.ipynb - решение основанное на полностью автоматической генерации фич. ROC_AUC = 0.8926.
- model-final.ipynb - финальное решение (авто фичи + парочку своих) ROC_AUC = 0.8933
- make_dataset_auto_features.ipynb - генерация датасетов для автоматичских фич
- libs - папка с кодом для генерации датасетов, признаков и вспомогательными модулями
- data_iter1.py - признаки для модели(baseline) основанных на том что давали в курсе
- data_iter_auto.py - признаки сгенерированные автоматически
- data_iter_final.py - признаки для финальной модели в соревновании
- data - папка с данными
- event_data_train.zip - данные о действиях, которые совершают студенты со стэпами. Используются для обучения.
- submissions_data_train.zip - данные о времени и статусах сабмитов к практическим заданиям. Используются для обучения.
- events_data_test.zip - данные о действиях, которые совершают студенты со стэпами. Используются для прогноза.
- submission_data_test.zip - данные о времени и статусах сабмитов к практическим заданиям. Используются для прогноза.
- submission_example.csv - пример файла с предсказаниями.
- course_data.json - дополнительный датасет с информацией о курсе Анализ данных в R. Содержит информацию о step-аx(доступна gо ключу steps), а также других сущностях курса.
- hb_course_info.csv - дополнительный датасет c важной информацией о курсе, собранный в таблицу на основе данных из course_data.json. Удалены незначительные, на мой взгляд, признаки.
- processed - каталог с сгенерированными датасетами готовыми для моделирования. Датасеты со сгенерированными признаками приложены
- reports - в этой папке размещаются файлы с прогнозом
- bin_models - в этой папке сохраняются бинарные файлы моделей.
В репозитории нет кода по подбору гиперпараметров и отбору признаков. Примеры можно найти в официальной документации:
Задача нам уже знакома - нужно предсказать, сможет ли пользователь успешно закончить онлайн курс Анализ данных в R. Мы будем считать, что пользователь успешно закончил курс, если он правильно решил больше 40 практических заданий.
В данных:
- submission_data_test.csv
- events_data_test.csv
хранится информация о решениях и действиях для 6184 студентов за первые два дня прохождения курса. Это 6184 студентов, которые проходили курс в период с мая 2018 по январь 2019.
Используя данные о первых двух днях активности на курсе вам нужно предсказать, наберет ли пользователь более 40 баллов на курсе или нет.
В этих данных, вам доступны только первые дня активности студентов для того, чтобы сделать предсказание. На самом деле, используя эти данные, вы уже можете сделать прогноз. Например, если пользователь за первые два дня набрал 40 баллов, скорее всего он наберет более 40 баллов в дальнейшем. Чтобы подкрепить такие гипотезы, вы можете использовать данные, на которые мы исследовали в первых двух модулях курса, где для всех пользователей представлены все данные об их активности на курсе.
Итогом вашей работы должен стать csv файл c предсказанием для каждого студента из тестовых данных. Пример предсказания выглядит следующим образом.
Чтобы узнать точность ваших предсказаний, в качестве решения этого шага отпраьте файл с предсказаниями для каждого студента в указанном выше формате.
Убедитесь, что вы сформировали файл с предсказаними для всех 6184 студентов, для каждого студента должна быть предсказана вероятность, что он наберет более 40 баллов за курс. У вас есть 20 попыток засабмитить решения, в зачет пойдет наилучший вариант.
Результатом проверки этого задания будет значение ROC AUC score, именно по этому показателю мы и отберем победителей, успехов!
Завершение соревнования - 1 июня.
-
events_train.csv - данные о действиях, которые совершают студенты со стэпами
- step_id - id стэпа
- user_id - анонимизированный id юзера
- timestamp - время наступления события в формате unix date
- action - событие, возможные значения:
- discovered - пользователь перешел на стэп
- viewed - просмотр шага,
- started_attempt - начало попытки решить шаг, ранее нужно было явно нажать на кнопку - начать решение, перед тем как приступить к решению практического шага
- passed - удачное решение практического шага
-
submissions_train.csv - данные о времени и статусах сабмитов к практическим заданиям
- step_id - id стэпа
- timestamp - время отправки решения в формате unix date
- submission_status - статус решения
- user_id - анонимизированный id юзера