I'm new to survival analysis and looking to use it to help a telcom company better identify clients at risk of churning. Their current model predicts risk of churning in time windows (1month, 2months, etc) with a GBoost binary classifier, so by using survival analysis I'm hoping to provide a richer continuous risk function (or values) for their clients across time.

I've read some articles and tutorials online, and began experimenting with the Cox Proportional Hazards model, but I have some questions on how can I fairly compare both model's performance. They mainly use the lift score, so I was thinking about using the same metric on the risk scores from the Cox model. However, since the survival model wasn't trained on discrete time windows, I don't know how I could do this comparison using the lift score (or other metric). Do you guys have any suggestion on how I can achieve this?

Note: In case it help, I'll leave here how I compute the event and duration target features for my dataset:

duration/event targets

where client_join is the date of when the client joined a service, snapshot is the date when all the current covariates were recorded, study_period is the end of the study period (for my analysis im considering 12 months), so basically any churn event before this date is considered a positive event (event=1), negative otherwise (event=0). For a given snapshot, there can't be churn events before the snapshot. Churn1 and Churn2 are from two different clients!


1 Answer 1


Sorry if this is answering a different question, but rather than doing that, I would repurpose their classifier as a discrete time survival model.

ie use xgboost to predict p(survive month x| survive to month x-1)

this will give you all the advantages of a survival model ( assuming you don't actually care about continuous time).

(then to predict survive month 3| at month 0, you multiply the individual probabilities: P(survive month 3|2) :P(survive month 2|1): P(survive month 1|0)

  • $\begingroup$ Thank you for your answer, but that would mean retraining the model for each distinct time-window, which would be impractical for their application... $\endgroup$
    – tomas_s
    Commented May 13, 2022 at 14:06
  • $\begingroup$ no you train one model for all the time windows. the particular month is an input $\endgroup$
    – seanv507
    Commented May 13, 2022 at 14:21
  • $\begingroup$ the 'impracticality' is that you have to chain predictions (ie 6 month survival is product of each separate month's survival prediction $\endgroup$
    – seanv507
    Commented May 13, 2022 at 14:23

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.