0

I tried the following code from the lifetimes library, using a 1 million row dataset. I get the error "ConvergenceError: The model did not converge. Try adding a larger penalizer to see if that helps convergence." I havent set any penalizer.

 bgf.fit(summary_cal_holdout['frequency_cal'], 
        summary_cal_holdout['recency_cal'], 
        summary_cal_holdout['T_cal'])

 fun: -0.6687805030754939
 hess_inv: array([[3.59401922e+00, 4.07817298e+00, 1.96553220e-04, 3.81178105e-01],
       [4.07817298e+00, 7.68848347e+00, 2.57679876e-04, 3.33282620e+00],
       [1.96553220e-04, 2.57679876e-04, 7.65922646e+01, 7.65930375e+01],
       [3.81178107e-01, 3.33282620e+00, 7.65930375e+01, 1.05547305e+02]])
      jac: array([ 5.54469203e-07, -1.18094006e-07, -6.14083829e-08,  6.21662541e-08])
  message: 'Desired error not necessarily achieved due to precision loss.'
     nfev: 87
      nit: 42
     njev: 76
   status: 2
  success: False
        x: array([-0.60365091, -1.75150201, 12.07528864, 14.80580897])
---------------------------------------------------------------------------
ConvergenceError                          Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_28924\3528314986.py in <module>
----> 1 bgf.fit(summary_cal_holdout['frequency_cal'], 
      2         summary_cal_holdout['recency_cal'],
      3         summary_cal_holdout['T_cal'])

~\anaconda3\lib\site-packages\lifetimes\fitters\beta_geo_fitter.py in fit(self, frequency, recency, T, weights, initial_params, verbose, tol, index, **kwargs)
    135         scaled_T = T * self._scale
    136 
--> 137         log_params_, self._negative_log_likelihood_, self._hessian_ = self._fit(
    138             (frequency, scaled_recency, scaled_T, weights, self.penalizer_coef),
    139             initial_params,

~\anaconda3\lib\site-packages\lifetimes\fitters\__init__.py in _fit(self, minimizing_function_args, initial_params, params_size, disp, tol, bounds, **kwargs)
    113             return output.x, output.fun, hessian_
    114         print(output)
--> 115         raise ConvergenceError(
    116             dedent(
    117                 """

ConvergenceError: 
The model did not converge. Try adding a larger penalizer to see if that helps convergence.

0 Answers0