1.机器学习的源码特征重要性究竟是怎么算的
机器学习的特征重要性究竟是怎么算的
了解主流机器学习模型计算特征重要性的过程。常用算法包括xgboost、解读gbdt、源码randomforest、解读tree等,源码pythonos模块源码它们都能输出特征的解读读取通讯源码重要性评分。本文将重点阐述xgboost和gbdt特征重要性计算方法。源码
xgboost计算特征重要性涉及到复杂的解读过程。在xgboost R API文档中能找到部分解释。源码在Python代码中,解读通过get_dump获取树规则,源码规则描述了特征在决策树中的解读使用情况。然而,源码源码技术文档原始的解读get_score方法输出的仅为统计值,包含权重、源码增益和覆盖度,未转换为百分比形式,kafka 框架源码这还不是真正的特征重要性得分。在xgboost的sklearn API中,feature_importance_方法对重要性统计量进行归一化处理,将之转换为百分比形式,汉化源码分析计算分母为所有特征的重要性统计量之和。默认情况下,xgboost sklearn API计算重要性时使用importance_type="gain",而原始get_score方法使用importance_type="weight"。
对于gbdt,首先查找BaseGradientBoosting类,得到feature_importances_方法的源码。进一步追踪至tree模块,发现特征重要性来源于tree_.compute_feature_importances()方法。关于gbdt评估特征重要性的标准,存在疑问:它是依据分裂前后节点的impurity减少量进行评估。impurity的计算标准取决于节点的分裂标准,如MSE或MAE,具体在_criterion.pyx脚本中有所说明。gbdt中的树都是回归树,因此计算impurity的标准适用于该类问题。