# How do to mitigate or design out hidden feedback loops when designing ML systems?

Two months ago, I've found myself working on a churn detection problem which can be briefly described as follows:

• Assume the current date is N
• Use customer behavior for N-1,..N-x dates to develop training dataset
• Train model and make prediction at time N, predicting if a customer will churn at N+2 (thus allowing data N+1 for churn prevention / reduction campaign)

When thinking through the design of the model and considerations for how to ensure that it would be successfully implemented, I identified a feedback loop wherein the prediction would trigger an event resulting in interaction with customer, potential changes to customer behavior and thus an impact on the next set of prediction data. The following sequence of events could occur if successful (as an example):

Prediction -> Action to retain customer -> Change to customer behavior ->
Data for next prediction cycle not representative of training ->
Incorrect prediction and cost associated for handling incorrect prediction


The feedback loop, fundamentally is that the action taken based on the prediction may impact the distribution or nature of features used to make the prediction.

When thinking through the how to solve the feedback problem I had listed the following three points as potential solutions:

1. Retrain, test and validate model at every N+1 period and account for changes in behavior through new features (e.g. feature_i would involved details of the retention campaign a customer was treated to)
• This would result in huge production overhead and I believe to be infeasible
2. Run the model intermittently to allow behavior to normalize
• Possible, however business would not be happy to have a prediction model which only works k times a year where k would have to be determined
3. Predict the impact of the retention intervention and remove it from or the training set or include it as a new feature
• Possible, extensive thought and some experimentation needed to determine whether modeling the retention out or in would have the better effect. Additionally, if modeled in, there may a short term penalty incurred as the model learns the new feature

I did not actually end up having to confront the feedback problem (as during the exploration phase, sufficient evidence was obtained indicating that a predictive model for churn detection would not be required), however after reading this paper on the technical debt which could be incurred during the development of the machine learning systems I found myself pondering:

1. Were my considered strategies for dealing with the feedback reasonable?
2. What other solutions should I have considered?
3. Is there a way I could have re-framed the problem to completely design out the feedback loop (may be difficult to answer with the information provided, but if possible, but a "you could have considered looking at..." would be extremely beneficial)