/tab_net

Primary LanguageJupyter Notebook

Tabular net experiments

Описание

  • для категориальных признаков строятся эмбеддинги, размер вектора эмбеддинга определяется кардинальностью каждого признака.
  • эмбеддинги конкатинируются с вещественными признаками и все передается в 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 проводилась разная предобработка данных что бы добиться похожих результатов.