Obsidian | Level 7

## 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 Super FREQ

## 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.

Discussion stats