首页 > 解决方案 > 每次迭代时梯度提升训练损失都会增加

问题描述

每次迭代,训练损失都在增加。

      Iter       Train Loss   Remaining Time 
         1        5313.1014           22.51s
         2        5170.8669           21.21s
         3     1641863.7866           20.05s
         4     1640770.5703           18.86s
         5     1695332.9514           17.62s
         6     1689162.9816           16.42s
         7     1689562.3732           15.26s
         8     1803110.9519           14.08s
         9     1801803.5873           12.94s
        10     2274529.9750           11.77s
        11    17589338.0388           10.59s
        12  1121779686.7875           10.03s
        13 1071057062185277527192667544912333682394851905403317706031104.0000            
        14 1071057062185277527192667544912333682394851905403317706031104.0000            
        15 1071057062185277527192667544912333682394851905403317706031104.0000            
        16 1071057062185277527192667544912333682394851905403317706031104.0000            
        17 1071057062185277527192667544912333682394851905403317706031104.0000            
        18 1071057062185277527192667544912333682394851905403317706031104.0000            
        19 1071057062185277527192667544912333682394851905403317706031104.0000            
        20 1071057062185277527192667544912333682394851905403317706031104.0000           

我的输入是一个 0 和 1 的大矩阵(向量化的词,作为稀疏矩阵),我的目标是整数:

array([131,  64,  64, 134,  32,  50,  42, 154, 124,  29,  64, 154, 137,
        64,  64,  64,  89,  16, 125,  64])

也许我的代码有问题,但我对此表示怀疑。这里是:

xgboost = GradientBoostingClassifier(n_estimators=20, 
                                     min_samples_leaf=2, 
                                     min_samples_split=3,
                                     verbose=10, max_features=20)
xgboost.fit(xtrain, ytrain)

我的输入形状是:

<1544x19617 sparse matrix of type '<class 'numpy.int64'>'
    with 202552 stored elements in Compressed Sparse Row format>

标签: pythonmachine-learningscikit-learnxgboost

解决方案


当训练损失突然爆发时,有时是因为陷入了退化的解决方案空间。降低学习率可能会有所帮助(在这种情况下似乎)。在梯度提升中,学习率会影响每棵连续树对现有预测的影响。通过降低学习率,任何一棵树从根本上改变整体预测的能力都会降低,这有助于避免意外地陷入退化的解决方案空间。


推荐阅读