Link Search Menu Expand Document
PyXAI
Papers Video GitHub In-the-Loop EXPEKCTATION Release Notes About
download notebook

Time Limit

Some explanations are computationally expensive to compute. For this reason, most explanation methods accept a time_limit parameter (in seconds). If the time limit is reached, the method stops and returns either an approximation of the desired explanation or [] if no approximation was found. By default, time_limit is set to None, giving an unlimited amount of time.

All explainers expose an elapsed_time attribute set to the time in seconds taken by the last explanation method call. It is equal to Explaining.TIMEOUT if the time limit was reached.

The following methods accept a time_limit parameter:

Method DT RF BT BT (regression)
sufficient_reason  
minimal_sufficient_reason    
preferred_sufficient_reason      
n_sufficient_reasons      
n_sufficient_reasons_per_attribute      
anchored_reason      
minimal_contrastive_reason    
majoritary_reason      
preferred_majoritary_reason      
minimal_majoritary_reason      
most_anchored_reason      
tree_specific_reason    
minimal_tree_specific_reasons      
range_for_partial_instance      

The following example illustrates the usage of time_limit and elapsed_time:

from pyxai import Learning, Explaining

learner = Learning.Scikitlearn("../../dataset/iris.csv", problem_type=Learning.CLASSIFICATION)
model = learner.evaluate(splitting_method=Learning.HOLD_OUT, model_type=Learning.DT)
instance, prediction = learner.get_instances(model, n=1, is_correct=True)
explainer = Explaining.initialize(model, instance)

sufficient_reason = explainer.sufficient_reason(time_limit=10)
if explainer.elapsed_time == Explaining.TIMEOUT:
    print("Timeout reached.")
    print(f"sufficient_reason: {sufficient_reason} (approximation)")
else:
    print(f"Time to compute: {explainer.elapsed_time:.3f}s")
    print(f"sufficient_reason: {sufficient_reason}")