BayesSearchCV超参数依赖

我正在使用BayesSearchCV来通过贝叶斯优化寻找最佳超参数。使用BayesSearchCV的语法如下所示:

clas_model = LogisticRegression(max_iter=5000)search_space ={    "penalty": Categorical(['l1', 'l2', 'elasticnet', 'none']),    "solver": Categorical(['lbfgs', 'newton-cg', 'liblinear', 'sag', 'saga']),    "fit_intercept": Categorical([True, False])}bayes_search = BayesSearchCV(clas_model, search_space, n_iter=12, scoring="accuracy", n_jobs=-1, cv=5)bayes_search.fit(X, y.values.ravel(), callback=on_step)predictions_al = cross_val_predict(bayes_search, X, y.values.ravel(), cv=folds)

在这种情况下,’newton-cg’求解器不接受’l1’惩罚,因此超参数之间存在依赖关系。是否有办法使用此库来配置这一点?


回答:

通过查看其他库如GridCV或RandomCV,我意识到我们可以将不同的搜索空间提供到数组中,尽管这在BayssianCV中未被记录,但在其他库中有一些没有详细说明的快速示例。

最后,由于求解器、惩罚和其他参数之间的高度依赖性(在此处描述:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html),语法应如下所示:

clas_model = LogisticRegression(max_iter=5000)search_space =  [   {    "solver": Categorical(['liblinear']),    "penalty": Categorical(['l1', 'l2']),    "fit_intercept": Categorical([True, False]),    #"warm_start": Categorical([True, False])   },   {    "solver": Categorical(['lbfgs', 'newton-cg', 'sag']),    "penalty": Categorical(['l2', 'none']),    "fit_intercept": Categorical([True, False]),    #"warm_start": Categorical([True, False])   },   {    "solver": Categorical(['saga']),    "penalty": Categorical(['l1', 'l2', 'none']),    "fit_intercept": Categorical([True, False]),    #"warm_start": Categorical([True, False])   },   {    "solver": Categorical(['saga']),    "penalty": Categorical(['elasticnet']),    "fit_intercept": Categorical([True, False]),    "l1_ratio": Real(0, 1, prior='uniform'),    #"warm_start": Categorical([True, False])   },  ]

‘newton-cg’、‘sag’和‘lbfgs’求解器仅支持L2正则化和原始公式,或者不使用正则化。‘liblinear’求解器支持L1和L2正则化,仅对L2惩罚使用对偶公式。Elastic-Net正则化仅由‘saga’求解器支持。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注