dask_ml.model_selection.SuccessiveHalvingSearchCV

dask_ml.model_selection.SuccessiveHalvingSearchCV

class dask_ml.model_selection.SuccessiveHalvingSearchCV(estimator, parameters, n_initial_parameters=10, n_initial_iter=None, max_iter=None, aggressiveness=3, test_size=None, patience=False, tol=0.001, random_state=None, scoring=None, verbose=False, prefix='')

执行逐次折半(successive halving)算法 [1]

此算法会训练估计器,进行一定数量的 partial_fit 调用,然后淘汰表现最差的一半。它会用两倍的时间训练幸存的估计器,重复此过程直到只剩下一个估计器。

上面 \(1/2\) 的值用于清晰解释。此类别默认淘汰表现最差的 1 - 1 // aggressiveness 分数的模型,并训练估计器 aggressiveness 倍长的时间,直到剩余的模型数量少于 aggressiveness

参数
estimator估计器对象。

为每个初始超参数组合实例化一个该类型的对象。假定此对象实现了 scikit-learn 估计器接口。估计器需要提供一个 score 函数,或必须传入 scoring。估计器必须实现 partial_fitset_params,并能很好地与 clone 配合使用。

parameters字典 (dict)

字典,其中参数名称(字符串)作为键,值是要尝试的分布或参数列表。分布必须提供一个用于采样的 rvs 方法(例如来自 scipy.stats.distributions 的分布)。如果给定的是列表,则进行均匀采样。

aggressiveness浮点数 (float),默认值=3

淘汰不同估计器的积极程度。值越高,表示对评分越有信心(或超参数对 estimator.score 的影响大于数据的影响)。

n_initial_parameters整数 (int),默认值=10

采样的参数设置数量。这需要在运行时和解决方案质量之间进行权衡。

n_initial_iter整数 (int)

在评分之前初始调用 partial fit 的次数。估计器最初会针对 partial_fit 进行 n_initial_iter 次调用进行训练。较高的 n_initial_iter 值会在做出决策之前训练估计器更长时间。有关 partial_fit 调用次数的元数据位于 metadata(以及 metadata_)中。

max_iter整数 (int),默认值 None

每个模型部分拟合的最大调用次数。如果为 None,SuccessiveHalvingSearchCV 将运行直到(大约)只剩下一个模型。如果指定了该值,当达到 partial_fitmax_iter 次调用时,模型将停止训练。

test_size浮点数 (float)

数据集的百分比,用于留出计算测试分数。默认为输入训练集单个分区的大小。

注意

训练数据集应适合在单台机器的内存中。根据需要调整 test_size 参数来实现此目的。

patience整数 (int),默认值 False

如果指定了该值,当在 partial_fit 调用 patience 次后分数没有提高 tol 时,训练停止。默认为关闭。

tol浮点数 (float),默认值 0.001

停止训练该模型的所需改进水平。最近的分数必须至少比该模型之前所有 patience 次的分数好 tol。增加 tol 会倾向于减少训练时间,但代价是模型变差。

scoring字符串 (string),可调用对象 (callable),None。默认值: None

用于评估测试集预测的单个字符串(参见 评分参数:定义模型评估规则)或可调用对象(参见 scoring)。

如果为 None,则使用估计器的默认评分器(如果可用)。

random_state整数 (int),RandomState 实例或 None,可选,默认值: None

如果为整数,则 random_state 是随机数生成器使用的种子;如果为 RandomState 实例,则 random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。

verbose布尔值 (bool),浮点数 (float),整数 (int),可选,默认值: False

如果为 False(默认),则不打印日志(或将其通过管道输出到 stdout)。但是,仍将使用标准日志记录。

如果为 True,则打印日志并使用标准日志记录。

如果为浮点数,则大约在 verbose 的时间比例内打印/记录日志。

prefix字符串 (str),可选,默认值=””

记录日志时,为每条消息添加 prefix

属性
cv_results_np.ndarrays 字典 (dict)

此字典包含以下键

  • mean_partial_fit_time

  • mean_score_time

  • std_partial_fit_time

  • std_score_time

  • test_score

  • rank_test_score

  • model_id

  • partial_fit_calls

  • params

  • param_{key},其中 keyparams 中的每个键。

test_score 中的值对应于模型在保留数据集上获得的最后一个分数。键 model_idhistory_ 对应。此字典可以导入到 Pandas 中。

metadata 和 metadata_字典 (dict[key, int])

描述计算的字典。metadata 描述将要执行的计算,而 metadata_ 描述已经执行的计算。两个字典都包含以下键

  • n_models: 本轮逐次折半中的模型数量

  • max_iter: partial_fit 被调用的最大次数。至少会有一个模型有这么多次 partial_fit 调用。

  • partial_fit_calls: partial_fit 总调用次数。所有模型加起来会收到这么多次 partial_fit 调用。

当指定了 patience 时,减少的计算量将反映在 metadata_ 中,而不是 metadata 中。

model_history_字典 (dict),其中值为字典列表 (list of dict)

每个模型的历史记录字典。这是 history_ 的重新组织:包含相同信息,但按模型组织。

此数据的结构为 {model_id: hist},其中 histhistory_ 的子集,model_id 是模型标识符。

history_字典列表 (list of dicts)

每次 partial_fit 调用后关于每个模型的信息。每个字典包含以下键

  • partial_fit_time

  • score_time

  • score

  • model_id

  • params

  • partial_fit_calls

model_id 对应于 cv_results_ 中的 model_id。此字典列表可以导入到 Pandas 中。

best_estimator_基础估计器 (BaseEstimator)

在“逆衰减”(inverse decay)算法保留的所有模型中,验证分数最高的模型。

best_score_浮点数 (float)

在对 partial_fit 进行最后一次调用后,best_estimator_ 在验证集上达到的分数。

best_index_整数 (int)

指示 cv_results_ 中哪个估计器对应最高分数的索引。

best_params_字典 (dict)

在保留数据上找到的最佳参数字典。

scorer_

用于对模型进行评分的函数,其调用签名为 scorer_(estimator, X, y)

n_splits_整数 (int)

交叉验证分割的数量。

multimetric_布尔值 (bool)

此交叉验证搜索是否使用多个指标。

参考文献

1

Jamieson, Kevin 和 Talwalkar, Ameet 的论文“Non-stochastic best arm identification and hyperparameter optimization”。2016 年。 https://arxiv.org/abs/1502.07943

方法

decision_function(X)

fit(X[, y])

为特定模型找到最佳参数。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取此估计器的参数。

inverse_transform(Xt)

predict(X)

对 X 进行预测。

predict_log_proba(X)

概率估计的对数。

predict_proba(X)

概率估计。

score(X[, y])

返回给定数据上的分数。

set_params(**params)

设置此估计器的参数。

set_score_request(*[, compute])

请求传递给 score 方法的元数据。

transform(X)

对于 dask 输入,按块或按分区进行变换。

partial_fit

__init__(estimator, parameters, n_initial_parameters=10, n_initial_iter=None, max_iter=None, aggressiveness=3, test_size=None, patience=False, tol=0.001, random_state=None, scoring=None, verbose=False, prefix='')