【问题标题】:How to change params to prevent xgboost accuracy get stuck如何更改参数以防止 xgboost 精度卡住
【发布时间】:2015-09-04 05:27:58
【问题描述】:

我正在尝试使用 multi:softmax 目标训练 xgboost 模型,但准确度得分卡住了。

代码:

#preparing dataset omitted
xgb_params = {
    "objective": "multi:softmax",
    "eta": 1,
    "num_class": 62,
    "max_depth": 10,
    "nthread": 4,
    "eval_metric": "merror",
    "print.every.n": 1,
    "silent": 1,
    "early.stop.round": 5
}
num_rounds = 5

mask = np.random.choice([False, True], len(X_train), p=[0.5, 0.5])
not_mask = [not i for i in mask]

dtrain = xgb.DMatrix(X_train[not_mask], label=y[not_mask])
dtrain_watch = xgb.DMatrix(X_train[mask], label=y[mask])
dtest = xgb.DMatrix(X_test)
watchlist = [(dtrain_watch, 'eval')]

gbdt = xgb.train(xgb_params, dtrain, num_rounds, watchlist)
preds = gbdt.predict(dtest)

输出:

[0] eval-merror:0.989950
[1] eval-merror:0.989950
[2] eval-merror:0.989950
[3] eval-merror:0.989950
[4] eval-merror:0.989950

我需要更改哪些参数以反映迭代中的任何更改 eval-merror?

编辑:我尝试将 eta 更改为 0.01、0.1、0.3 和 1,但没有成功。

【问题讨论】:

    标签: python python-2.7 machine-learning xgboost


    【解决方案1】:

    我认为这与参数无关,而与您的数据有关。

    根据新问题,您可以通过使用不同的数据集(例如来自 kaggle)来测试它并像这样构建一个模型,但可能使用不同的"num_class": x

    【讨论】:

      【解决方案2】:

      您可以使用 sklearn GridSearchCV 进行参数调整。但是如果你没有时间就增加early.stop.roundmax_depth和降低eta

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-06
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 2015-04-05
        相关资源
        最近更新 更多