出品:贪心科技(公众号:贪心科技)
作者:Scott Lundberg
前言
本篇讲述了机器学习模型解释不当的危害和正确解读的价值。如果你发现ensemble tree 算法(比如梯度提升机器,或者随机森算法)的鲁棒精度很有意思,但同时还想解读他们,我希望本文章能够提供有用的信息。
设想一下,我们的任务是为为一家银行预测个人的财务状况。我们的算法越精准,银行赚的钱越多。但由于这个预估也会被用来做借贷申请,所以法律上我们也要求提供一份解释说明如何做出预测。经过多种算法的测试,我们发现使用XGBoost的梯度提升树算法最准确。不过要解释XGBoost能够做出准确的预测的原因比较难,所以我们只剩下两个选择,退回到直线算法或者查明怎样能够解读我们的XGBoost 模型。没有一个数字科学家会放弃对准确度的追求,所以我们决定尝试后者, 解读复杂的XGBoost 模型(总共1247 个深度,6 个树状)。
一
传统的全局特征重要性度量方法
第一个明显的选择是在Python XGBoost 界面使用Plot_importance() 方法。 它能够给出吸引人的价单图表,用于表示我们数据集中的每个特种的重要性:(文章中图表的CODE可点击 链接Jupyter notebook)
运行xgboost.plot_importance 算法从人口普查数据集中的“成人”类别中预估人们是否会上报超过5万美金的收入(使用损失函数)
如果我们看一下XGBoost 返回的特征重要性, 我们能发现“年龄”占主导地位, 也是影响收入的最明显的因素。我们可以在这停下来,然后告诉我们的经理一个我们自己觉得比较满意的答案,年龄是最重要的因素,然后是每周的工作时间和教育水平。但是作为一个优秀的数据可选家,再看一下文件,就会发现有XGBoost 中有三个选项用来衡量特征重要性:
权重(Weight): 指的是一个特征在整个树状中被用来分割的次数。
覆盖(Cover): 指的是一个特征在整个树状中被用来分割的次数被加权于所有经过这些分割的训练数据点的次数
增益(Gain):当使用特征分割时,平均训练损失的减少值
这些是我们在任何树型算法包中都可能发现的典型的重要性度量值。权重是默认选项,所以我们决定使用另外两个方法做个尝试,看看是
基于XGBoost 的机器学习可解释性
最新推荐文章于 2025-03-10 17:44:58 发布