# How should I construct a binary classifier for thousands of positive data and millions of unlabeled data?

So far, I have stumbled upon many advices and papers on PU Learning and Unary classification.

TLDR: Does anyone have suggestions for specific algorithm or implementation for labeled data of only one class and unlabeled data that can be from either classes? And I'm unsure what is the proportion of Class A to B that exists within the unlabeled data.

The simplest answer I have found has been one-class SVM (Binary semi-supervised classification with positive only and unlabeled data set), but I have so many unlabeled examples compared to how many labeled ones I can find. And I am unsure if either the positive class or negative class are rare enough for anomaly detection.

One of the other suggested methods is the two-step process where I can figure out a set of reliable negative class data, but I cannot really identify a set of data as reliably negative (https://www.cs.uic.edu/~liub/publications/ICDM-03.pdf).

And another method suggests a weighted SVM (http://users.csc.tntech.edu/~weberle/Spring2011/CSC6910/Papers/posonly.pdf), but I am unsure if I can make the same assumption as the authors in that my positive data is a random subset of all the positive data, as I used a criteria to figure out which ones were positive, so I assume there is bias in the labeled data.

Overall, I have a lot of labeled data of positive class, that is to say the data of what I am looking for, but then I have many more unlabeled data. (Though in a way, the labeled data could also be considered data of a negative class.) And I am unsure what proportion of positive data and negative data exists within the unlabeled data, as there could be an equal distribution between the two classes. Or who knows, maybe data of the positive class could be rarer than the data of the negative class.

• You might want to build a classifier for your labeled class vs. others, then use some clustering algorithm for the unlabeled ones and see if the clusters relate to the unlabeled classes. Jul 29, 2017 at 6:24
• Can you manually label some of the unlabeled data? If not, how do you plan to evaluate whatever technique you come up with? Do you know that the positive data you have comes from the same distribution as the positives in the unlabeled data? Or is it just some special subset of some particular kind of positive?
– D.W.
Jul 29, 2017 at 21:40
• @D.W. I can potentially label a small amount of the unlabeled data, but there could be many false positives (or not since I am unsure how many more positive examples still exist in the unlabeled data). I have a supervised binary classifier to evaluate the existing positive examples and then arbitrarily labeled negative example. I labeled the positive examples via having a particular vocabulary in one of their discrete class, so if I can somehow accurately classify other examples as positive, then that means every other examples with the same vocabulary also are part of the positive class. Jul 31, 2017 at 18:27
• I find it a bit puzzling that you would end up with many false positives in the labelled data. Do you have a ground-truth way to label a particular piece of data? If not, how do you plan to evaluate your scheme in any case? Perhaps it would help if you edit your question to provide more context (e.g., about the task you're trying to solve, what method you are using for manual labelling, why manual labelling makes so many errors). You might be asking for the impossible, so the more information you can provide, the better the chances you can get something useful.
– D.W.
Jul 31, 2017 at 20:15
• Outside of what I have already labeled, I think the ground-truth way to evaluate anything else I labeled is something that would happen in the future, and would cost a lot of time. So right now, I really only have positive and unlabeled data, but I am unsure what is the best method to approach this dataset where I cannot make any assumptions on the unlabeled data and my labeled data is not randomly chosen. Jul 31, 2017 at 20:27