I have ~7 million rows of customer data (~500 sparse attributes)

A million out of them have opted in to a new service.

How do I use this signal to predict which of the remaining customers are likely to adopt the service? And how do I measure the effectiveness?

Problems face so far -

  1. Unable to treat this as a supervised problem due to lack of definitely negative variable
  2. Unable to apply label propagation because there is only one class

Apart from treating this as an anomaly detection problem (oneclasssvm etc.), I also tried using nearest neighbors based approach.

Looking for other ways to solve the problem if there are some go-to techniques that I am missing.

I know there is an answer here but it only talks about oneclasssvm that I have already tried. Also trying to find ways to measure model effectiveness along with any novel ways to solve.

  • $\begingroup$ Probably more than 1 million of them were presented with the option to this new service (yet)? If so, why don't you consider these as negative examples? $\endgroup$ – jonnor Sep 21 '20 at 20:15
  • 2
    $\begingroup$ As far as I see this is a supervised binary classification problem where 1M opted for the service(+1) and the remaining 6M do not(-1), so there you have the sample to train and learn (7M) what characteristics made those 1M opted for that service. Am I missing something? $\endgroup$ – Julio Jesus Sep 21 '20 at 20:21
  • $\begingroup$ @JulioJesusLuna problem is I have to identify ~100K customers out of the 6M remaining for running a campaign. Just to be clear - out of 7M, 1M have opted in. 6M is the search space that I have to narrow down to 100K based on the 1M opted in data points that I have $\endgroup$ – Vivek Kalyanarangan Sep 21 '20 at 20:24
  • $\begingroup$ @jonnor that's a very good point. Unfortunately I have closed that loop and that data isn't available. :( $\endgroup$ – Vivek Kalyanarangan Sep 21 '20 at 20:25
  • $\begingroup$ If I understood well, you need to label 100k users for a campaign so, you could train a model with the ones that opted and the ones that do not. This training does not include anything from your 100K users, so once you have train a classification model you can predict the 100K with the probability to opt for the service. $\endgroup$ – Julio Jesus Sep 21 '20 at 20:31

The topic you are interest in is called "PU learning" or "positive and unlabeled learning".

You can start by having a look into survey literature.

  • 1
    $\begingroup$ Excelente! I was unaware of this It sound great! $\endgroup$ – Julio Jesus Sep 21 '20 at 20:48
  • 1
    $\begingroup$ Upvoted. Bang on point! I have looked into Two-step approach and PU bagging and somehow they still seem to have an inherent "negative" assumption based approach. Just picking the community's brain for more unsupervised/semi-supervised approach $\endgroup$ – Vivek Kalyanarangan Sep 21 '20 at 20:58
  • 3
    $\begingroup$ This answer could be improved by detailing or giving a few examples of how to train such models rather than simply providing a name and a link. Answers that simply link elsewhere are not that useful as they require us to dig through the link to get the answer, they become largely useless if the link breaks and not everyone may be able to access the linked site. $\endgroup$ – NotThatGuy Sep 22 '20 at 7:13
  • $\begingroup$ @NotThatGuy 1.) PU learning is rather unknown. Thus, providing the keyword is already helping sometimes. 2.) If you are new to a topic, the best you can do is read through the literature. I see no point in writing a short part about PU learning, if there is a detailed survey about it. 3.) Suggesting some algorithm might not help, since I did not analyse the data. Each algorithm comes with some underlying assumption. Only the person possessing the data can thus decide which algorithm is suitable. 4.) If the link becomes unavailable people can still search by themselves for "PU learning". $\endgroup$ – Graph4Me Consultant Sep 22 '20 at 9:01
  • $\begingroup$ Also, if you look at my other posts, you will notice that I tend to answer questions rather detailed, if it is appropriate (e.g. datascience.stackexchange.com/questions/67083/…). $\endgroup$ – Graph4Me Consultant Sep 22 '20 at 9:03

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.