{"id":23243673,"url":"https://github.com/krik8235/ml-marcom-budget-optimization","last_synced_at":"2026-05-04T13:34:29.857Z","repository":{"id":260425554,"uuid":"864407825","full_name":"krik8235/ml-marcom-budget-optimization","owner":"krik8235","description":"Optimize budget allocation across multiple marketing channels to maximize revenue","archived":false,"fork":false,"pushed_at":"2024-09-28T06:29:03.000Z","size":4747,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T16:51:28.655Z","etag":null,"topics":["gradient-boosting","machine-learning-algorithm","machine-learning-algorithms","machine-learning-projects","numpy","pandas","random-forest","seaborn","sklearn"],"latest_commit_sha":null,"homepage":"https://kuriko.vercel.app/projects/machine-learning/optimize-marketing-spend","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krik8235.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-28T06:19:40.000Z","updated_at":"2024-11-30T14:38:06.000Z","dependencies_parsed_at":"2024-10-31T09:28:50.366Z","dependency_job_id":null,"html_url":"https://github.com/krik8235/ml-marcom-budget-optimization","commit_stats":null,"previous_names":["krik8235/ml-marcom-budget-optimization"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krik8235/ml-marcom-budget-optimization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krik8235%2Fml-marcom-budget-optimization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krik8235%2Fml-marcom-budget-optimization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krik8235%2Fml-marcom-budget-optimization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krik8235%2Fml-marcom-budget-optimization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krik8235","download_url":"https://codeload.github.com/krik8235/ml-marcom-budget-optimization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krik8235%2Fml-marcom-budget-optimization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32609833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradient-boosting","machine-learning-algorithm","machine-learning-algorithms","machine-learning-projects","numpy","pandas","random-forest","seaborn","sklearn"],"created_at":"2024-12-19T06:17:38.641Z","updated_at":"2026-05-04T13:34:29.833Z","avatar_url":"https://github.com/krik8235.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Budget Optimization for Online Retailers\n\n## 1. Introduction \n\nThe business problem can be expressed in the following manner: given a total budget B, calculate the optimum monthly budget allocation {B1, ..., B12} across multiple channels (and potentially campaigns {C1, ..., Cn}) in order to maximize revenue R.\n\nHere's a basic marketing budget allocation that assumes Year to Date (YTD) average Cost-per-Click (CPC), Conversion Rate (CVR) and Average Order Value (AOV) for each channel.\n\nWhile the task is to optimize the budget allocation between multiple channels \u0026 campaigns, some of them are \"inner\" optimizable (Google Ads, Facebook Ads), others are out of reach: E-mail, SEO, etc. There are multiple \"problems\" at once that are embedded in this \"budget allocation\" term and we’ll try to provide a direction to solving the problem using the campaigns as black-boxes, making use only of the cost and the revenue produced.\n\n## 2. Budget Allocation Overview\n\nThe task is to allocate budgets to campaigns in order to maximize revenue. The main challenge is that the relationship between budget and revenue is nonlinear, and the projected revenues are likely inaccurate. The solution involves two steps: 1) building a model for each campaign that predicts revenue based on budget, and 2) allocating budgets optimally based on these models.\n\n### 2.1 Time Series Model\nWe predicted the revenue of a campaign based on its allocated budget and historical data. The model can be built for daily or monthly intervals. The goal is to define the relationship between budget and historical data to predict revenue.\n\nThe approach involves using either monthly aggregated data or daily data to model the time series. Monthly aggregated data is the simplest but serves as a baseline, while daily data is expected to improve the model's performance.\n\nThe specific modeling technique (RNN, HMM, or linear model) is not specified, but the focus is on creating a revenue prediction function for each campaign.\n\nRevC (ti) = P(B|RevC (t0), . . . RevC (ti−1))\n\n* Monthly aggregated data. This is the easiest case - set as the baseline solution\n* Daily data. Use the daily data to model the time series, which should show some improvements\nover the baseline solution. \n\n### 2.2 Optimal Optimization Problem\nThere are some challenges in a solution to the problem of picking the optimal budget allocation for multiple campaigns. \n\nWe first build a model for each campaign and then use non-convex continuous optimization algorithms like genetic algorithms and colony optimization to find the global optimum, observing that even with dummy data, the global optimum varies greatly when the models are non-linear.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrik8235%2Fml-marcom-budget-optimization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrik8235%2Fml-marcom-budget-optimization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrik8235%2Fml-marcom-budget-optimization/lists"}