1
$\begingroup$

I work at a startup as a developer, but I wanted to help out our sales team with running some ML algorithms on the data. A bit of context: Most of our revenue comes from ad purchases, so in a nutshell, we have a sales team that approaches our leads to sell them ads. I wanted to make this process more efficient by building a recommendation engine that would make predictions about the likelihood of different leads buying our ads.

I thought about it this way: Let's say, we have the following data from past sales efforts: {(x1, y1), ..., (xn, yn)}, where x represents the sales leads and y is from a binary set of {0,1}, where 1 indicates that the lead converted and 0 denotes that she didn’t. And each sales lead has the following feature vector for xi in Rd: xi = {x1, x2,...,xd} Now, every time we're given a new xk and we'd like to find the corresponding yk for it.

I thought it's a classical supervised learning problem and we can apply a discriminative approach (e.g. kNN, SVM, etc.) to solve it.

Does that make sense to you so far or you’d suggest a completely different approach? One issue that I personally have with it is that, well it makes sense that the y for our data is binary, since those leads either converted or not. However, I think it makes more sense to product probabilistic values of y going forward, as that would be more benefitial to the sales team. I just don't know how to do that though, since this way there's a clear divide between the format of the past y values ({0,1}) and future ys that we're trying to predict.

$\endgroup$
1
$\begingroup$

The fact that your labels are binary does not imply that the predictions have to be binary. Most classification methods can output probabilities, even though they are trained on binary targets. Specifically, logistic regression, kNN, random forests and gradient boosted decision trees (GBM) can all do that.

I agree that only a probabilistic prediction makes sense here. For one thing, I'm guessing the conversion rates are low, and if so, most or all of the the hard predictions would be 0. Obviously, with probabilities (or just decision values), you can get a ranking of the leads and use that.

$\endgroup$
  • $\begingroup$ Thank you for your response. In regards to the probabilistic prediction values, you're absolutely right, especially due to low conversion as you said. However, my understanding was that we can use classification methods when y is from a finite set. Whereas, If we go with probabilistic values of y (R), the finite set condition is not met and hence we can't apply classification. Is that not correct? Many thanks! $\endgroup$ – Xerxes Jan 4 '16 at 2:06
  • $\begingroup$ @ Xerxes. No, it is not correct. For probabilistic classification, such as logistic regression (or GBM, random forest, etc.), the training labels (inputs) are discrete, but the predictions (outputs) can either be discrete labels from the same set, or a distribution over the labels of that set. You want the distribution. $\endgroup$ – Dthal Jan 4 '16 at 3:14
0
$\begingroup$

The basic approach is correct. There are many algorithms that would perform that. Logistic regression may do, with the advantage of relatively calibrated probabilities, even with large datasets. If your dataset is large, non-vanilla SVMs would not scale well, and you may want to take a look at Factorization Machines. Dato Graphlab provide several good implementations that I have had good experience with, but they are not alone: https://dato.com/products/create/docs/graphlab.toolkits.recommender.html

kNN has issues with sparse data (unless your reduce it somehow) and is not straightforward with regard to probabilities. Random Forests would also need probabilistic calibration, and scaling them to large datasets is not always easy.

$\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.