Suppose I'm interested in predicting which of my current customers are likely to renew their insurance at some point in the year. The renewal can happen at any time in the year. I want to proactively reach out to those customers not likely to renew in the year. Some customers are great, renewing annually in the same month as they did previously. These people I probably wouldn't want to reach out to until the end of the year (if they hadn't already renewed, of course), since they're probably low-hanging fruit. Other customers are a bit more sporadic – some don't renew after one year and I never see them again, while others renew but may take a few months after their policy has expired.
I'm trying to determine the best way of setting my dataset up, from an aggregation standpoint. I see two primary options:
- model each customer at an annual level
- model each customer at a monthly level
The dataset for 1 could look something like this:
customer_id renewed_at_all_in_year renewed_month_this_year renewed_month_last_year number_of_interactions_in_year a 1 2 2 5 b 0 null 1 2 c 0 null 2 0 d 1 1 2 9
where the dependent variable is
renewed_at_all_in_year. The dataset for 2 could look something like this:
customer_id current_month renewed_at_all_in_year renewed_in_month renewed_month_last_year policy_still_valid needs_renewal months_since_policy_expiration a 3 1 0 2 0 1 1 a 4 1 1 2 0 1 2 b 2 0 0 1 0 1 1 b 3 0 0 1 0 1 2 b 4 0 0 1 0 1 3 c 3 0 0 2 0 1 1 c 4 0 0 2 0 1 2 d 3 1 1 2 0 1 1
where the dependent variable is
renewed_in_month, and records for each customer are included up until they renew (i.e. once a customer renews, we won't include any more customer-months of theirs, and if a customer never renews, we include all months up until the end of the year after they are up for renewal).
The process for scoring each customer runs on a monthly basis. In both cases above, various features will have a temporal component, e.g.
number_of_interactions_in_year for the annual-level model, or
months_since_policy_expiration for the monthly-level model.
I see arguments for both approaches, and in the past the first approach has been successful. I'm wondering, however, if the second approach is the more appropriate way of modeling this behavior. If a list of customers is procured each month containing those not very likely to renew, it makes a lot of sense that a feature like
months_since_policy_expiration would be very important there (the reason being the further you are from your renewal due date, the less likely you are to renew). I'm not sure this temporal phenomenon is appropriately captured in the annual approach. I mean, I guess various "profiles" of individuals do exist in the annual approach, but there's no explicit link between the month in which we're scoring records and any features in the annual-approach dataset. You'd simply have a model (with other features, likely) that had
renewed_month_last_year as a feature, but no indication of how that interacts with the scoring month, because the training data for the non-renewing customers on an annual basis would be through December.
Any ideas on which approach might be more appropriate in this case?