В рамках задания была решена задача бинарной классификации: необходимо предсказать, получает ли человек доход больше значения N или меньше/равно N.
Данные содержат как числовые, так и категориальные признаки, поэтому перед обучением моделей были выполнены:
- загрузка и первичный анализ данных;
- очистка поврежденных строк;
- обработка пропусков;
- кодирование категориальных признаков;
- обучение и сравнение нескольких моделей.
В работе были протестированы следующие модели:
- Logistic Regression
- Random Forest
- Gradient Boosting
Главной метрикой в работе считаю F1-score для класса >N.
Причина выбора этой метрики заключается в том, что классы в задаче распределены неравномерно, и одной accuracy недостаточно для корректной оценки качества модели.
F1-score позволяет одновременно учитывать:
- precision — насколько точно модель предсказывает класс
>N; - recall — насколько полно модель находит объекты класса
>N.
Дополнительно использовались метрики:
- Accuracy
- ROC-AUC
По результатам сравнения лучшей моделью оказался Gradient Boosting, который показал лучшие значения F1-score, Accuracy и ROC-AUC на validation-выборке.
В директории находятся следующие файлы:
ml_test_task.ipynb— основной Jupyter Notebook со всеми этапами решения;ml_test_task.html— HTML-версия ноутбука для удобного просмотра результатов;final_submission.csv— итоговый файл с предсказаниями для test-выборки;data.txt— обучающая выборка с целевой переменной;test_empty.txt— тестовая выборка без целевой переменной;description.txt— описание задачи, структуры данных и требований к результату;README.md— краткий отчет по выполненной работе.
После выбора лучшей модели она была обучена на всей обучающей выборке и использована для получения финальных предсказаний для test-выборки.