基于Tree的集成机器学习算法已经成为机器学习领域的主流算法。我们在做任何一个机器学习任务时,大部分的精力都会放在特征工程上(Feature Engineering)。我们通常会采用前向或后向策略,根据模型的结果进行特征选择。然而,在使用Tree ensemble算法时,有一个更有用的模型属性(feature importance),我们经常用它来进行特征选择。所以,有必要介绍一下feature importance的计算公式,便于大家更好理解特征和模型。
Friedman在GBM[1]的论文中提出的方法:
特征xjxj在整个模型中的重要程度为:
其中,M是模型中树的数量。
特征xjxj在单独一个树上的特征重要度为:
其中,L−1L−1是树中非叶子节点数量,vtvt表示在内部节点t进行分裂时选择的特征,I2t^It2^是内部节点t分裂后平方损失的减少量。
J. H. Friedman. 2001. Greedy Function Approximation: A Gradient Boosting Machine. Annals of Statistics 29(5):1189- 1232.
# 基于模型的特征重要性评估
# 得到特征重要性
importances = list(model_name.feature_importances_) # model_name为已经训练好的模型。