ColtAllen / btyd

Buy Till You Die and Customer Lifetime Value statistical models in Python.
https://btyd.readthedocs.io/
Apache License 2.0
114 stars 9 forks source link

Start Here #16

Closed ColtAllen closed 2 years ago

ColtAllen commented 2 years ago

This post will be actively maintained, so keep checking back and if there are any specific tasks or suggestions you want to work on for the Beta release and beyond, please let me know.

Rodrigorivera inspired me to create Projects for all outstanding tasks, which will be sorted by version release:

BETA RELEASE

**[Deprecate `fitters` module](https://github.com/ColtAllen/lifetimes/discussions/18) and fix known `lifetimes` bugs:** - Add `pareto_nbd_model.py` module - Add `gamma_gamma_model.py` module - Add `mbgd_model.py` module - Add `bg_bb_model.py` module - Add `bg_nbd_covars_model.py` module - Docstrings for predictive methods. - **Remove `utils.py` plotting dependencies from `plotting.py`** - Add matrix plotting method to `BaseModel` - [Add capability to load models from CSV files.](https://github.com/ColtAllen/btyd/issues/40) - Raise `pymc` exception whenever model fails to converge - Create model exception class and raise whenever the wrong model type is loaded - Type hinting for `utils.py`, `plotting.py`, and `generate_data.py` modules - Delete redundant `load_cdnow_summary()` function

RELEASE CANDIDATE

**Polish up documentation and fix any bugs identified while working on beta release(s):** - Add `arviz` plotting suggestions and code to docs for model inference - Add an explanatory chart to documentation summarizing model characteristics - Create and add logo for library - CI/CD for auto-updates to project documentation - Consider hosting docs on GitHub and emulating documentation style of ArViZ and `bambi`

FUTURE VERSION RELEASES

**Implement additional BTYD Models, enhance plotting functions, documentation and library performance, etc.** - Add individual customer variant of `BetaGeoModel` - Add individual customer variant of `ParetoNBDModel` - Add individual customer variant of `ModBetaGeoModel` - Add time-invariant covariates to `ParetoNBDModel` - Add Pareto/GGG Model - Add PDO Model - Add BG/NBD-k and MBG/NBD-k Models - Add time-varying covariates to `ParetoNBDModel`? (Note this model could take days to train and necessitate checkpointing functionality to be added) - Suggestions for any other models to add? - Add tutorial notebook(s) - Add sample_kwargs to `BaseModel.fit` - Fix BetaGeo conditional probability calculation - Review viability of modifying hyperprior RVs - Enhance existing plotting functions with `seaborn` - RFM score function for quartiles - `jax` sampling via `pymc` to speed up model fitting times - gpu sampling via `pymc` to speed up model fitting times - Comprehensive evaluation of model priors to determine best defaults - [Refactor `utils.py`](https://github.com/ColtAllen/lifetimes/discussions/19) - Add code for `mlflow` model registration to documentation - Refactor `BetaGeoModel._conditional_probability_alive' unit test to remove extraneous args. - Refactor `BetaGeoModel._conditional_expected_number_of_purchases_up_to_time' unit test to remove extraneous args.

Projects

clintdunn commented 2 years ago

@ColtAllen Do you have more context on each of the tasks? I'd like to investigate a few but not sure what needs to be done

ColtAllen commented 2 years ago

@clintdunn I appreciate the early enthusiasm 👍 I've been writing descriptions for each of the above tasks. After the alpha release is published I'll post them all as issues for collaborators to review and work on.

I'm targeting this Fri, 17-Jun for the alpha release (and task/issue postings) because I'm going on vacation afterward and won't be able to resume work on lifetimes until July.

clintdunn commented 2 years ago

@ColtAllen sounds good!

ColtAllen commented 2 years ago

EDIT: I'm back from vacation now and will be working on all alpha release issues.

Just posted two issues if anyone wants to work on them 👍 I consider posterior parameter sampling for predictions to be the most important task, but it would be best if the issues I just posted were completed first as it will simplify the work required.

Also, if anyone wants me to plan a Zoom call next month to discuss ongoing and future work, let me know.

ColtAllen commented 2 years ago

I'm back from vacation and have reorganized work tasks by version release. I'll handle everything for the alpha release, but there are a lot of fairly straightforward tasks to work on for the beta I could use some help with, nearly all of which involve modules that will be left as-is while in alpha. More information about these tasks will be provided in the pertinent project discussions and posted as issues soon.