BookmarkSubscribeRSS Feed
janezou
Obsidian | Level 7

Hi all,

 

I need some good advise on assigning treatments. What I want is something like this:

1) if bought_cat_food_last_year = 'Y' then treatment 1= 'Cat Food'

    else treatment 1= ''

2) if sales >= 200 then treatment_2 = 'Get $50 off'

    else if 100 <= sales < 200 then treatment_2 = 'Get $20 off'

    else if 0<= sales < 100 then treatment_2 = 'Get $5 off'

    else treatment_2 = ''

3) if bought_upc = 'xyz' and '01jan2015'd <sales_date <= '30dec2015'd then treatment_3 = 'Coupon a'

    else if bought_upc = 'abc' and '01jan2015'd <sales_date <= '30dec2015'd then treatment_3 = 'Coupon b'

etc..

 

A subject can get treatment_1, treatment_2, treatment_3, if any of the conditions is met independently.

 

What I usually do is to branch out all of the combination of treatments into cells that subjects who qualify, then assign the packages with treatments.  As you can see, there will be quite some branches because the # of treatment combinations.  Is there a way in CI that I can dynamically assign the different treatments? 

 

Is this even possible in MA or better be done in Marketing Optimization. I am open to any ideas.

 

Thanks a lot!

 

Jane

12 REPLIES 12
shill
SAS Employee

Jane - 

 

The assignment of treatments in MA requires you to explicitly select the treatments for which they are eligible. The approach you've defined of using split nodes to drive down to the individual combinations of options is the correct mechanism in the software. At this time there isn't an option to dynamically assign them.

 

It would technically be possible to simply assign every possible offer in MA, then use MO to add suppression rules as line items rather than drawing all the splits & branches, but I'm not sure I would call that "dynamic", since you still have to do all the work to define the rules, pass all those extra data items to MO, and with a large number of rules, that would be difficult to maintain, in my opinion.

 

Hope that helps clarify things!


Register today and join us virtually on June 16!
sasglobalforum.com | #SASGF

View now: on-demand content for SAS users

janezou
Obsidian | Level 7

I picture this:

1) each condition has a split node

2) build a communication node for each of the combination of treatments that people qualify (only 1 treatment, only 2 treatments, 3 treatments, etc)

 

The diagram will be messy, wish the campaign designer can have all of the combinations. I am still thinking about alternatives to simplify the diagram:

 

1) Process node: write the logic, so all 3 or more conditions will be a combined into 1 super split node, the output of the process node will have the desired cells for each package of treatments.

2) tree model like node: each leaf is cell for each package of treatment.

 

The challenge for this is that the designer has to know what cell should be assigned what.

 

I am not very familiar with MO, only have some basic concepts.

 

How do you think of the alternatives in MA?

 

Thank you for helping!

shill
SAS Employee

You wouldn't need a different communication node, you'd just need 1 cell for each treatment. 

 

Your selection rules would be:

  • "give me all the customers who bought cat food last year", which would lead to Cell 1, which would be assigend treatment A.
  • "get all the customers and split by sales amount", which would lead to Cells 2, 3, & 4 in your example, which would be assigned treatments B, C, and D (alternatively, you could just have one "% off" treatment with a dynamic custom detail to capture the percentage).
  • etc.

All of those cells could be connected to one communication.  Assuming you had customer "Jane" who bought cat food last year and spend > 200, the resulting output file would have rows of:

 

     "Jane", "Cell 1", "Treatment A"

     "Jane", "Cell 4", "Treatment D"

 

MO doesn't really help with this kind of situation, unless you're trying to limit customers to a certain number of contacts across multiple campaigns, or limit the number of total items you send out, etc. and want to use analytics to find the optimal combination of offers that satisfy all those constraints.


Register today and join us virtually on June 16!
sasglobalforum.com | #SASGF

View now: on-demand content for SAS users

janezou
Obsidian | Level 7

I will not need MO in this case then.  Thanks for clarifying.

 

The expected result would be like this:

'Jane', 'Cell 1', 'Treatment 1'

'Joan','Cell 2', 'Treatment 1, Treatment 2A'

'John', 'Cell 3', 'Treatment, Treatment 2B, Treatment 3X'

