Beginner Data Scientist here...

I'm setting out to build a predictive model for our client in the hotel/hospitality industry to explain the factors contributing to the attrition of their Loyalty Members.

I am bending over backwards trying to shape the data correctly to be input into a logistic regression model (and maybe other models) to predict the probability of attrition, but there is an issue in how my client defines attrition.

This is my biggest mental hurdle: the client's current definition of a Member who has churned is one who "has made no reservations within the past year." This definition is always relative to today.

Imagine I have a large set of Members' reservation data over time which I need to shape for the model (program join date for the Member, check-in date, total nights, $ spent, etc). In my mind I am going to encounter perfect correlation trying to predict this binary outcome because all Members with no reservations in the past year are perfectly correlated with an outcome of "has churned."

Can anyone shed some light on how to approach a problem like this where - due to the time-based definition of my outcome - the underlying data on which to Train the model will perfectly correlate (either positively or negatively)?

Many thanks, CV.

If you're curious: I'm reading data from SQL Server, manipulating/exploring in R then eventually using RapidMiner to build the model.


1 Answer 1


Assuming no transaction can be recorded without reservation (check-in date, total nights, $$ spent)... Your target definition is lack of transactions, and no correlation will occur with your feature variables if the latter are defined before the start of that 12-month period.


Separate known churners (date of last transaction is known).

For Non-churners scrap 12 months of transactions. They will have an artificial "last known transaction date", but be noted as "nonchurners".

Create feature variables relative to last known transaction date. (I can think of a few, like weekly spend for last 3 weeks, longest time between nights etc etc.)

Alt 2.

Consider a stretch of transactions (say 6 months), as a Markov chain input, to estimate which events correlate with any spend in the following X months (say 12 months).

You will find certain "paths" that predicts no spending better. Experiment with the 6-months, maybe making it longer or shorter. The choice of X redefines the target seamlessly (X=12 is your current setting).

Alt 3.

Lika alt 1, but use all data from non-churners up till todays date.

Hope this gets you started (if not already done!). Let us know if you succeeded with this project!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.