Оптимизация выполнения монтажника Lifetime BG/NBD

#python #python-3.x #pandas #lifetimes-python

Вопрос:

Прочитайте документ и конкретного монтажника на всю жизнь.

У меня есть набор данных из ~166 тыс. клиентов (строк) в формате недавности, частоты и T, необходимых для соответствия модели. Я использую следующий код, аналогичный тому, что описано в разделе быстрого запуска:

 # similar API to scikit-learn and lifelines.
bgf = BetaGeoFitter(penalizer_coef=0.0)
bgf.fit(data['frequency'], data['recency'], data['T'])
print(bgf)

# bgf fit time: 2.42 seconds
# total runtime: 2.56 seconds
 

Моя цель здесь-сократить время подгонки. Для контекста я запускаю моделирование, в котором эта модель подходит несколько раз. Несколько раз здесь, что означает, если мы сможем, ~ 720 * 10 000. Это уйма времени. Даже на консервативных уровнях (~ 180 * 100) это все равно займет полдня.

У меня есть ~3 других функции, которые выполняются после подгонки модели. Удалось векторизовать один, и теперь все они работают под/около 0,04 секунды. Соответствие этой модели является крупнейшим фактором, влияющим на время выполнения.

Итак, я полагаю, что общий вопрос здесь заключается в том, как оптимизировать монтажника из коробки? Я подозреваю, что это возможно, но не уверен.

Я новичок в этой области и в лучшем случае являюсь приличным программистом/разработчиком. Я могу добавить больше контекста там, где это необходимо, но подумал, что вышесказанное достаточно уместно. Советы, указания и полезные комментарии приветствуются! Спасибо!