I'm making a churn model.

My observation window (historic data) length is 3 weeks. There are some users that are not been registered to the app that I'm analyzing for three weeks, and as a result, I don't have data for their behavior before two or three weeks.

One solution that I thought of is to initialize with zeros all the features for users with not enough data history. For example, if a user visited the app 10 times in the last week, and registered just before a week, the feature value for "visit_week_0" will be 10, and the values for the features: "visit_week_1" and "visit_week_2" will be 0. I am not sure this solution is good enough, because in this way the model can't distinguish between a user that has 3 weeks of history and literally visit the app 0 times and between a user that was registered to the app just a week or two ago.

I'm thinking about initializing these features with zeros for new users, but adding a binary feature that marks if the user was registered this week or not.

Another solution that I thought of is not to initialize features with zeros for new users, but instead to fill them with the mean values of the other users.

What do you think is a better approach?


1 Answer 1


There is a technical difference between 0 and NA, and new users should have a NA rather than a 0 for their number of visits in the preceeding weeks. I think some implementations of trees are able to handle missing data like this, and so you just leave the data as NaN and go about in the usual way.

That being said, it might not matter all that much. Cross validation of whatever your approach is will be the most important thing.

Alternatively, you can sidestep the entire problem by only considering users who are "eligible for churn", wherein eligible means "active for n weeks" or whatever.

  • $\begingroup$ I originally have tried your last approach and filtered users without enough historic data, but after that, I discovered that many of them will have label 1, so I can't drop them $\endgroup$
    – Amit S
    Commented May 12, 2022 at 12:38

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.