LightGBM

LightGBM is a fast Gradient Boosting framework; it provides a Python interface. eli5 supports eli5.explain_weights() and eli5.explain_prediction() for lightgbm.LGBMClassifer, lightgbm.LGBMRegressor and lightgbm.Booster estimators.

eli5.explain_weights() uses feature importances. Additional arguments for LGBMClassifier, LGBMClassifier and lightgbm.Booster:

  • importance_type is a way to get feature importance. Possible values are:

    • ‘gain’ - the average gain of the feature when it is used in trees (default)

    • ‘split’ - the number of times a feature is used to split the data across all trees

    • ‘weight’ - the same as ‘split’, for better compatibility with XGBoost.

  • is_regression - True if solving a regression problem and False for a classification problem. Needs to be passed only if it can’t be determined from other arguments.

target_names argument is ignored for lightgbm.LGBMClassifer / lightgbm.LGBMRegressor, but used for lightgbm.Booster. targets argument is ignored.

Note

Top-level eli5.explain_weights() calls are dispatched to eli5.lightgbm.explain_weights_lightgbm() for lightgbm.LGBMClassifer, lightgbm.LGBMRegressor and lightgbm.Booster.

For eli5.explain_prediction() eli5 uses an approach based on ideas from http://blog.datadive.net/interpreting-random-forests/ : feature weights are calculated by following decision paths in trees of an ensemble. Each node of the tree has an output score, and contribution of a feature on the decision path is how much the score changes from parent to child.

Additional eli5.explain_prediction() keyword arguments supported for lightgbm.LGBMClassifer, lightgbm.LGBMRegressor and lightgbm.Booster:

  • vec is a vectorizer instance used to transform raw features to the input of the estimator lgb (e.g. a fitted CountVectorizer instance); you can pass it instead of feature_names.

  • vectorized is a flag which tells eli5 if doc should be passed through vec or not. By default it is False, meaning that if vec is not None, vec.transform([doc]) is passed to the estimator. Set it to True if you’re passing vec, but doc is already vectorized.

  • is_regression - True if solving a regression problem and False for a classification problem. Needs to be passed only if it can’t be determined from other arguments.

Note

Top-level eli5.explain_prediction() calls are dispatched to eli5.xgboost.explain_prediction_lightgbm() for lightgbm.LGBMClassifer, lightgbm.LGBMRegressor and lightgbm.Booster.