btyd.fitters.BaseFitter._fit() got multiple values for keyword argument 'bounds'
Hi,
I want to pass custom bound values to the scipy.optimize.minimuze function in the GammaGammaFitter.fit() function, but I get the following error: btyd.fitters.BaseFitter._fit() got multiple values for keyword argument 'bounds'.
A small, simplified example to replicate this error would be:
from btyd import BetaGeoFitter
from btyd import GammaGammaFitter
from lifetimes.datasets import load_cdnow_summary_data_with_monetary_value
df_parsed = load_cdnow_summary_data_with_monetary_value()
returning_customers_summary = df_parsed[df_parsed["frequency"] != 0]
model = BetaGeoFitter()
model.fit(
frequency=df_parsed["frequency"],
recency=df_parsed["recency"],
T=df_parsed["T"]
)
print(model.summary)
gg_model = GammaGammaFitter(penalizer_coef=1e-2)
gg_model.fit(
frequency=returning_customers_summary["frequency"],
monetary_value=returning_customers_summary["monetary_value"],
bounds=((None, None), (0.00996, None), (None, None))
)
I need this feature to avoid problems with GammaGammaFitter.conditional_expected_average_profit() and GammaGammaFitter.customer_lifetime_value(). For my data I need a higher penalizer_coef which results in a q smaller than 1. Which then leads to negative CLV outputs. When I set q_constraint = True (meaning bounds=((None, None), (0.0, None), (None, None))) , I get q=1.0 as a parameter, which leads to nan values in GammaGammaFitter.conditional_expected_average_profit() and GammaGammaFitter.customer_lifetime_value(), so I want to "force" q to be bigger than 1.0 with custom bounds.
Hey @Username159,
GammaGammaFitter.fit() is a pre-fork legacy function from lifetimes; development ceased on that library 3 years ago.
I no longer maintain btyd because I've transitioned these efforts to the pymc-marketing project. I advise you to pip install and use the Gamma-Gamma model in that library instead:
https://github.com/pymc-labs/pymc-marketing
Here's a comparative notebook:
https://www.pymc-marketing.io/en/latest/notebooks/clv/gamma_gamma.html