Этим летом я много работал с данными с естественной иерархической структурой. У нас есть некоторая переменная y для прогнозирования на основе функций x,но отношение немного различается в зависимости от местоположения. Мы можем обучать независимую модель для каждого местоположения, но это расточительно: конечно, мы можем воспользоваться тем фактом, что отношения в основном одинаковы для разных местоположений, особенно для тех местоположений, по которым у нас очень мало данных? В качестве альтернативы мы можем обучать одну модель в разных местах, но этот подход не учитывает тот факт, что в некоторых местах отношения действительно могут быть идиосинкразическими.
Этот параметр идеально подходит для Байесовской иерархической модели, и кажется, что нет лучшего способа обучения таких моделей, чем использование Stan. В следующем блокноте Jupyter Python я прохожу обучение таких моделей и сравниваю их со стандартными/другими потенциальными подходами. В частности, я показываю и сравниваю следующие типы моделей.
- Единая байесовская модель для разных мест в Стэне.
- Отдельная байесовская модель для каждого местоположения в Стэне.
- Байесовская иерархическая модель в Stan.
- Единая логистическая регрессия, с использованием scikit-learn, в том числе с различными уровнями регуляризации.
- Регуляризованные логистические регрессии как с отдельными параметрами для каждого местоположения, так и с совместными параметрами с использованием scikit-learn.
Примечание 1. Я не являюсь ни экспертом Стэна, ни байесовским статистиком, поэтому я полагаю, что есть ускорение кода и другие лучшие практики, которые я пропустил. Этот блокнот является результатом обучения на выходных или около того. Пожалуйста, прокомментируйте здесь или напишите мне на [email protected], чтобы исправить любые ошибки/отметить любые улучшения.
Примечание 2: Доступ к необработанному блокноту здесь.