Skip to content

Releases: facebookexperimental/Robyn

v3.12.0 [GitHub R]

19 Dec 13:49
Compare
Choose a tag to compare

What's Changed

Exposure fitting, curve calibration & reach and frequency allocator (#1132)

  • Exposures (Imp/GRP etc) will be prioritised over spend for parent model fitting
  • Deprecate function fit_spend_exposure, incl. Michaelis Menten. Nonlinear fitting between spend and exposure wasn't improving fitting significantly. Instead, future curve calibration feature will aim to improve curve identification.
  • Use cpe (cost per exposure) as ratio for spend to exposure translation. use cpe_window to scale the whole dataset in order to obtain the right spend scale for modeling period.
  • remove minpack.lm / nlsLM dependency
  • update exposure plot
  • Simulate cumulative R&F dataset with frequency bucket
  • add beta coef besides alpha and gamma to nevergrad hyperparameter to improve curve fit
  • plot with freq_bucket as well as onepager per trial
  • add df_curve_reach_freq as dummy dataset
  • create robyn_calibrate that consumes curve input and outputs hyperparameter ranges as input.
  • Rename previous internal robyn_calibrate function as lift_calibration
  • early stop convergence with while loop
  • update documentation
  • Simulated R&F data
  • The R&F hill params are estimated using a multiplicative equation with Nevergrad
  • visualisation of surface
  • R&F allocator with nlopt
  • constrain validation
  • update: checks, input, transformation & website
  • simplify various check functions
  • adapt model.R, incl. reset run_transformations params to have clearer overview of params needed. simplify transformation.R by removing unnecessary checks
  • In model.R & pareto.R: remove decompSpendDist from both scripts to reduce memory leak. Use xDecompAgg subsets instead
  • In transformation.R & response.R: unify transformation namings in run_transformation and robyn_response
  • In response.R: remove exposure extrapolation because it's already done in robyn_input. Also add inflexion point to output.
  • In plots.R: fix onepager saturation plot issues
  • In pareto.R: rewrite run_dt_resp() as response_wrapper and align transformation logic & naming.
  • In pareto: Replace foreach response loop with lapply for simplicity.
  • In pareto.R: Simplify plot data generation process, esp for saturation curve plot, actual vs predicted plot & immediate vs carryover plot.
  • In pareto.R: Remove redundancy in xDecompVecCollect -> remove type rawMedia, rawSpend, predictedExposure, saturatedMedia & saturatedSpendReversed. Only keep adstockedMedia & decompMedia for response curve plotting.
  • add set_default_hyppar for easier testing
  • website update for all above changes

Contributors

@gufengzhou, @laresbernardo

Full Changelog: v3.11.0...v3.12.0

v3.11.1 [CRAN]

27 Jun 07:53
765e4d8
Compare
Choose a tag to compare

What's Changed

v3.11.0 [CRAN]

20 Jun 11:09
6afc50b
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3.10.5...v3.11.0

v3.10.5: Objective function weight, Meta MMM API beta, website tab "Features" revamp, bug fixes

24 Oct 03:00
Compare
Choose a tag to compare
  • Feat: New arg objective_weights in robyn_run() to allow manual tuning of weights for objective functions (NRMSE, DECOMP.RSSD, MAPE.LIFT). Default weight is even weights c(1,1,1). Note: This is experimental and there's no guidance on how weights biases modelling. Commit here
  • Feat: Meta MMM API connector demo, a beta script. Commit here
  • Doc: Updated and revamped the website "features" tab, also reorganised the navigation. see here

Full Changelog: v3.10.3...v3.10.5

v3.10.3: Objects size reduction, RSSD penalty for 0 effect media [CRAN]

17 May 17:19
Compare
Choose a tag to compare

More details on Facebook's Robyn Community post

  • Feat: Reduced object sizes up to 88% #687
  • Feat: RSSD penalty for 0 media effects media (parameter) #680
  • Feat: Always constraint prophet coefficients to 0-1 #686
  • Feat: Windsorized NRMSE on multi-objective optimization plots [1/500 default threshold] to avoid extreme skewness #693
  • Feat: New intercept parameter passed to glmnet() #722
  • Fix: Return meaningful error when, after filtering by modeling window, a variable has no variance #619
  • Fix: Removed negative carryover outputs for Weibull PDF adstock #706
  • Fix: Correctly pass plot_folder input on robyn_refresh() #708

Full Changelog: v3.10.2...v3.10.3

v3.10.2: Refresh model selection and small bugs

14 Apr 14:03
bce870e
Compare
Choose a tag to compare
  • Fix: when running robyn_refresh(), select the refresh model by error_score value correctly #674
  • Fix: pass penalty.factor when dropping intercept too
  • Fix: when importing holidays data, force date values as dates #663 by @richin13
  • Docs: update several documentations across functions and site

New Contributors

Full Changelog: v3.10.1...v3.10.2

v3.10.1 - New “Target Efficiency” scenario for budget allocator

27 Mar 14:21
Compare
Choose a tag to compare

More details in post: Hitting ROAS target using Robyn’s budget allocator

  • Feat: allocator's new scenario "target_efficiency" for ROAS/CPA target #648
  • Fix: inverted CPA in allocator viz table #640
  • Fix: re-enable experimental add_penalty_factor feature
  • Fix: re-include spend from skipped channels #645

Full Changelog: v3.10.0...v3.10.1

v3.10.0: Allocator upgrade

28 Feb 15:29
Compare
Choose a tag to compare

More details in post: The convergence of marginal ROAS in the budget allocation in Robyn

  • Feat: all new one-pager for robyn_allocator() showing initial, bounded and less-bounded scenarios, using last month's worth of data by default. Relevant changes from previous versions: initial spend is now mean of date range selected, not non-zero mean anymore + deprecated "max_response_expected_spend" scenario + carryover information is now provided in the curves + inform user when budget is topped and can't be fully allocated + added mROAS / mCPA for better understanding of allocation. And one step closer to the forecast functionality. #600
  • Feat: robyn_response() now requires date or date range for adstocking (last period by default) and accepts single or multiple values to return different use cases and scenarios.
  • Feat: new transform_adstock() exported wrapper function.
  • Feat: added NRMSE validation on test set.
  • Feat: added prophet monthly component.
  • Fix: issue with differences on OutputCollect$OutputModels and OutputModels to produce ts_validation plot. #596
  • Fix: added correct solID for fixed hyperparameters (not 1_1_1).
  • Recode: reduced the size of xDecompVec on OutputCollect to only pareto-front models.
  • Recode: got rid of "ggcorrplot" and "rPref" package dependencies.
  • Docs: added blueprint link to demo.R.

Full Changelog: v3.9.0...v3.10.0

v3.9.0: Time-series validation feature [CRAN]

15 Dec 15:16
eabd4c8
Compare
Choose a tag to compare
  • Feat: new time series validation via time-series train/val/test dynamic splits and Adjusted R2 and NRMSE metrics reported for each group feature #545. We are adding an additional train_size hyperparameter to pick the size of the training size, which by default will iterate in the range of 0.5-0.8. Given it's a hyperparameter, you can change the range or fix the value manually. Turn on/off this feature using the ts_validation new parameter on robyn_run(); default is set to FALSE for now. This is an important step for the forecasting coming function.
  • Feat: new ts_validation() function to plot time-series validation and convergence results. Generated and exported by default when ts_validation = TRUE, and when export = TRUE, creating ts_validation_plot.png file.
  • Fix: updated Adjusted R2 calculation (get_rsq()) for time-series validation using same denominator.
  • Fix: results are not sorted by lowest errors now to keep iteration results actual order.
  • Feat: added prophet monthly component to enrich decomposition results #525
  • Fix: correct solID (not "1_1_1") for fixed hyperparameters recreated models.
  • Recode: reduced the size of xDecompVec on OutputCollect by keeping pareto-front models only.
  • Docs: changed standard inputs on demo.R file for modeling window to include more data (3 years by default).

New Contributors

Full Changelog: v3.8.2...v3.9.0

v3.8.2: Memory friendly outputs, progress bars for Pareto-front models, bugs and docs

23 Nov 17:30
Compare
Choose a tag to compare
  • Feat: new status bars for Pareto-Front models per trial to provide information on calculation status
  • Feat: included carryover results into pareto_aggregated.csv output and OutputCollect$xDecompAgg$carryover_pct
  • Feat: new error message shows which hyperparameters inputs are missing #543
  • Fix: substantially reduced the size of robyn_run() and robyn_outputs() results (around -80% compared with 3.8.1 version's size) by removing redundant and unused data from outputs #534
  • Fix: invalid argument type in check_factorvars() and issue recreating calibrated models #520
  • Fix: add_penalty_factor parameter now works correctly with JSON files and robyn_refresh() #543
  • Fix: correct hyper-parameters length for custom data #533
  • Fix: bug in RobynLearn when checking numerical data #532
  • Fix: removed .iData format for legacy demo .RData files
  • Fix: passing custom pareto_fronts input instead of "auto" now works as expected
  • Docs: updated released version on website, meta.com emails, update CRAN link on robyn_update()

Full Changelog: v3.8.0...v3.8.2