原副标题:超模块优化较为之分层搜寻、随机搜寻和可计算性优化
概要
一般来说,在试著改良机器自学数学模型时,人们首先想不到的软件系统是加进更多的体能训练统计数据。附加的统计数据一般来说是有协助(在这类情况下仅限)的,但聚合高效率的统计数据可能将非常高昂。透过使用原有统计数据获得最差数学模型操控性,超模块优化能节约他们的时间和天然资源。
简而言之,超模块优化是为机器自学数学模型确定最差超模块女团以满足用户优化表达式(即,取值研究中的统计数据集,最小化数学模型的操控性)的操作过程抖音音频seo。换言之,每一数学模型单厢提供更多数个有关快捷键的调整“按键”,他们能改变它,直至他们数学模型的超模块达到最差女团。在超模块优化操作过程中,他们能更动的模块的一些实例能是自学率、数学模型的构架(比如,暗藏层的数量)、二阶化等。
在这首诗中,他们将从基本概念上如是说四种最常用的超模块优化方式,即分层搜寻、随机搜寻和可计算性优化,接着对它进行逐个实现。
我将在该文一开始提供更多两个高阶其它较为表,以供听众参照,接着将在本抖音音频seo文的永古约省进一步深入探讨、说明和实施较为附注的每项。
表1:超模块优化方式较为
1.分层搜寻算法
分层搜寻可能将是超模块优化的最简单和最简单的方式,它牵涉在表述的搜寻内部空间中全盘搜寻超模块的最差女团。在此语句中的“搜寻内部空间”是整个超模块以及在优化操作过程中考虑的这类超模块的值。让他们透过两个实例来更快地认知分层搜寻。
假定他们有两个只有三个模块的机器自学数学模型,每一模块都能取下附注提供更多的值:
拷贝
paramete抖音音频seor_1 = [1, 2, 3]
parameter_2 = [a, b, c]
parameter_3 = [x, y, z]
他们不知道这些模块的哪个女团将优化他们的数学模型的优化功能(即为他们的机器自学数学模型提供更多最差输出)。在分层搜寻中,他们只需试著这些模块的每两个女团,测量每一模块的数学模型操控性,接着简单地选择产生最差操控性的女团!在此实例中,模块1能取3个值(即1、2或3),模块2能取3种值(即a、b和抖音音频seoc),模块3能取3种值(即x、y和z)。换言之,总共有3*3*3=27个女团。本例中的分层搜寻将牵涉27轮评估机器自学数学模型的操控性,以找到操控性最差的女团。
如您所见,这种方式非常简单(类似于试错任务),但也有一些局限性。让他们一起总结一下此方式的优点和缺点。
其中,优势包括:
易于认知和实施 易于并行化 适用于离散和连续内部空间缺点主要有: 在具有大量超模块的大型和/或复杂数学模型中成抖音音频seo本高昂(因为必须试著和评估所有女团) 无记忆——不从过去的观察中自学 如果搜寻内部空间太大,可能将无法找到最差女团我的建议是,如果您有两个搜寻内部空间较小的简单数学模型,请使用分层搜寻;否则,建议继续往下阅读以找到更适合更大搜寻内部空间的软件系统。 现在,让他们用两个真实的例子来实现分层搜寻。1.1.分层搜寻算法实现
为了实现分层搜寻,他们将使用scikit-learn中的Iris统计数据集创建一抖音音频seo个随机森林分类数学模型。该统计数据集包括3种不同的鸢尾花瓣和萼片长度,将用于本次分类练习。在本文中,数学模型开发是次要的,因为目标是较为各种超模块优化策略的操控性。我鼓励您关注数学模型评估结果,以及每种超模块优化方式达到所选超模块集所需的时间。我将描述运行结果,接着为本文中使用的四种方式提供更多两个汇总较为表。
包括所有超模块值的搜寻内部空间,表述如下:
拷贝
search_space = {n_estimators: [10,抖音音频seo 100, 500, 1000],
max_depth: [2, 10, 25, 50, 100],
min_samples_split: [2, 5, 10],
min_samples_leaf: [1, 5, 10]}
上述搜寻内部空间由4*5*3*3=180个超模块的总女团组成。他们将使用分层搜寻来找到优化目标表达式的女团,如下所示:
拷贝
# Import libraries
from sklearn.mod抖音音频seoel_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import time
# 加载Iris统计数据集
iris =抖音音频seo load_iris()
X, y = iris.data, iris.target
#表述超模块搜寻内部空间
search_space = {n_estimators: [10, 100, 500, 1000],
max_depth: [2, 10, 25, 50, 100],
min_samples_split: [2, 5, 10],
min_samples_leaf: [1, 5, 10]}
#表述随机林分抖音音频seo类器
clf = RandomForestClassifier(random_state=1234)
# 聚合优化器对象
optimizer = GridSearchCV(clf, search_space, cv=5, scoring=accuracy)
#存储起始时间,以便用于计算总的耗时
start_time = time.time()
#拟合统计数据上的优化器
optimizer.fit(X, y)
# 存储抖音音频seo结束时间,以便用于计算总的耗时
end_time = time.time()
# 打印最差超模块集和相应分数
print(f"selected hyperparameters:")
print(optimizer.best_params_)
print("")
print(f"best_score: {optimizer.best_score_}")
print(f"elapsed_time: {round(e抖音音频seond_time-start_time, 1)}")
上面代码的输出结果如下:
这里他们能看到使用分层搜寻选择的超模块值。其中,best_score描述了使用所选超模块集的评估结果,而elapsed_time描述了我的本地笔记本电脑执行此超模块优化策略所花费的时间。在进行下一种方式时,请记住评估结果和经过的时间,以便进行较为。现在,让他们进入随机搜寻的讨论。
2.随机搜寻算法
简而言之,随机搜寻是从表述的抖音音频seo搜寻内部空间中随机采样超模块的操作过程。与分层搜寻不同,随机搜寻只会在预表述的迭代次数(取决于可用天然资源,如时间、预算、目标等)中选择超模块值的随机子集,并计算每一超模块的机器自学数学模型的操控性,接着选择最差的超模块值。
根据上述方式,您能想象,与完整的分层搜寻相比,随机搜寻成本更低,但仍有其自身的优势和劣势,如下所示:
优势:
易于认知和实施 易于并行化 适用于离散和连续内部空间 比分层搜寻便抖音音频seo宜 与具有相同试著次数的分层搜寻相比,更可能将收敛到最优缺点: 无记忆——不从过去的观察中自学 考虑到随机选择,可能将会错过重要的超模块值在下两个方式中,他们将透过可计算性优化解决分层和随机搜寻的“无记忆”缺点。但在讨论此方式之前,让他们先来实现随机搜寻。
2.1.随机搜寻算法实现
使用下面的代码片段,他们将针对分层搜寻实现中描述的相同问题实现随机搜寻超模块优化。
拷贝
# 导入库
fro抖音音频seom sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
# 创建两个RandomizedSearchCV对象
optimizer = RandomizedSearchCV(clf, param_distributinotallow=search_space,
n_iter=50, cv=5, s抖音音频seocoring=accuracy,
random_state=1234)
# 存储开始时间以计算总运行时间
start_time = time.time()
# 拟合统计数据上的优化器
optimizer.fit(X, y)
# 存储结束时间以计算总运行时间
end_time = time.time()
# 打印最差超模块集和相应分数
print(f"selected hyperparameters:")
print(op抖音音频seotimizer.best_params_)
print("")
print(f"best_score: {optimizer.best_score_}")
print(f"elapsed_time: {round(end_time-start_time, 1)}")
上面代码的输出结果如下:
随机搜寻结果
与分层搜寻的结果相比,这些结果非常有趣。best_score保持不变,但elapsed_time从352抖音音频seo.0秒减少到75.5秒!真是令人印象深刻!换言之,随机搜寻算法设法找到了一组超模块,在分层搜寻所需时间的21%左右,其操控性与分层搜寻相同!但是,这里的效率高得多。
接下来,让他们继续他们的下一种方式,称为可计算性优化,它从优化操作过程中的每一次试著中自学。
3.可计算性优化
可计算性优化是一种超模块优化方式,它使用概率数学模型从以前的试著中“自学”,并将搜寻引向搜寻内部空间中超模块的最差女团,从而优化机器自学数学模型的目标抖音音频seo表达式。
可计算性优化方式能分为4个步骤,我将在下面描述。我鼓励您通读这些步骤,以便更快地认知流程,但使用这种方式并不需要什么前提知识。
表述两个“先验”,这是两个关于他们在某个时间点对优化目标表达式最可能将的超模块女团的信念的概率数学模型 评估超模块样本的数学模型 使用步骤2中获得的知识,更新步骤1中的概率数学模型(即他们所称的“先验”),了解他们认为优化目标表达式的超模块的最可能将女团在哪里。他们更新的抖音音频seo信念称为“后验”。换言之,在步骤2中获得的知识协助他们更快地了解搜寻内部空间,并将他们从先验带到后验,使后验成为他们关于搜寻内部空间和目标表达式的“最新”知识,由步骤2提供更多信息 重复步骤2和3,直至数学模型操控性收敛、天然资源耗尽或满足用户其他预表述指标如果您有兴趣了解更多有关可计算性优化的详细信息,能查看以下帖子:
《机器自学中的可计算性优化算法》,地址是:
https://medium.com/@fmnobar/抖音音频seoconceptual-overview-of-bayesian-optimization-for-parameter-tuning-in-machine-learning-a3b1b4b9339f。
现在,既然他们已经了解了可计算性优化是如何工作的,那么让他们来看看它的优点和缺点。
优势:
从过去的观察中自学,因此效率更高。换言之,与无记忆方式相比,它有望在更少的迭代中找到一组更快的超模块 在给抖音音频seo定这类假定的情况下收敛到最优缺点: 难以并行化 计算量大于分层和每次迭代的随机搜寻 先验和可计算性优化中使用的表达式(比如,获取表达式等)的初始概率分布的选择会显著影响操控性及其自学曲线在排除了细节之后,让他们实现可计算性优化并查看结果。
3.1.可计算性优化算法实现
与上一节类似,他们将使用下面的代码片段为分层搜寻实现中描述的相同问题实现可计算性超模块优化。
拷贝
# 导入库
from skop抖音音频seot import BayesSearchCV
# 执行可计算性优化
optimizer = BayesSearchCV(estimator=RandomForestClassifier(),
search_spaces=search_space,
n_iter=10,
cv=5,
scoring=accuracy,
random_state=1234)
# 存储开始时间以计算总运行时间
start_time = ti抖音音频seome.time()
optimizer.fit(X, y)
# 存储结束时间以计算总运行时间
end_time = time.time()
# 打印最差超模块集和相应分数
print(f"selected hyperparameters:")
print(optimizer.best_params_)
print("")
print(f"best_score: {optimizer.best_score_}")
p抖音音频seorint(f"elapsed_time: {round(end_time-start_time, 1)}")
上面代码的输出结果如下:
可计算性优化结果
另一组有趣的结果!best_score与他们透过分层和随机搜寻获得的结果保持一致,但结果仅用了23.1秒,而随机搜寻为75.5秒,分层搜寻为352.0秒!换言之,使用可计算性优化所需的时间比分层搜寻所需的时间大约少93%。这是两个巨大的生产力提升,在更大抖音音频seo、更复杂的数学模型和搜寻内部空间中变得更有意义。
请注意,可计算性优化只使用了10次迭代就获得了这些结果,因为它能从以前的迭代中自学(与随机和分层搜寻相反)。
结果较为
下表对目前所讨论的四种方式的结果进行了较为。“Methodology(方式论)”一栏描述了所使用的超模块优化方式。随后是使用每种方式选择的超模块。“Best Score”是使用特定方式获得的分数,接着是“Elapsed Time”,表示优化策略抖音音频seo在我的本地笔记本电脑上运行所需的时间。最后一列“获得的效率(Gained Efficiency)”假定分层搜寻为基线,接着计算与分层搜寻相比,其他两种方式中每种方式获得的效率(使用经过的时间)。比如,由于随机搜寻耗时75.5秒,而分层搜寻耗时352.0秒,因此相对于分层搜寻的基线,随机搜寻的效率计算为1–75.5/352.0=78.5%。
表2——方式操控性较为表
以上较为附注的两个主要结论:
效率:他们抖音音频seo能看到可计算性优化等自学方式如何在更短的时间内找到一组优化的超模块。 模块选择:能有数个正确答案。比如,可计算性优化的选定模块与分层和随机搜寻的模块不同,尽管评估度量(即best_score)保持不变。这在更大、更复杂的环境中更为重要。结论
在这首诗中,他们讨论了什么是超模块优化,并如是说了用于此优化练习的四种最常用的方式。接着,他们详细如是说了这四种方式中的每一种,并在分类练习中实现了它。抖音音频seo最后,他们较为了实施这四种方式的结果。他们发现,从以前的试著中自学的可计算性优化等方式能显著提高效率,这可能将是大型复杂数学模型(如广度数学模型)中的两个重要因素,其中效率可能将是两个决定因素。
译者如是说
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文副标题:Hyperparameter Optimization — Intro and Implement抖音音频seoation of Grid Search, Random Search and Bayesian Optimization,作者:Farzad Mahmoodinobar返回搜狐,查看更多
责任编辑: