This post demonstrates a strategy for rare class learning whereby out-of-sample predictions are made using data-centric ensembling. This strategy is described by Charu Aggarwal in section 7.2 of his book Outlier Analysis. This is an excellent book that presents a ton of interesting material on statistics and modeling in a very readable way.
A little bit about ensembling
The basic idea behing ensembling is to make predictions on out-of-sample data by combining the predictions from many models. There are two general approaches to ensembling: model-centric and data-centric. Model-centric ensembling combines predictions from several distinct algorithms (e.g. random forest, logistic regression, etc.). Data-centric ensembling combines predictions from the same algorithm trained on several distinct subsets of the training data. Of course model-centric and data-centric ensembling can be combined through the use of several algorithms trained on several subsets of the training data. In general, ensembling is a robust modeling strategy that reduces prediction variance and improves accuracy. One drawback to ensembling is that training, testing, and deploying an ensemble of models can be complex and time consuming. Another drawback is reduced interpretability since each model in the ensemble may be interpreted differently.
Defining the strategy
The strategy shown in this post is an example of data-centric ensembling applied to binary classification where the classes are imbalanced. The goal is to make accurate out-of-sample predictions by combining predictions from several rounds of training (e.g. 25 rounds). Prior to training, a dedicated out-of-sample testing set is drawn from the available data. The remainder is used for training. In each round of training, a balanced training subsample (subset of the training data) is created by downsampling the negative class to match the size of entire positive class. Predictions are made on the dedicated out-of-sample testing set. Once the training rounds are complete, the predictions from each round are combined by averaging the predicted probabilities for each case in the dedicated out-of-sample testing set.
This strategy is very efficient due to the use of downsampling, leading to training data sets that are very manageable in size. As a result, this strategy can be repeated many times without being too computationally expensive.
Testing the strategy
It is useful to think about the training strategy as a single data point. One should not draw any grand conclusions about a single data point. Instead, multiple data points are sought to gain a more complete understanding of the data. Likewise, any training strategy should be repeated several times to gain a more complete picture of how the final implementation is expected to work. This is why techniques such as repeated K-fold cross validation exist (to repeat the basic K-fold CV strategy).
For this reason, we do not want to draw conclusions about a single model, nor should we draw conclusions from a single implementation of the ensemble strategy. Instead, the ensemble strategy in this post is repeated several times in experimental fashion. Another experiment is run that tests a simple, baseline strategy which ignores the ensemble component. The outcomes across all repitions for each experiment are then visualized to better understand how the ensemble strategy would be expected to work in a live setting.
Pseudocode for training and testing
READ data SAMPLE stratified training and testing data SET number of ensemble iterations FOR each ensemble iteration SAMPLE training data via downsampling TRAIN model PREDICT positive class probabilities for testing data ENDFOR COMPUTE average predicted positive class probabilities for testing data SET array of candidate probability cutoffs FOR each candidate probability cutoff PREDICT class labels for testing data using probability cutoff COMPUTE performance metrics ENDFOR COMPUTE optimal probability cutoff which maximizes performance metric
Pseudocode for cross validation
READ data SAMPLE stratified training and testing data SET number of ensemble iterations FOR each ensemble iteration SAMPLE training data via downsampling TRAIN model PREDICT positive class probabilities for testing data ENDFOR COMPUTE average predicted positive class probabilities for testing data SET array of candidate probability cutoffs FOR each candidate probability cutoff COMPUTE predicted positive class labels for testing data COMPUTE performance metric given predicted and known positive class labels ENDFOR COMPUTE performance metric associated with optimal probability cutoff
Pseudocode for production
READ training data SET number of ensemble iterations FOR each ensemble iteration SAMPLE training data via downsampling TRAIN model ENDFOR DEPLOY ensemble object READ inference data PREDICT positive class probabilities for inference data SET optimal probability cutoff COMPUTE predicted class labels using optimal probability cutoff