分位数回归森林(Quantile Regression Forests),一般回归模型预测均值,但该算法预测数据的分布。它可以用来预测给定输入的价格分布,例如,给定一些属性,汽车价格分布的第25和75百分位是多少。
大多数预测器在预测期间返回E(Y|X),这可以解释为这个问题的答案,给定输入,输出的期望值是多少?
分位数方法,在q处返回y,其中F(Y =y|X)=q,其中q是百分位数,y是分位数。一个有用的快速用例是当有许多异常值影响条件平均值时。有时重要的是获得不同百分比的估计值(例如,在对曲线进行评分时)。
注意:一些机器学习模型还返回P(Y|X)的整个分布。比如高斯过程和蒙德里安森林。一个有用的应用是超参数优化,其中条件分布P(Y|X)是平衡开发和探索的必要条件。
分位数决策树
扩展标准决策树以提供百分位数的预测是相当简单的。当一个决策树是合适的,诀窍是不仅要在叶节点上存储目标的充分统计量,如均值和方差,而且要在叶节点上存储所有的目标值。在预测中,这些被用来计算经验分位数估计。
假设参数min_samples_leaf被设置为5,那么对于一个新的样本X,当确定Y|X在不同量子位上时,叶中的5个样本被赋予相同的权重。如果min_samples_leaf被设置为1,那么期望就等于每百分位上的分位数。
注:分位数的经验估计有很多方法。scikit-garden,依赖于这个加权百分位数方法
分位数回归森林
同样的方法可以扩展到随机森林。为了估计F(Y= y |x)=q, y_train中的每个目标值都有一个权值。形式上,在估计分位数时,y_train[j]的权重为\frac{1}{T} \sum_{t=1}^{T} \frac{\mathbb{1}(y_j \in L(x))}{\sum_{i=1}^N \mathbb{1}(y_i \in L(x))},其中L(x)表示x落在叶子上。
非正式地说,这意味着对于一个新的未知样本,我们首先找到它落在每棵树上的叶子。然后,对于训练数据中的每一个(X, y),在每棵树上按如下方式赋予y一个权重。
如果它和新样本在同一片叶子上,那么重量就是样本在同一片叶子上的比例。
如果没有,则权重为零。
每个y的权值在所有树中求和并取平均值。既然我们有一个目标值数组和一个与这些目标值对应的权重数组,我们可以用它来测量经验分位数估计值。
例:
现在,我们将使用scikit-garden中的ExtraTreesQuantileRegressor来绘制波士顿数据集上的预测区间。
先引入必要的库:
加载数据和必要的估计。注意,min_samples_split被设置为10,交叉验证为5-split。
将分位数存储在98.5%和2.5个百分位。
绘制预测间隔,即原始目标值。我们看到大多数样本位于 95 p.c 预测间隔内。