Operations Research topics: SAS/OR,
SAS Optimization, and SAS Simulation Studio

Maximize Return

Reply
Contributor
Posts: 57

Maximize Return

I used a logistic regression to build a model to score the value of each customer. Now suppose we have scored 10K customers and plan to run a marketing campaign on them. Two pilot programs had been conducted and the outcomes are summarized below.

Program 1:

Spent $.40 on each customer of first 1K customers. Got 10 purchases and $.45/customer profit.

Spent $.30 on each customer of next 3K customers. Got 20 purchases and $.28/customer profit.

Spent $.20 on each customer of next 5K customers. Got 40 purchases and $.22/customer profit.

Spent $.10 on each customer of next 2K customers. Got 10 purchases and $.12/customer profit.

Program 2:

Spent $.40 on each customer of first 1K customers. Got 10 purchases and $.45/customer profit.

Spent $.30 on each customer of next 2K customers. Got 10 purchases and $.32/customer profit.

Spent $.20 on each customer of next 7K customers. Got 50 purchases and $.20/customer profit.

Spent $.10 on each customer of next 1K customers. Got 5 purchases and $.09/customer profit.

Based on these 2 pilot program outcomes, I would like to see the optimal allocation of marketing spend to maximize the purchases and profit. That each, how many customers need to allocate to spend $.4 group, how many to spend $.3 group. I don't know which math/statistics methods I should use to solve this problem.

SAS Employee
Posts: 447

Re: Maximize Return

Looks like you have 11K customers and a budget of $2500.  Suppose you knew the expected return r[i,j] if customer i is assigned to group j.  Then your expected profit for that assignment would be r[i,j] - c, where c is the cost of assigning a customer to group j.  In your case, c[1] = 0.40, c[2] = 0.30, c[3] = 0.20, and c[4] = 0.10.  Now define a binary decision variable Assign[i,j] with the interpretation that Assign[i,j] = 1 if customer i is assigned to group j, and Assign[i,j] = 0 otherwise.  Then you want to solve the following optimization problem (expressed using PROC OPTMODEL syntax):

var Assign {CUSTOMERS, GROUPS} binary;

max TotalExpectedProfit = sum {i in CUSTOMERS, j in GROUPS} (r[i,j] - c) * Assign[i,j];

con AssignOnce {i in CUSTOMERS}:

     sum {j in GROUPS} Assign[i,j] = 1;

con Budget:

     sum {i in CUSTOMERS, j in GROUPS} c * Assign[i,j] <= 2500;

If you are allowed not to assign a customer to any group, you can change the = 1 to <= 1 in the AssignOnce constraint.  Alternatively, you can define a dummy group j = 5, with cost c[5] = 0, if there is some nonzero expected return r[i,5] for customer i not being assigned to a group.

It remains to use the results of your two pilot programs to estimate r[i,j] for each customer-group pair.  I'll leave that for a statistician to discuss, but maybe you can do some kind of Bayesian update of your initial scoring model.

Ask a Question
Discussion stats
  • 1 reply
  • 276 views
  • 0 likes
  • 2 in conversation