Replies: 2 comments 3 replies
-
This might defeat the purpose of Shapley values, as they try to 'fairly' attribute effects to different combinations of variables. If you have smaller sub-graphs, you might not get a fair attribution across these graphs. Instead, you might want to experiment with the parameters for computing the Shapley values (e.g., you can drastically reduce the number of permutations, etc.). You can pass a ShapleyConfig object to the method (https://github.com/py-why/dowhy/blob/main/dowhy/gcm/shapley.py#L43). For example, you can set |
Beta Was this translation helpful? Give feedback.
-
Setting the number of permutations to 20 does not mean you only evaluate 20 possible subsets, but roughly ~20^2 subsets. While this is still far from 2^n, it often provides a surprisingly good approximation of all possible subsets. So, while you are correct that the number of evaluations is very far from 2^n, the results are often not that far off (of course, this heavily depends on how complex the true interactions really are). At least, you would (randomly) consider interactions between all variables. Further, you avoid the issue that you might introduce hidden confounders in case of breaking up the SCMs (except it is like a nice tree structure or something). |
Beta Was this translation helpful? Give feedback.
-
If I have 20-30 variables in the DAG, runtime for tasks using the Shapley values could be very slow due to the permutation of those variables.
instead, can I decompose this big graph into several smaller ones? Those smaller subgraphs will still belong to the hierarchy of the big graph. The reason is that I can run shapely values for the small graphs and if needed I can go up the hierarchy to run the Shapley values again at the upper graphs.
Beta Was this translation helpful? Give feedback.
All reactions