Finding the best way to allocate a campaign’s budget between multiple ad sets can be difficult and time-consuming. Our Predictive Budget Allocation, which was initially released last summer, uses machine learning to automate this work for you. In this blog post we'll look at recent improvements that make it even better. Using Predictive Budget Allocation remains as easy as it's always been: you only have to choose the goal that Predictive Budget Allocation should optimize towards.
Predictive Budget Allocation maximizes the number of conversions in a campaign by reallocating the budget between delivering ad sets every midnight. The feature works best in campaigns where the budget is a limiting factor, i.e., most of the ad sets are spending their daily budgets. However, it can also be used to do bid optimization, as we'll describe later.
With budget pools, Predictive Budget Allocation can allocate budget between multiple campaigns. You can select the campaigns and optimization goal for the pool. Allocation still happens on the ad set level, i.e., a pool’s current budget is allocated between all the ad sets in the pool.
Budget pools are especially useful when there are multiple campaigns with the same type and objective, as they can be optimized towards the same conversion goal.
With the recent improvements, Predictive Budget Allocation now makes larger daily budget changes while taking care that the ad sets can spend their allocated budget with the best performance. This guarantees that the best ad sets get more budget faster. We predict the maximum spend for the ad set by taking into account its historical spend and other information to avoid allocating budget to non-delivering ad sets.
Above are two figures showing the realized budget changes in all of our Predictive Budget Allocation campaigns during one day. The first figure shows that for most of the ad sets the budget stays more or less the same as it was before but for some it’s even doubled or halved. The second figure shows the proportion of budget in a campaign or pool that got reallocated between ad sets. In most campaigns and pools the total changes are small but in some cases as much as half of the budget is reallocated daily. Most changes usually happen at the beginning of the campaign.
Sometimes, Predictive Budget Allocation gives the minimum possible budget for some ad sets. In such cases, it can be useful to either pause these non-performing ad sets, or change the bid billing event to impressions, since Facebook has lower budget requirements for these ad sets.
We’ve improved Predictive Budget Allocation to use link clicks and historical data better. In practice, the improved method works with less conversions and thus allows using, for example, the final purchase event as the optimization goal. As a rule of thumb, there should be at least ten link clicks and some conversions for most of the ad sets daily.
If an ad set has too little data to estimate its conversion rate reliably, we use the ad set level click-through rate and the campaign level post-click conversion rate to improve the ad set level predictions. With the combination of these, we can get good ad set level predictions even with little data. The importance of click-through rate and campaign level information vanishes automatically if more data is available.
Usually the ad set level click-through rate varies faster over time than the post-click conversion rate. This allows utilizing the historical data better with time-series smoothing where the post-click conversion rate is calculated from a longer time period than the click-through rate. To get stable predictions, we combine all of these by using Bayesian hierarchical modeling.
Budget allocation works with hundreds of ad sets. However, in many cases having fewer, larger audiences that get more conversions gives better results. Facebook bid optimization works best when ad sets have at least 30 daily conversions for the chosen bidding goal.
Changing the budget of an ad set can also change its performance. If an ad set’s budget is spent fully then, due to pacing, the true bid value changes when the budget is changed. In practice this means that, for example, the next conversions can be slightly more expensive than before if the budget is increased.
Predictive Budget Allocation takes these performance changes into account when doing allocations. The goal is to always increase the campaign or budget pool’s total performance which means exploiting the best ad sets more than others. So for the user, it can be enough to monitor performance on a campaign or pool level.
If the budget is not spent, then either your bid or audience is the limiting factor. In these cases, Predictive Budget Allocation cannot do much more than guarantee that each ad set gets enough budget. Usually the performance in these campaigns is optimized by manually changing bids.
However, in many of these cases Predictive Budget Allocation could also be used to do the bid optimization. The reason is again pacing, which controls the true bid value if budget is the limiting factor. By changing the ad sets to have high bids (or using auto-bidding) with limited budgets, initially setting for example yesterday's daily spend as the daily budget in each ad set, and enabling Predictive Budget Allocation, the bid optimization is now done by allocating budgets. Then you can measure performance at the whole campaign or pool level. When you combine this with triggers that change the total campaign budget based on performance, you can optimize very effectively.