编译

随机森林的直观理解

对于那些认为随机森林是黑匣子算法的人来说,这篇帖子会提供一个不同的观点。接下来,本文将从4个方面去理解随机森林模型。感兴趣的朋友也可以直接前往BigQuant人工智能量化投资平台进一步研究。

1.我们的特征有多重要?

在sklearn随机森林中使用model.feature_importance来研究其重要特征是很常见的。重要特征是指与因变量密切相关的特征,并且对因变量的变化影响较大。我们通常将尽可能多的特征提供给随机森林模型,并让算法反馈对预测最有用的特征列表。但仔细选择正确的特征可以使我们的目标预测更加准确。

计算feature_importances的想法很简单,但却很有效。

把想法分解成简单的几步:

  1. 训练随机森林模型(假定有正确的超参数
  2. 找到模型的预测分数(称之为基准分数)
  3. 多次(p次,p为特征个数)计算预测分数,每次打乱某个特征的顺序,可见下图
  4. 将每次预测分数与基准分数进行比较。如果随机调整特征顺序后预测分数小于基准分数,这意味着我们的模型如果没有这个特征会变得很糟糕。
  5. 删除那些不会降低基准分数的特征,并用减少后的特征子集重新训练模型。

图1:计算特征重要性图1:计算特征重要性

图1:计算特征重要性

注:将F4列打乱重新进行预测来判断特征F4的重要性

计算特征重要性的代码:

下面的代码将为所有特征提供一个结构为{特征,重要性}的字典。

图2:随机森林中的重要特征

输出:

2.我们对我们的预测有多大信心?

一般来说,当企业想要有所预测时,他们的最终目的不是降低成本就是提高利润。在做出重大商业决策之前,企业十分热衷于去评估做出这个决定的风险的大小。但是,当预测结果并没有被展现在置信区间时,我们可能会无意中将企业至于更多的风险中,而不是降低风险。

当我们使用线性模型(基于分布假设的一般模型)时,比较容易找到我们预测的置信水平。但是当谈到随机森林置信区间时,找起来并不是那么容易。

1_3Tewu5G3sYHbTnEe3Byo4g

图3:偏差与方差的说明图

我想,任何上过线性回归课程的人都肯定看过这张图3。为了找到一个最佳线性模型,我们要去寻找偏差—方差最为折衷的模型。这张图片很好地说明了预测中偏差和方差的定义。(我们理解为这4张图分别是由四个不同的人掷飞镖所得)。

如果我们有高偏差和低方差值时(第三个人),我们投掷的飞镖会固定的远离红心。相反,如果我们有高的方差和低的偏差(第二个人),那么他投掷飞镖的结果就很不一样。如果有人去猜测他下一个飞镖击中的位置,那么它既有可能打到靶心也有可能远离靶心。现在我们来假设在现实生活中识别一起信用欺诈等同于上面例子击中靶心。如果信用公司拥有的的预测模型与上面第二人的掷飞镖行为很相似,那么该公司在大多数时候都不会抓住这个诈骗犯,尽管模型预测的是正确的。

因此,不仅仅是意味着预测的准确程度,我们还应该检查我们的预测的置信水平。

随机森林中如何做到这一点?

随机森林是由许多决策树组成。每棵树分别预测新的数据,随机森林从这些树中提取出平均预测值。预测置信水平的想法只是为了去看来自不同树木的预测有多少因为新的观测而产生变化,然后进一步分析。

基于方差树预测置信度的源代码:

注:偏差 = (up-down)/Yhat

以上代码的输出如下所示:

1_76kTF0lh4aMDYCYQZz8BeA

图4:基于方差树的置信树

从这个输出数据可以读出,我们可以说我们对于验证集上索引为14的观测的预测最没有信心。

3.什么是预测路径?

如果我们想要分析哪些特征对于整体随机森林模型是重要的,则 特征重要性(如在第一部分中)是有用的。但是如果我们对某个特定的观察感兴趣,那么 Tree interpreter的角色就会发挥作用。

举个例子,现在有一个RF模型,这种模型会预测—一位来医院的患者X是否具有很高的概率再入院?,为了简单起见,我们考虑只有3个特征—患者的血压值,患者的年龄以及患者的性别。现在,如果我们的模型认为患者A有80%的可能会再次入院,我们怎么能知道这个被模型预测为他(她)将重新入院的患者A有什么特殊之处?在这种情况下,Tree interpreter会指示预测路径紧随那个特殊的患者。就像是,因为患者A是65岁的男性,这就是为什么我们的模型会预测他将再次入院。另一个被模型预测将再次入院的患者B ,可能时因为他有高血压(而不是因为年龄或性别)。

基本上,Tree interpreter给出了偏差的排序列表(在起始节点的平均值)以及单个节点对给定预测的贡献。

1_5BxCUUyno69-0dWT7Xgh4A (1)

图5:决策树路径

图5的这棵决策树(深度:3层)基于波士顿房价数据集。根据中间节点的预测值以及导致数值发生变化的特征,它显示了决策路径的分解。单节点的贡献是该节点的值与前一个节点值的差值。

1_z6sqeSaTDCEb72BL6zZgHQ

图6:Tree  interpreter(最终再次入院的概率=0.6)

图6 给出了对于患者A使用Tree interpreter的输出示例。图片显示年龄为65岁是模型预测再入院概率高于均值的最高贡献者。

1_hREUgZQ1yj8NMGZsWgp-HQ

图7:将特征贡献通过瀑布图可视化展示

图6同样也可以使用瀑布图7来表示。我从“ 瀑布图包 ”中选材做的这个快速简单的瀑布图。

上面的瀑布图可视化代码:

相关变量的阐释:
(图片B)是指通过节点预测目标值。(就是在该节点中落下的观测目标的平均值)。
贡献是当前节点的值减去上一节点的值(这是为一个路径提供的贡献特征)。
路径是为了到达叶节点而通过某些观察所获得的所有特征分割的组合。
tree interpreter包直接用来计算每个节点的贡献,链接:treeinterpreter 2

4.目标变量如何与重要特征相关? Partial Dependence Plots 8

找到最重要的特征后,下一步我们可能会感兴趣的是研究目标变量与兴趣特征之间的直接关系。从线性回归中得到的与其相类似的是模型系数。对于线性回归,系数以这种方式被计算,即我们可以通过说:“在Xj中有1个单位变化,保持所有其他Xi不变,Y会发生什么变化?”这样的方式来解释。

虽然我们有来自随机森林的特征重要性,但是它们只是给出Y的变化是由于Xi的改变之间的相关性。我们不能直接地解释他们就像保持所有其他特征不变,Y该变量取决于Xj中的单位的变化。

幸运的是,我们有看一被看作线性模型系数图表的局部依赖图,但同样也可被扩展为看起来像黑箱模型。这个想法是将预测中所做的改变孤立于一个特定的功能。它不同于XY的散点图,因为散点图不能隔离XY的直接关系,并且可能受XY所依赖的其他变量的间接关系所影响。

PDP分析步骤如下:

  1. 训练一个随机森林模型(假设F1 … F4是我们的特征,Y是目标变量,假设F1是最重要的特征)。
  2. 我们有兴趣探索Y和F1的直接关系。
  3. 用F1(A)代替F1列,并为所有的观察找到新的预测值。采取预测的平均值。(称之为基准值)
  4. 对F1(B)… F1(E)重复步骤3,即针对特征F1的所有不同值。
  5. PDP的X轴具有不同的F1值,而Y轴是虽该基准值F1值的平均预测而变化。

1_N_a5ZTLGHjK5JvGYpxPkRg (1)

图8:PDP分析逻辑

图 9 是partial dependence plot的一个例子。数据来自 kaggle bulldozer competition data,它显示了生产年份(YearMade)和(销售价格)SalesPrice的关系

1_hXtic8qATZNpjc7rhYtjCQ

图9:partial  dependence  plot(YearMade与SalePrice的变化)

而图10是SalePrice与YearMade的线状图。我们可以看到,散点图/折线图可能无法像PDP那样捕获YearMade对SalesPrice的直接影响。

1_kVuDSb5_1LfRtBl_FpWhLw

图10:上述两个图片均来自(来源https://github.com/fastai/fastai/tree/master/courses/ml1)

写在最后:

在大多数情况下,随机森林在预测中可以击败线性模型预测。针对随机森林经常提出的反对意见是:对它的理解没有线性模型那样直观,但是本文的讨论希望帮助你回答这样的反对意见。

原文链接:《随机森林的直观理解

本文由BigQuant人工智能量化投资平台原创推出,版权归BigQuant所有,转载请注明出处。 

宽邦科技
宽邦科技

提供金融行业人工智能平台和服务解决方案,研发了全国首个人工智能量化投资平台BigQuant,拥有全栈人工智能平台和大规模机器学习和深度学习框架与算法,为券商、银行、保险、资管等金融机构以及更多企业提供AI技术方案和业务解决方案,实现机构及企业的AI转型和升级。

理论机器学习随机森林
4
相关数据
人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

随机森林技术

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而"Random Forests"是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造决策树的集合。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

置信区间技术

在统计学中,一个概率样本的置信区间(Confidence interval),是对这个样本的某个总体参数的区间估计(Interval Estimation)。置信区间展现的是,这个总体参数的真实值有一定概率落在与该测量结果有关的某对应区间。置信区间给出的是,声称总体参数的真实值在测量值的区间所具有的可信程度,即前面所要求的“一定概率”。这个概率被称为置信水平。举例来说,如果在一次大选中某人的支持率为55%,而置信水平0.95上的置信区间是(50%, 60%),那么他的真实支持率落在50%和60%之区间的机率为95%,因此他的真实支持率不足50%的可能性小于2.5%(假设分布是对称的)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

暂无评论
暂无评论~