【问题标题】:sklearn's GradientBoostingRegressor gives the same prediction for different inputssklearn GradientBoostingRegressor 对不同的输入给出相同的预测
【发布时间】:2014-08-03 21:32:29
【问题描述】:

我在尝试训练 sklearn 的 GradientBoostingRegressor 并进行预测时遇到了一个奇怪的行为。我将举一个例子来演示减少数据集上的问题,但问题仍然存在于更大的数据集上。我有以下 2 个从大数据集改编的小数据集。如您所见,两种情况的目标变量相同,但输入变量不同,尽管它们的值彼此接近。目标变量(Y)在最后一列。

我有以下代码:

d1 = {'0':[101869.2,102119.9,102138.0,101958.3,101903.7,12384900],  
        '1':[101809.1,102031.3,102061.7,101930.0,101935.2,11930700],
        '2':[101978.0,102208.9,102209.8,101970.0,101878.6,12116700],
        '3':[101869.2,102119.9,102138.0,101958.3,101903.7,12301200],
        '4':[102125.5,102283.4,102194.0,101884.8,101806.0,10706100],
        '5':[102215.5,102351.9,102214.0,101769.3,101693.6,10116900]}                    
data1 = pd.DataFrame(d1).T
X1 = data1.ix[:,:4]
Y = data1[5]

d2 = {'0':[101876.0,102109.8,102127.6,101937.0,101868.4,12384900],
        '1':[101812.9,102021.2,102058.8,101912.9,101896.4,11930700],
        '2':[101982.5,102198.0,102195.4,101940.2,101842.5,12116700],
        '3':[101876.0,102109.8,102127.6,101937.0,101868.4,12301200],
        '4':[102111.3,102254.8,102182.8,101832.7,101719.7,10706100],
        '5':[102184.6,102320.2,102188.9,101699.9,101548.1,10116900]}
data2 = pd.DataFrame(d2).T
X2 = data2.ix[:,:4]
Y = data2[5]

re1 = ensemble.GradientBoostingRegressor(n_estimators=40,max_depth=None,random_state=1)
re1.fit(X1,Y)
pred1 = re1.predict(X1)

re2 = ensemble.GradientBoostingRegressor(n_estimators=40,max_depth=None,random_state=3)
re2.fit(X2,Y)
pred2 = re2.predict(X2)

在哪里 X1 是一个 pandas DataFrame,对应于 1st 数据集上的 Column 1Column 5 X2 是一个 pandas DataFrame,对应于 2nd 数据集上的 Column 1Column 5 Y 代表目标列。 我面临的问题是我无法解释为什么 pred1pred2 完全相同?只要 X1X2 不相同 pred1pred2 也必须不同,不是吗?请帮我找出我的错误假设。

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    您所观察到的完全符合预期。 您为数据拟合了一个高复杂度的估计器(max_depth=None),因此很容易记住所有数据,即完全过度拟合训练数据。 然后预测将是您为训练提供的任何标签。

    看看 Peter 关于如何正确调整 GradientBoosting 的演讲: https://www.youtube.com/watch?v=-5l3g91NZfQ

    无论如何,您至少应该有一个测试集。

    【讨论】:

      【解决方案2】:

      我的猜测是,由于您将 X1 和 X2 拟合到相同的 Y,因此 pred1 和 pred2 相似是合理的。当你的 Regressor 非常强大(可以拟合任何东西)或者你的问题太简单(可以完全由你的 regressor 拟合)时,pred1 和 pred2 都将等于 Y。

      【讨论】:

        猜你喜欢
        • 2016-01-06
        • 1970-01-01
        • 2021-01-25
        • 1970-01-01
        • 2016-04-01
        • 2023-03-28
        • 2021-10-06
        • 2014-04-03
        • 2019-07-27
        相关资源
        最近更新 更多