【发布时间】:2017-12-23 14:25:04
【问题描述】:
我有一个大约 15,000 个包含 13 个特征的小型数据集。 所有输入都是整数,没有非常大的数字。
我使用这些数据通过 Gridsearch 训练 SVR、SVM、XGboost 等分类器。
但是每个训练过程都需要很长时间。(超过 60 分钟)
我已经对输入数据 X 进行了缩放,但仍然需要很长时间。 另外,从其他有类似问题的帖子中,已经添加了诸如SVC(cache_size = 7000)之类的catch_size iin分类器来训练模型,但是对于加快计算速度似乎无能为力。
它本身的数据非常小,所以我对此感到很奇怪。
这是我的代码示例,如果有人可以给我任何建议,我将非常感激。
from xgboost.sklearn import XGBRegressor
one_to_left = st.beta(10, 1)
from_zero_positive = st.expon(0, 50)
params = {
"n_estimators": [100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200],
"max_depth": [2, 3, 4, 5, 6, 7, 8, 9, 10],
"learning_rate": [0.05, 0.4, 1, 1.5, 2, 2.5, 3, 4],
"colsample_bytree": [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
"subsample":[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
}
xgbreg = XGBRegressor()
gs = GridSearchCV(xgbreg, params)
gs.fit(X_train, y_train)
y_gs = gs.predict(X_test)
目标变量 y 是回归问题的整数百分比; 二进制数据 0 和 1 用于分类问题。
【问题讨论】:
-
不能说 XGBoost,但基于 svm 的估计器可以很好地处理缩放数据(主要是标准化)。看here。同时发布您的数据和完整的代码,以便其他人可以验证他们机器上的运行时间。