当训练数据居中时,XGBoost和随机森林导致对测试集的持续预测

时间:2017-05-21 10:47:12

标签: r machine-learning random-forest r-caret xgboost

我正在进行组学数据分析,我有一个269x600数据集,我将其分为训练和测试集(80-20)。我预测的变量是马拉特的浓度,有4个不同的值(0,75,150,300),但我正在做回归。

我使用居中培训集上的caret基础架构运行随机林和XGBoost,在那里我进行了交叉验证以选择最佳超参数。  问题在于,当我使用所选模型预测测试集时,我获得(几乎)恒定预测。也就是说,整个测试集的值约为269。

然而,当我在非中心训练集上运行相同的模型时,预测非常好,甚至优于我以前的所有模型。

我的问题是: 为什么仅将培训数据集中在一起的事实会导致这两种模型出现这种奇怪的结果?

我知道这些模型不需要这样的预处理工作但是我不理解为什么它在我们预处理时不起作用,这就是为什么当我们只对数据进行中心时结果会发生很大变化...

1 个答案:

答案 0 :(得分:2)

通过改变火车与测试来思考你在做什么。

您可能确保测试集中的每个样本都超出了训练数据的范围。

因此,与训练数据相比,您的测试数据中的每个功能都将实际上完全相同(非常高或非常低),并且最终会出现在训练模型中的相同终端节点中。

因此他们都会产生相同的预测

这证明树模型 不能很好地推断

public class DispatchActivityModel extends ViewModel {

    private final API api;

    @Inject
    public DispatchActivityModel(API api) {
        this.api = api;
    }
}