1
$\begingroup$

I'm working on a project to try and predict which users would be most likely to subscribe to our services. I'm using R and am working with a data frame that has a user's email address, information about their past purchases (order count and revenue generated), how they have interacted with our website (different events triggered), and whether or not they have subscribed. I'm using this data to train and test different algorithms. I've used caret with knn, lda, cart, and nnet.

I've been able to get how accurate my models are but that doesn't help me know who to market to. When I plug new data into my model I would like to know which users it thinks are the most likely to subscribe and also give me their associated email addresses. I've looked all over but haven't been able to find anything that helps me pair a prediction to an email address. Any help would be much appreciated.

PS.

I'm not using the email addresses to classify the data. I simply have them to associate a row of data to a user. I had to get rid of them to run it through the training and testing algorithms and that is where I am having the issue of knowing what prediction data is associated with which email address and in turn which user.

$\endgroup$
  • $\begingroup$ If I understand correctly would you mean to do Multilabel Classification where, as input you have the user's activity and as an output whether he\she will subscribe and what is their e-mail address (the domain probably as the addresses are unique)? $\endgroup$ – Grzegorz Jun 15 '17 at 16:01
  • $\begingroup$ Learn an embedding for each user and cluster based on that. I disregard the email address as a predictive feature on this problem. Personally I dislike the concept of segments since I dislike clustering. I'd select all users who are receptive to the campaign rather than a preset "segment". $\endgroup$ – Emre Jun 15 '17 at 16:24
  • $\begingroup$ @PhilipC. That's mostly correct. As input I have user activity and the output is whether he/she will subscribe. What I need to do is then associate that output with his/her specific email address. $\endgroup$ – ggrant Jun 15 '17 at 20:27
  • $\begingroup$ @ggrant The proposed way is one way of doing it, however, have a look at my answer, is typical to do Clustering in this kind of situations and discover common traits inside a Cluster as Emre suggested as well. Would this satisfy your needs? $\endgroup$ – Grzegorz Jun 16 '17 at 11:07
  • $\begingroup$ You just need to keep the email address or some other identifier with the features data, then get your predictions and combine the data frames (without any reordering!) . This is not a data science problem, just knowing how to use R. $\endgroup$ – seanv507 Jul 17 '17 at 7:05
1
$\begingroup$

Wow, what a great question! This is a critical task for anyone who works with data in a marketing function.

First, I'll address your question about pairing the prediction to email. Your email is serving as a unique identifier. When you split your data set, you'll have to keep the email and suppress it from the prediction, and use it to match/compare to the validation data.

If these are new predictions, you could create a new column in your data that contains the "predicted" value. Specifics on this process would be better suited for another community, probably StackOverflow.

Second, I'd like to talk about what you're trying to achieve.

I think there are two questions ways you could approach this with the work you've already done:

  1. Identify who is most likely to subscribe, and focus your efforts on creating nurturing campaigns to "warm" these prospects. The final goal is to get a subscription.

    Here you're going to be using those "events" that you mentioned. What exactly do you have? in the past. I've just dumped web activity data and started working with that. You'll have to engineer a lot of features to capture information that your web activity won't report on (these could be # of logins, # of checkouts, time since last visit, this is where you need to get creative).

    Take this data and try to make some predicte who is likely to subscribe. In some sales industries, this is refereed to as a lead score.

    Since you're using R, you could try using XGBoost -https://cran.r-project.org/web/packages/xgboost/vignettes/xgboostPresentation.html. Since you're trying to predict a binary variable, you could use their decision tree.

    This is going to take a while, so don't get frustrated if you don't this to production in the first week (or month). Here's some reading:

    https://datastories.com/gallery/predictive-user-scoring-example

    https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

    https://rdatascientist.wordpress.com/2015/01/26/predictive-lead-scoring-using-r-first-of-a-two-part-blog-series/

  2. Identify which types of customers you want to acquire, and focus on building campaigns to engage these types of customers. The final goal here is to acquire quality customers.

    This is more marketing and strategizing than it is machine learning. Don't get me wrong, there is maching learning in identifying the clusters. Here's a great example I used: http://www.kimberlycoffey.com/blog/2016/8/k-means-clustering-for-customer-segmentation.

    Once you identify what the different segments and what behavior they exhibit, you have to team up with the other stakeholders and try to decide what kind of customers do you want? Whats the benefit is getting a customer who makes one large purchase a year vs. a customer who makes five smaller purchases a year? You'll have to take your time identifying customers/prospects who are the most valuable, and plan a strategy around that.

|improve this answer|||||
$\endgroup$
0
$\begingroup$

It would be a good idea to create some visualizations of your data before choosing any particular method. Start with this and you might see some useful trends!

For starters, I would probably make a binary classifier from logistic regression. Feed a fraction of the data you have for training and see how it performs on the rest. This is one of the simplest approaches and could work very well.

|improve this answer|||||
$\endgroup$
0
$\begingroup$

You might want to extract certain features from an email address:

Like provider, name etc. Only email address meta infromation *might be too though.

If you do not want to use an email address but just map it you can simply use a map of entries to email addresses.

|improve this answer|||||
$\endgroup$
0
$\begingroup$

It would make sense if you cluster your Data and check each Cluster's RFM (Recency, Frequency, Monetary) value or the ratio of Subscriptions. Then depending on your budget target the best Clusters and check their email addresses domains or locations (from IP). Then it comes upon discussion and Optimisation on your Marketing plan.

|improve this answer|||||
$\endgroup$
0
$\begingroup$

You don't provide a whole lot of detail about the different events triggered but I would imagine that the arules package in R would be great at identifying some patterns to examine.

Using the apriori algorithm in this way in the domain of marketing is often called a market basket analysis. It can be quite powerful to highlight relationships and can often give you a start of point for more discoveries.

|improve this answer|||||
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.