Название команды - SYDE
Ссылка на соревнование kaggle
В данном файле проводится предварительная обработка данных, проверка и выдвижение различных гипотез, обучение baseline-модели.
В файле 01_eda_baseline выдвинута гипотеза о том, что модельное предсказание и добавление в качестве фичи веса, который используется для расчета метрики, может повысить качество итоговой модели. В данном файле обучается модель, которая предсказывает вес.
В данном файле предсказанный вес используется в качестве фичи итогового регрессора. Выяснено, что при таком подходе модель сильно переобучается, поэтому принято решение отложить его.
В файле 01_eda_baseline было выяснено, что модель занижает прогноз для клиентов с высокой зарплатой и завышает для клиентов с низкой зарплатой. Выдвинута гипотеза, что предсказание сегмента доходности клиента может улучшить качество итогового регрессора.
Выделено 2 подхода:
- Использование предсказаний классификатора в качестве фичей для регрессора
- Построение по одному регрессору на каждый предсказанный класс
В данном файле обучаются классфикаторы. Эксперементы проводились с разделением клиентов на 2 и на 3 сегмента доходности.
В данном файле предсказания классификатора используются как фичи регрессора. Такой подход позволил существенно улучшить метрику на валидационном и публичном датасетах, поэтому принято решение развивать идею с использованием классификатора.
В данном файле обучается 3 регрессора для каждого сегмента, предсказанного классифкатором. Такой подход позволил улучшить метрику, но возник вопрос об оптимальных границах сегментов доходности. В качестве бэйзлайна все клиенты были разбиты на 3 равных по количеству сегмента.
Оптимальные границы для регрессора проанализированы в файле 01_eda_baseline, пункт Улучшиться ли качество модели, если разбить датасет на бины по таргету? Выяснено, что оптимальными границами сегментов для регроссора являются 0.7 и 0.9 квантиль по таргету. Но с такими границами метрика на публичном датасете ухудшалась. Даная проблема была проанализирована в файле 08_ensemble_analysis.ipynb
Протестирован такой же подход, что и в файле 06_ensemble_3model_clf, но с бинарныйм классифкатором на 2 сегмента доходности. Метрика на публичном и валидационном датасете оказалась лучше при разбиении на 3 сегмента доходности, поэтому далее использовалось только 3 сегмента.
В данном файле анализируется, почему при обучении пайплайна на оптимальных для регрессора границах (0.7, 0.9 квантили), ухудшается метрика на публичном датасете. Выяснено, что при использовании таких границ, регроссоры сильно переобучаются, особенно регрессор, отвечающий за клиентов с экстримально высоким доходом. Принято решение разделять датасет на 3 равные сегменты, то есть границы будут 1/3 и 2/3 квантили.
Переобучение регрессора на втором сегменте (экстримально высокий доход)
В данном файле объеденины все командные подходы по генерации дополнительных фичей, включая фичи из внешних источников, и сохраняется итоговый датаесет.
Файл для обучения классификатора на kaggle с использованием GPU. В данном файле добавлен алгоритм отбора фичей RecursiveByShapValues и подбор гиперпараметров с помощью optuna.
Файл для обучения регрессора с фичами классифкатора (первый подход) на kaggle с использованием GPU. В данном файле добавлен алгоритм отбора фичей RecursiveByShapValues и подбор гиперпараметров с помощью optuna.
Файл для итоговой разметке тестового датасета на моделях, обученных на kaggle
- Найти оптимальные границы сегментов для всего пайплайна. Границы 0.7 и 0.9 были найдены только для регрессора, а на всем пайплайне они показали результат хуже, чем границы 1/3 и 2/3.
- Развитие подхода с тремя регрессорами на предсказаниях классификатора. Возможно метрика улучшится, если для каждого регрессора сделать индивидуальные отбор фичей и подбор гиперпараметоров.
- При обучению регрессоров отдельно на каждый сегмент, обогощать их обучающую выборку данными из других сегментов. Возможно это снизит вероятность переобучения и улучшит итоговую метрику.