'Jacob','Cell 4', 'Treatment 2C'

'Jo', 'Cell 5', 'Treatment 2D, Treatment 3Y'

etc

 

I worry the number of packages (combination of treatments) can be really large, and there could be controls for some of the packages. I am trying to find the simplest way in the diagram.

shill
SAS Employee

To get a result that looks like that (rather than my example above), you would indeed have to create one cell for every possible combination of treatments, which would lead to a very large diagram.

 

If you took the approach I suggested above but still wanted your output to look like you described, you could always use a post-process node to read the output file (or have the initial output go to a dataset or table) then write the final output file using SAS code after combining treatments.


Register today and join us virtually on June 16!
sasglobalforum.com | #SASGF

View now: on-demand content for SAS users

janezou
Obsidian | Level 7

Ok.  Thanks again Shill!

pcapazzi
Pyrite | Level 9

I've been thinking about this topic over the weekend. It's not a solution but perhaps it could be a consideration for SAS. 

 

I suppose to get to where you want to be the offers would have to be assigend at the cell level before reaching the communication node. So cells and nodes that produce cells would need the option to have a treatment assigned (no package code). The treatments tab would have to change to look at the combinations that exist and produce package codes. Options in the treatment tab to keep package codes common between different communication nodes would be beneficial. 

 

This way you could have subjects exist in various splits of smaller trees. When their branches converge all applicable offers are assigned and a package code developed. 

 

Thanks.

 

 

janezou
Obsidian | Level 7

Hi Pcapazzi, 

Thank you for thinking the approaches even on weekend!

Here is what I would go about:

1) split by Contrion 1

2) at each leaf of Condition 1, split by Condition 2

3) at each leaf of Condition 2, split by Condition 3, ... split until all Conditions are set

4) at this point, each final leaf is a cell with subjects, who qualify for the different combination of treatments.

5) connect each final leaf to Communication node, assign combination of treatments as package

6) export to file with replace/append as needed

-- This is a linear approach, easier to think

 

There is an alternative approach:

1) split by Condition 1, Condition 2, Condition  3 parallely from the same parent node

2) use And nodes to combine the end leaf from Condition 1, Condition 2, Condition 3

3) assign cell after each And output. Each cell has the subjects who qualified combination of treatments

4) assign Communication Node the same way.

-- This is a tree like approach, probably harder to even think about it.  This was the one I was thinking about last week.

 

I sense you are talking the first approach, not the alternative.  Am I right?

 

Thanks again!

 

Jane

pcapazzi
Pyrite | Level 9

My suggestion is in line with your alternative approach. No AND node is necessary however but could be used. Each leaf coming out of your splits would have offers assigned. 

 

  1. You could have one originating select node that would connect to various splits. 
  2. Each split would assign applicable offers based on conditions of the split. You would select treatment(s) in each line of the split. 
    1. Split 1 - catfood last year - Y - treatment selected - N - no treatment
    2. Split 2 - sales >=200 - treatment selected - sales between 100 and 200 different treatment etc
    3. split 3 - upc and sales date (this would probably require to levels of splits
      1. date range - not in date range no treatment
      2. upcs - treatments - no matching upcs no treatments

 

After that all cells could go into one communication node. The Treatments panel would look at treatments combinations coming in to the communication node and present them. Default package codes could be created or the user could be required to create them (as we do now). 

 

janezou
Obsidian | Level 7

I guess the missing part for me is how to assign treatment to a cell, before Communication Node. Can you please explain a little more here?

 

I usually only assign treatment to a cell through Communication Node. In the alternative approach, I am not sure how to assign Y - treatment selected - N - no treatment after Split 1. 

 

It would be nice to be able to combine all of the cells to one Communication nodes.  the diagram would be much simpler.

 

Thanks,

pcapazzi
Pyrite | Level 9

My apologies if I was unclear. I was writing this as a suggestion for SAS for enhancements. This functionality does not currently exist. 

 

 

 

janezou
Obsidian | Level 7

I see.  Thanks a lot for your help! -- Jane

How to improve email deliverability

SAS' Peter Ansbacher shows you how to use the dashboard in SAS Customer Intelligence 360 for better results.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 12 replies
  • 2500 views
  • 0 likes
  • 3 in conversation