microsoft / causica

MIT License
440 stars 55 forks source link

Transfer Learning and Anomaly Attribution #87

Open jspiliot opened 10 months ago

jspiliot commented 10 months ago

Hey,

Causica looks super promising, thanks for making open! I've been playing around for a few days now trying to get a good grasp of it, and I there a couple points that are a bit unclear for me:

  1. How could I do transfer learning/fine-tune. I've trained a model with the entirety of the data, but I'd like to fine tune it for a single customer that potentially doesnt have enough data to train it only on his data.
  2. How could I do anomaly attribution or distributional changes attribution. ie something changed could the model tell me what was the root cause of it? So far the only way I could find was to take the causica-generated graph to dowhy to perform this, but this means, I think, that I'd loose the forward methods as dowhy does not work with them.

Looking forward to hearing any suggestions!

Cheers, Jason

pawni commented 8 months ago

Thanks for raising this @jspiliot!

  1. Do you have a similar dataset that you could use to train this with? It's not quite clear what type of fine-tuning you're referring to. In the simplest case where the variables are the same for a bigger dataset and the single customer with a smaller dataset - you could simply train on the larger dataset and assume that the causal connections generalise between the customers (and then potentially fine tune on the specific customer). If the variables are not the same, you might still be lucky that you can make use of the composability of causal mechanisms. Do you have more insights into you problem setup?
  2. Similarly, what is your setup here? Generally, once you have trained a DECI model, you could calculate different counterfactuals to the sample that is an outlier and see which (minimal) change makes it behave "more normal". We don't have an explicit root-cause analysis module built but the general functionality should be present. Cheers, Nick