rasbt / mlxtend

A library of extension and helper modules for Python's data analysis and machine learning libraries.
https://rasbt.github.io/mlxtend/
Other
4.82k stars 853 forks source link

create_counterfactual enhancements (minimization method and fixed features) #1029

Open rasbt opened 1 year ago

rasbt commented 1 year ago

Discussed in https://github.com/rasbt/mlxtend/discussions/1028

Originally posted by **farbodr** April 17, 2023 I have a couple of questions about create_counterfactual? 1) On a small table with the shape of (461, 75) it took about 22 min to return one row. Is there any way to speed this up? 2) Is there any way to limit the features it uses? In other words, can I freeze some features and generate counterfactuals only for some of the features? For instance, in a healthcare use case, we know certain features can not be changed, like a health condition, but there are other features that can be changed that can impact the prediction. Thanks, FR
rasbt commented 1 year ago

Definitely good points.

  1. Off the top off my head, changing the minimization method might help, right now it's hardcoded to be Nelder-Mead. (https://github.com/rasbt/mlxtend/blob/master/mlxtend/evaluate/counterfactual.py#L113)

  2. And keeping some features fixed would probably help, too.

These would both require introducing 2 additional function arguments, which shouldn't be too complicated. But I am not sure if I have the capacity in the near future. Would appreciate PRs on that though!

PS: Converted this to an issue because these are good enhancement ideas!