我正在使用scipy.optimize.minimize来查找对使用的初始猜测相当敏感的 4D 函数的最小值。如果我稍微改变一下,解决方案就会发生很大的变化。
SO中已经有许多与此类似的问题(例如:1 , 2 , 3),但没有真正的答案。
在我的一个老问题中,zunzun.com 网站(显然不再在线)的开发人员之一解释了他们如何管理这个:
Zunzun.com 使用差分进化遗传算法 (DE) 找到初始参数估计值,然后将其传递给 scipy 中的 Levenberg-Marquardt 求解器。DE 本身实际上并不用作全局优化器,而是用作“初始参数猜测器”。
我发现最接近这个算法的是这个答案,其中一个for块用于通过随机初始猜测多次调用最小化函数。这会生成多个最小化的解决方案,最后选择最好的(最小值)一个。
是否有类似于 zuzun dev 描述的已经在 Python 中实现的内容?
python machine-learning mathematical-optimization scipy hyperparameters
我有一个带有一组定义的参数 ( ) 的逻辑回归warm_start=True模型。
与往常一样,我调用LogisticRegression.fit(X_train, y_train)并使用模型来预测新的结果。
假设我改变一些参数,并使用相同的训练数据C=100再次调用方法。.fit
.fit从理论上讲,我认为与 的模型相比,第二次应该花费更少的计算时间warm_start=False。然而,根据经验来看,事实并非如此。
请帮我理解参数的概念warm_start。
PS:我也进行了
SGDClassifier()实验。
gradient-descent scikit-learn logistic-regression hyperparameters
我想用 fit_generator 作为 keras 的输入网格搜索模型的参数
我在堆栈溢出中找到以下代码并更改它
1-但我不明白如何使用 fit_generator 或 flow_from_directory 来拟合函数(代码中的最后一行)
2-如何添加提前停止?
谢谢
from __future__ import print_function
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.grid_search import GridSearchCV
from tqdm import tqdm # a nice pretty percentage bar for tasks. Thanks to viewer Daniel Bühler for this suggestion
import os # dealing with directories
import …Run Code Online (Sandbox Code Playgroud) 我想优化一个具有多个可变参数作为输入的算法。
对于机器学习任务,Sklearn提供具有gridsearch功能的超参数优化。
Python 中是否有标准化的方式/库可以优化不限于机器学习主题的超参数?
python optimization scikit-learn hyperparameters grid-search
好吧,我试图了解如何以及在算法中的哪个点应用 Kfold CV 和 GridSearchCV。另外,如果我理解正确的话,GridSearchCV 用于超参数调整,即参数的哪些值将给出最佳结果,而 Kfold CV 用于更好的泛化,以便我们在不同的折叠上进行训练,从而在数据有序的情况下减少偏差以某种特定的方式,从而增加普遍性。现在的问题是,GridSearchCV 是否也使用 CV 参数进行交叉验证。那么为什么我们需要 Kfold CV,如果需要的话我们是否在 GridSearchCV 之前进行呢?对该过程的一些概述将非常有帮助。
machine-learning scikit-learn cross-validation hyperparameters
我正在尝试调整一些参数并且搜索空间非常大。到目前为止,我有 5 个维度,它可能会增加到大约 10 个。问题是,如果我能弄清楚如何对它进行多处理,我认为我可以获得显着的加速,但我找不到任何好的方法它。我正在使用hyperopt,但我不知道如何让它使用 1 个以上的内核。这是我没有所有不相关内容的代码:
from numpy import random
from pandas import DataFrame
from hyperopt import fmin, tpe, hp, Trials
def calc_result(x):
huge_df = DataFrame(random.randn(100000, 5), columns=['A', 'B', 'C', 'D', 'E'])
total = 0
# Assume that I MUST iterate
for idx_and_row in huge_df.iterrows():
idx = idx_and_row[0]
row = idx_and_row[1]
# Assume there is no way to optimize here
curr_sum = row['A'] * x['adjustment_1'] + \
row['B'] * x['adjustment_2'] + \
row['C'] * x['adjustment_3'] + \ …Run Code Online (Sandbox Code Playgroud) 看起来 Ray Tune 文档促使您使用一种方法编写一个可训练类,_train该方法可以进行增量训练并将指标报告为字典。通过 _load _restore 方法可以保持一定的状态。
太长了;没有明确的好方法来基于配置运行嵌套并行运行并记录结果等。这种模式是否会破坏调整流程?
如果您想在不同的训练/测试对(具有不同的模型)上使用聚合分数,那么您在方法内的训练/测试对和模型上映射(并行)的预期模式是什么_train?
如果有关 Tune 使用的问题有更好的地方,请告诉我。
我正在尝试调整一个基本的神经网络作为练习。(基于 coursera 课程中的一个示例:神经网络和深度学习 - DeepLearning.AI)我面临随机权重初始化的问题。假设我尝试调整网络中的层数。我有两个选择:
两个版本各有利弊。我最大的担忧是,如果我使用随机种子(例如:),tf.random.set_seed(1)那么确定的值可能会“过度拟合”到种子,如果没有种子或值发生更改(例如:tf.random.set_seed(1)-> tf.random.set_seed(2). On),则可能无法正常工作另一方面,如果我在没有随机种子的情况下多次运行我的实验,那么我可以检查更少的选项(由于计算能力有限)并且仍然只检查可能的随机权重初始化的一个子集。在这两种情况下,我觉得运气是一个强大的因素正在进行中。
是否有最佳实践来处理这个话题?
TensorFlow 是否为此内置了工具?我感谢任何描述或教程的来源。提前致谢!
machine-learning neural-network deep-learning hyperparameters tensorflow
我有一个问题要问:
xgboost 算法中权重的 L1 和 L2 正则化项究竟有何不同。
据我了解,L1由LASSO使用,L2由RIDGE回归使用,L1可以缩小到0,L2不能。我了解使用简单线性回归时的机制,但我不知道它在基于树的模型中如何工作。
此外,gamma 是另一个参数,它使模型更加保守。我应该如何注意L1/L2和gamma参数之间的区别。
我在文档中发现这个问题很少:
lambda [默认=1,别名:reg_lambda]
alpha [默认=0,别名:reg_alpha]
gamma [默认=0,别名:min_split_loss]
它们的范围都是从 0 到 inf。
预先感谢您的任何答复/评论!
我最近开始研究线性回归机器学习。我使用LinearRegression( lr) 来预测一些值。事实上,我的预测很糟糕,我被要求更改超参数以获得更好的结果。
我使用以下命令来获取超参数:
lr.get_params().keys()
lr.get_params()
Run Code Online (Sandbox Code Playgroud)
并获得以下内容:
'copy_X': True,
'fit_intercept': True,
'n_jobs': None,
'normalize': False,
'positive': False}
Run Code Online (Sandbox Code Playgroud)
和
dict_keys(['copy_X', 'fit_intercept', 'n_jobs', 'normalize', 'positive'])
Run Code Online (Sandbox Code Playgroud)
现在,这就是问题开始出现的地方。我试图找到使用该.set_params()函数的正确语法,但每个答案似乎都超出了我的理解范围。
我尝试分配一个位置参数,因为命令如lr.set_params('normalize'==True)返回
TypeError: set_params() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)
并lr.set_params(some_params = {'normalize'})返回
ValueError (`ValueError: Invalid parameter some_params for estimator LinearRegression(). Check the list of available parameters with estimator.get_params().keys().
Run Code Online (Sandbox Code Playgroud)
有人可以简单解释一下这个函数是如何工作的吗?
python machine-learning linear-regression scikit-learn hyperparameters
hyperparameters ×10
python ×6
scikit-learn ×5
grid-search ×2
pandas ×2
keras ×1
optimization ×1
optuna ×1
ray ×1
scipy ×1
tensorflow ×1
xgboost ×1