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$
    – Jon Nordby
    Commented Sep 21, 2020 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$
    – Multivac
    Commented Sep 21, 2020 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$ Commented Sep 21, 2020 at 20:24
  • $\begingroup$ @jonnor that's a very good point. Unfortunately I have closed that loop and that data isn't available. :( $\endgroup$ Commented Sep 21, 2020 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$
    – Multivac
    Commented Sep 21, 2020 at 20:31

1 Answer 1


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$
    – Multivac
    Commented Sep 21, 2020 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$ Commented Sep 21, 2020 at 20:58
  • 4
    $\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
    Commented Sep 22, 2020 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$ Commented Sep 22, 2020 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$ Commented Sep 22, 2020 at 9:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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