2

我正在尝试使用Optuna. 数据集是MovieLense(1M)。在一个脚本中,我有Lasso,RidgeKnn. Optuna 在 Lasso 和 Ridge 上运行良好,但在 Knn 上却卡住了。

您可以在 中看到 Ridge 模型调整的试验2021-07-22 18:33:53。后来为 Knn 创建了一项新研究2021-07-22 18:33:53。现在(在发布时)它是2021-07-23 11:07:48,但没有试用Knn.  

^[[32m[I 2021-07-22 18:33:53,959]^[[0m Trial 199 finished with value: -1.1917496039282074 and parameters: {'alpha': 3.553292157377711e-07, 'solver': 'sag', 'normalize': False}. Best is trial 71 with value: -1.1917485424789929.^[[0m
^[[32m[I 2021-07-22 18:33:53,961]^[[0m A new study created in memory with name: no-name-208652b3-68ec-4464-a2ae-5afefa9bf133^[[0m

SVR模型也发生了同样的事情(您可以在 84 号试用后看到 optuna 卡住2021-07-23 05:13:40

^[[32m[I 2021-07-23 05:13:37,907]^[[0m Trial 83 finished with value: -1.593471166487258 and parameters: {'C': 834.9834466420455, 'epsilon': 99.19181748590665, 'kernel': 'linear', 'norm': 'minmax'}. Best is trial 61 with value: -1.553044709891868.^[[0m
^[[32m[I 2021-07-23 05:13:40,261]^[[0m Trial 84 finished with value: -1.593471166487258 and parameters: {'C': 431.4022584640214, 'epsilon': 2.581688694428477, 'kernel': 'linear', 'norm': 'minmax'}. Best is trial 61 with value: -1.553044709891868.^[[0m

你能告诉我为什么 Optuna 卡住了,我该如何解决这些问题?

环境

  • Optuna 版本:2.8.0
  • Python版本:3.8
  • 操作系统:Linux CentOS 7
  • (可选)其他库及其版本:Scikit Learn、Pandas 和(最常见的库)

可重现的例子

我用于超调的代码

def tune(objective):
    study = optuna.create_study(direction="maximize")
    study.optimize(objective, n_trials=200, n_jobs=40)
    params = study.best_params
    return params

def knn_objective(X_train: DataFrame, y_train: DataFrame, cv_method: kfolds) -> Callable[[Trial], float]:
    def objective(trial: Trial) -> float:
        args: Dict = dict(
            n_neighbors=trial.suggest_int("n_neighbors", 2, 40, 1),
            weights=trial.suggest_categorical("weights", ["uniform", "distance"]),
            metric=trial.suggest_categorical("metric", ["euclidean", "manhattan", "mahalanobis"]),
        )
        estimator = KNeighborsRegressor(**args)
        scores = cross_validate(
            estimator, X=X_train, y=y_train, scoring="neg_mean_squared_error", cv=cv_method, n_jobs=-1
        )
        return float(np.mean(scores["test_score"]))

    return objective
4

1 回答 1

-1

不关注问题。你是什​​么意思 Optuna 正在“卡住”?试验没有完成还是没有找到新的好价值?

于 2021-07-26T08:15:49.757 回答