- для категориальных признаков строятся эмбеддинги, размер вектора эмбеддинга определяется кардинальностью каждого признака.
- эмбеддинги конкатинируются с вещественными признаками и все передается в residual block, входной размер для residual block задается в соотвествии с числом признаков.
- в настройках конфига можно указать что бы размер эмбеддинг был меньше чем кардинальность категории или наборот больше. В АutoGluon использовалось не линейное уменьшение, текущие параметры от туда.
- run_test.py запуск обучения и базовый конфиг, используется sacred + omniboard для логирования и воспроизводимости.
- data_processor.py cчитается число категориальных признаков и размер эмбеддинга для каждого
- tab_net NN c эмбеддингами и MLP ( для сравнения )
- credit_tab_net_first_tests.ipynb тест модели, основные запуски через run_test.py.
в run_test.py сначало обучается линейная регрессия как бейзлайн на данных, а затем сама сеть, с эмбеддингами или MLP. Это делается для того что бы посмотреть
- как влияет предобрабока данных
- какой прирост эмбеддинги дают посравнению с MLP, а MLP посравнению с регрессией
- производилось сравнение (на двух датасетах) обучения LGBM на эмбеддингах, на оригинальных данных и NN. Выгрузка эмбеддингов из модели get_embeddings.ipynb, обучение моделей LGBM_on_embeddings.ipynb.
Бенчмаркинг с https://github.com/awslabs/autogluon/
- NN из библиотеки выше давала более хорошие результаты на таких же данных, так как там внутри происходит предобработка данных, в linear_model_vs_AutoGluon_fe_preprocessing.ipynb проводилась разная предобработка данных что бы добиться похожих результатов.