【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?
我们用机器学习解决商业问题的时候,不仅需要训练一个高精度高泛化性的模型,往往还需要解释哪些因素或特征影响了预测结果。比如预测保险客户是否会解约(customer churn),我们不仅要知道谁会解约,我们还想知道他为啥解约。最常用的方式,便是查看特征量的重要度。
(*这里的特征量指用来预测结果的要因feature/predictor/independent variable,比如用客户这周的搜索关键词预测下周会不会买游戏机,搜索关键词就是特征量,下周会不会买游戏机就是预测结果)
特征量重要度的计算一般取决于用什么算法,如果是以决定树为基础(tree-based)的集成算法,比如随机森林,lightGBM之类的,一般都是取impurity(gini)平均下降幅度最大的一些特征,python的 Scikit-learn里面就有命令可以计算。
像这样:
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=100,
n_jobs=-1,
min_samples_leaf = 5,
oob_score=True,
random_state = 42)
rf.fit(X_train, y_train)
feat_importances =<