{
  "id": 9629,
  "title": "Causal Features / Uplift Modeling Approach",
  "url": "/competitions/acquire-valued-shoppers-challenge/discussion/9629",
  "author_name": "",
  "post_date": "2014-07-01T20:14:31.457Z",
  "votes": 1,
  "comment_count": 2,
  "views": 3128,
  "content": "<p>I'm curious if anyone has thought about trying a pseudo-uplift modeling approach for this problem.<br><br>The benchmark for this competition looks at customers who have purchased in the same category/brand/company before. To me, it seems that those features (and some of the others mentioned in forum) are capturing customers who are likely to be repeat customers because they are ALREADY repeat customers (i.e. if you buy a specific kind of water 10 times before you get a coupon for it, you're probably going to keep buying it after the coupon).<br><br></p>\n<p>To BEAT the benchmark, it seems that it would be helpful to find features that predict customers who are likely to become repeat customers <em>as a result</em> of the offer, which is a causal question.<br><br></p>\n<p><a href=\"http://en.wikipedia.org/wiki/Uplift_modelling\">Uplift modeling</a>&nbsp;is used to predict second-order effects, i.e. if I send you an offer, you will buy my product <em>because</em> you got the offer. Usually, you would have test and control groups to implement this modeling approach. But I was wondering if you might be able to steal some of these ideas for this contest using an approach that looks something like this:<br><br></p>\n<p>1) Group A: Identify customers who have not made repeat purchases of the product that they are being offered. (This is your &quot;test&quot; group.)<br><br></p>\n<p>2) Group B: Identify other customers who have not made repeat purchases of the product that Group A was offered, but who <em>are not</em> offered that product themselves. (This is your &quot;control&quot; group.)<br><br></p>\n<p>3) Create an uplift model (see <a href=\"http://stochasticsolutions.com/papers.html\">http://stochasticsolutions.com/papers.html</a>) using Group A as your test group and Group B as your control. (You are trying to find features that make Group A much more likely to be repeat purchases than Group B, since they might be roughly homogenous other than the fact Group A got an offer for the product).<br><br></p>\n<p>4) Apply uplift model scores to test set.<br><br></p>\n<p>Theoretically, this should give higher weight to features that are likely to be causal, and therefore it might be an answer to the problems stemming from the fact that the test set has different customers in different time periods than the training set.<br><br></p>\n<p>Any thoughts? Suggestions?</p>",
  "messages": [
    {
      "id": "49925",
      "postDate": "07/01/2014 20:14:31",
      "content": "<p>I'm curious if anyone has thought about trying a pseudo-uplift modeling approach for this problem.<br><br>The benchmark for this competition looks at customers who have purchased in the same category/brand/company before. To me, it seems that those features (and some of the others mentioned in forum) are capturing customers who are likely to be repeat customers because they are ALREADY repeat customers (i.e. if you buy a specific kind of water 10 times before you get a coupon for it, you're probably going to keep buying it after the coupon).<br><br></p>\n<p>To BEAT the benchmark, it seems that it would be helpful to find features that predict customers who are likely to become repeat customers <em>as a result</em> of the offer, which is a causal question.<br><br></p>\n<p><a href=\"http://en.wikipedia.org/wiki/Uplift_modelling\">Uplift modeling</a>&nbsp;is used to predict second-order effects, i.e. if I send you an offer, you will buy my product <em>because</em> you got the offer. Usually, you would have test and control groups to implement this modeling approach. But I was wondering if you might be able to steal some of these ideas for this contest using an approach that looks something like this:<br><br></p>\n<p>1) Group A: Identify customers who have not made repeat purchases of the product that they are being offered. (This is your &quot;test&quot; group.)<br><br></p>\n<p>2) Group B: Identify other customers who have not made repeat purchases of the product that Group A was offered, but who <em>are not</em> offered that product themselves. (This is your &quot;control&quot; group.)<br><br></p>\n<p>3) Create an uplift model (see <a href=\"http://stochasticsolutions.com/papers.html\">http://stochasticsolutions.com/papers.html</a>) using Group A as your test group and Group B as your control. (You are trying to find features that make Group A much more likely to be repeat purchases than Group B, since they might be roughly homogenous other than the fact Group A got an offer for the product).<br><br></p>\n<p>4) Apply uplift model scores to test set.<br><br></p>\n<p>Theoretically, this should give higher weight to features that are likely to be causal, and therefore it might be an answer to the problems stemming from the fact that the test set has different customers in different time periods than the training set.<br><br></p>\n<p>Any thoughts? Suggestions?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "50337",
      "postDate": "07/11/2014 08:50:34",
      "content": "<p>create features that you think are causal and try classification, I don't see any difference between the two approaches.&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "50357",
      "postDate": "07/11/2014 15:48:51",
      "content": "<p>It's a very different approach. This paper (especially sections 2.5 and 3) explains the difference: <a href=\"http://stochasticsolutions.com/pdf/sig-based-up-trees.pdf\">http://stochasticsolutions.com/pdf/sig-based-up-trees.pdf</a>. The short answer is you are optimizing a different quantity through uplift modeling than you would with traditional classification / propensity models. Instead of modeling how likely someone is to make a repeat purchase, you model <em>how much more likely </em>they are to purchase <em>if they have received an offer</em> as opposed to <em>not</em> receiving an offer. It requires a different modeling design and optimization process. Implementations are tough to come by though, in that this is still a new/evolving discipline. There is a package in R called &quot;uplift&quot; that R users can use. Not sure about Python or some others.</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 50337,
      "author_name": "anshul",
      "author_url": "",
      "post_date": "07/11/2014 08:50:34",
      "content": "<p>create features that you think are causal and try classification, I don't see any difference between the two approaches.&nbsp;</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 50357,
      "author_name": "nsusanj",
      "author_url": "",
      "post_date": "07/11/2014 15:48:51",
      "content": "<p>It's a very different approach. This paper (especially sections 2.5 and 3) explains the difference: <a href=\"http://stochasticsolutions.com/pdf/sig-based-up-trees.pdf\">http://stochasticsolutions.com/pdf/sig-based-up-trees.pdf</a>. The short answer is you are optimizing a different quantity through uplift modeling than you would with traditional classification / propensity models. Instead of modeling how likely someone is to make a repeat purchase, you model <em>how much more likely </em>they are to purchase <em>if they have received an offer</em> as opposed to <em>not</em> receiving an offer. It requires a different modeling design and optimization process. Implementations are tough to come by though, in that this is still a new/evolving discipline. There is a package in R called &quot;uplift&quot; that R users can use. Not sure about Python or some others.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "49925": "",
    "50337": "",
    "50357": ""
  },
  "source": "meta"
}