3
$\begingroup$

I have two data sets: one for "good old customers" and a newer one with "new customers". My need is to "predict" which ones of the new customers would be rated as "potentially good customers" using the good customers data and variables.

So, a simple train & predict problem. My issue is I only have one-class-target.

Searching for one-class classification in R reached this Stack Overflow answer One-class classification with SVM in R

Pretty useful but I need any other method instead SVM: randomForest, ctree, gbm....

Does any other than svm allow one class classification? anyone has any example using another R package?

Asked same issue on SO, but someone recommended me to post here due to lack of answers there.

$\endgroup$

3 Answers 3

3
$\begingroup$

To agree on basic terminology, there are two classes - positive (i.e., "good customers") and negative ("bad customers"). You want to build a function $f$ that can classify good vs. bad customers. Your labeled data consists of only "good" customer information. There are two approaches you can explore:

Simpler Approach

One-Class Learning: The basic intuition is that you want to construct a probability distribution over the support for the true distribution of "good" customers. There are a few approaches you can use here including: One-Class SVM, Isolation Forest, etc.

The problem with the one class approach is that you are only considering information in the labeled data (which is usually far smaller than the unlabeled set). This often leads to poorer results.

A Better Approach

Positive-Unlabeled (PU) Learning: This technique fits perfectly for your scenario. PU learning is a specialized form of semi-supervised or transductive learning. It builds a classifier using the positive (labeled) data and unlabeled data together.

Elkan and Noto published one of the seminal results in this field. The paper is quite beautiful as it uses basic probability theory to build a very powerful and effective PU classifier. You can find open source implementations of Eklan and Noto's algorithm online.

$\endgroup$
2
$\begingroup$

The concept of one class random forest is relatively new: See two papers from (2008) and (2013), and a superb review. Surprisingly, they haven't been implemented in Python or R yet! So, to the best of my knowledge, one-class SVM is your best bet here.

$\endgroup$
1
$\begingroup$

mdatools::simca provides SIMCA, the one-class analogon of LDA and QDA.

$\endgroup$

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.