Quick Start

See the RetailHero tutorial notebook (EN Open In Colab1, RU Open In Colab2) for details.

Train and predict your uplift model

Use the intuitive python API to train uplift models with sklift.models.

 1# import approaches
 2from sklift.models import SoloModel, ClassTransformation, TwoModels
 3# import any estimator adheres to scikit-learn conventions.
 4from catboost import CatBoostClassifier
 5
 6
 7# define models
 8treatment_model = CatBoostClassifier(iterations=50, thread_count=3,
 9                                     random_state=42, silent=True)
10control_model = CatBoostClassifier(iterations=50, thread_count=3,
11                                   random_state=42, silent=True)
12
13# define approach
14tm = TwoModels(treatment_model, control_model, method='vanilla')
15# fit model
16tm = tm.fit(X_train, y_train, treat_train)
17
18# predict uplift
19uplift_preds = tm.predict(X_val)

Evaluate your uplift model

Uplift model evaluation metrics are available in sklift.metrics.

 1# import metrics to evaluate your model
 2from sklift.metrics import (
 3    uplift_at_k, uplift_auc_score, qini_auc_score, weighted_average_uplift
 4)
 5
 6
 7# Uplift@30%
 8tm_uplift_at_k = uplift_at_k(y_true=y_val, uplift=uplift_preds,
 9                             treatment=treat_val,
10                             strategy='overall', k=0.3)
11
12# Area Under Qini Curve
13tm_qini_auc = qini_auc_score(y_true=y_val, uplift=uplift_preds,
14                             treatment=treat_val)
15
16# Area Under Uplift Curve
17tm_uplift_auc = uplift_auc_score(y_true=y_val, uplift=uplift_preds,
18                                 treatment=treat_val)
19
20# Weighted average uplift
21tm_wau = weighted_average_uplift(y_true=y_val, uplift=uplift_preds,
22                                 treatment=treat_val)

Vizualize the results

Visualize performance metrics with sklift.viz.

1from sklift.viz import plot_qini_curve
2
3plot_qini_curve(y_true=y_val, uplift=uplift_preds, treatment=treat_val, negative_effect=True)
Example of model's qini curve, perfect qini curve and random qini curve
1from sklift.viz import plot_uplift_curve
2
3plot_uplift_curve(y_true=y_val, uplift=uplift_preds, treatment=treat_val)
Example of model's uplift curve, perfect uplift curve and random uplift curve
1from sklift.viz import plot_uplift_by_percentile
2
3plot_uplift_by_percentile(y_true=y_val, uplift=uplift_preds,
4                          treatment=treat_val, kind='bar')
Uplift by percentile