Comments (8)
hey thanks for flagging this! There was indeed a bug in the allocator and I've just pushed a fix. Would you please try out the update and see if the error still occurs? Looking at your waterfall plot, some media channels are having no effect. When this happens, channels with 0 effect will not be considered in the budget allocator, because, well, they have 0 effect and there's nothing to optimised.
from robyn.
Good that the fix is working:)
The waterfall plot is not (only) the coefficient plot, but the "decomposition", or to be precise, it's the variable multiplied with the coef. It tells you "var 1 explains x% of your conversations/sales".
The decay plot just shows the selected decay rate of each media channel. When using geometric adstock, it's exactly the decay rate. When using weibull adstock, it's the "average" decay Rate, or the "geometric equivalent for weibull". Hope it helps.
from robyn.
Decay rate is always based on your time grain. If you have daily data, then decay rate of 40% means day 1 has 100 imps, day 2 has 40 imps carried over from day 1, day 3 has 16 imps carried over from day 1, etc.
Regarding using old ModID, well yes, you can use the exact hyperparameter of that old model ID as the set local bound values (to fix all hypPars so to say), you will get one single output from f.robyn, then run the allocator on that (ModID will be 1_1_1 because there's just one model).
Curious to know how you think about the result and over performance of Robyn:)
from robyn.
I see! Now it's coming all together in conjunction with information about never grad.
I reckon this is what was required to put my mind at ease. Thanks alot for the time and effort you have put in elaborating on the topics.
We can close this issue ๐
Cheers!
from robyn.
Hey Thanks @gufengzhou . I was poking around and I saw that the bug was fixed yesterday and It seems its working now. Appreciate the work and quick response on this! :-)
I had another question to you regarding the aforementioned plot- How would you explain that ? Is it a coefficient plot and its effect on the target variables ? So, can I say that Tv_preemtible had 3.7% impact on the target variable or "conversion? What does "tsd"means?
Would you say for the attached image that specified channels have this much% decay as they stay in the market?
Sorry! I was just confused on various parts so thought of clarifying it here.
Thanks again!
from robyn.
Brilliant! This does help alot. So, for decay rate % for geometric adstock is for a the associated time period whether its months/week or year? Also, is there any way to use a previous model result(such as previous ModID) for the budget allocator. I am not sure its possible but wanna make sure.
Thanks!
Cheers!:-)
from robyn.
That explains it. I will give it a shot in running the old model as you mentioned. I am glad it has the functionality๐
As I have embedded more and more into robyn and trying to understand the functions created, the idea behind the budget allocator is quite neat. I think its a great MMM tool employing sophisticated never grad and other tools.
I reckon my confusion arises from the results, I am aware of the pareto optimal result" one cannot be better off without making other worst" but how do you figure in terms of NRMSE and DECOMP,SSD? I know RMSE and MAPE and it's impact but how do you look for good NRMSE?In terms of Business logic?
In addition to that, my MAPE is NA? I have tried wrangling, formatting the data, tweaking code but don't know why it's not giving me that.
Furthermore, is there any way to include variables considered exposure without any set data?
Robyn is a great tool and I reckon with our feedback, upgrades it has the potential to be a industry wide norm.
Apologies for long questions. I am actually excited to know more and more about robyn because then I can implement it in all my projects.
Thanks again ๐
from robyn.
DECOMP.RSSD is short for "decomposition root sum of squared distance", a metric we "invented" to account for business logic. The intuition is this: assuming you're spending 90% on TV and 10% on FB. If you get 10% effect for TV and 90% for FB, you'd probably not believe this result, no matter how low the model error (NRMSE) is. If you get 80% TV and 20% FB as effect share, it'll more "realistic". This is where the logic is from: minimising the distance between share of spend and share of effect.
Regarding the question "how do you look for good NRMSE", the job is called multi-objective optimisation and done by Nevergrad. It's how evolutionary algorithm works. We have 2 objective function here: NRMSE and DECOMP.RSSD (when calibrating with experiment, MAPE.LIFT will be added as a third objective). With every new iteration (or generation), the mutation of hyperparameters will always based on the best candidate from the last iteration, so that the learning can be carried over from iteration to iteration. "Best candidate" is defined by the lower/better NRMSE or DECOMP.RSSD. For more details you can check out Nevergrad .
At last, MAPE is NA because you're not calibrating the model. This is expected. Hope it helps:)
from robyn.
Related Issues (20)
- Robyn future budget allocation feature status HOT 2
- Demo python notebook crashes when using calibration. HOT 3
- Error in robyn_allocator HOT 4
- Total Budget Optimizing Result has incorrect initial total response HOT 3
- Error in robyn_recreate() with a model pre-trained HOT 2
- Issue creating one pagers either through robyn_outputs or onepager() HOT 1
- Hill function never saturates HOT 1
- Robyn Python API - Internal Server Error 500 | Unable to track the logs HOT 5
- Robyn_API is not defined HOT 3
- Unable to achieve Target ROAS with Python Robyn API Allocator Function - target_efficiency HOT 8
- Calculate measurement errors, handling missing data along with outliers HOT 1
- Share of Spend and Share of Effect definitions HOT 4
- Forecasting expected_spend_days HOT 1
- How do I solve the Robyn Error: Input 'factor_vars' must be any from 'context_vars' inputs HOT 1
- Cannot plot model onepager with ts_validation = False with "non-numeric argument to mathematical function" error HOT 3
- Unable to recreate model or refresh using JSON HOT 2
- Not getting model printout with refresh HOT 4
- Error plotting result for Robyn in Docker HOT 1
- Loading Robyn issue HOT 1
- simpleError in names(hyper_list_all) HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from robyn.