发布说明
关于各版本新功能的一些说明
0.11.1版本更新内容
错误修复:
修复了会导致AttributeError: 'GASearchCV'对象没有'creator'属性的错误
0.11.0版本的新变化
功能特性:
新增了一个参数use_cache,默认值为
True。启用时,算法将跳过重新评估已评估过的解决方案,改为从缓存中获取性能指标。 如果use_cache设置为False,算法将始终重新评估解决方案,即使之前已经评估过,以获取新的性能指标。在GAFeatureSelectionCV中添加一个名为warm_start_configs的参数,默认值为
None,这是一个预定义超参数配置列表,用于初始化种群。 列表中的每个元素都是一个字典,其中键是超参数的名称, 值是对应个体的超参数值。示例:
1warm_start_configs = [ 2 {"min_weight_fraction_leaf": 0.02, "bootstrap": True, "max_depth": None, "n_estimators": 100}, 3 {"min_weight_fraction_leaf": 0.4, "bootstrap": True, "max_depth": 5, "n_estimators": 200}, 4]
遗传算法将使用这些配置初始化部分种群,以 预热优化过程。种群中的其余个体将 根据定义的超参数空间随机初始化。
当存在已知良好的超参数配置时,此参数非常有用, 允许算法专注于优化已知的良好解决方案,同时仍探索 超参数空间的新区域。如果设置为
None,则整个种群将随机初始化。在GASearchCV类中引入了新颖性搜索策略。该策略通过在适应度评估中加入新颖性分数,奖励与种群中其他个体差异更大的解决方案。新颖性分数鼓励探索并促进多样性,降低了过早收敛到局部最优解的风险。
新颖性评分: 基于个体与种群中最近邻个体之间的距离计算。 新颖性评分较高的个体与种群中其他个体的差异更大。
适应度评估: 整体适应度现在是传统性能得分和新颖性得分的组合,使算法能够在利用已知良好解决方案和探索新的多样化解决方案之间取得平衡。
增强探索能力:该策略有助于探索超参数空间的新区域,提高发现更优解的可能性,同时避免陷入局部最优。
API变更:
不再支持 Python 3.8 版本
0.10.1版本更新内容
功能特性:
使用
pip install sklearn-genetic-opt[all]时安装 tensorflow
错误修复:
修复了在管道中使用时无法克隆GA类的错误
0.10.0版本更新内容
API变更:
GAFeatureSelectionCV 现在模仿了 scikit-learn 的特征选择算法 API,而非网格搜索,这使得它作为更接近 scikit-learn API 的选择方法更容易实现
改进了当设置max_features时的GAFeatureSelectionCV候选生成功能,同时确保至少选择一个特征
crossover_probability 和 mutation_probability 现在能正确传递到 GAFeatureSelectionCV 内部的 mate 和 mutation 函数
停止支持python 3.7,新增支持python 3.10+版本
将dev-requirements.txt中最关键的软件包更新至较新版本
更新测试中已弃用的函数
错误修复:
修复了
GAFeatureSelectionCV的API文档,它之前指向了错误的类
0.9.0版本的新特性
功能特性:
引入自适应调度器以实现自适应变异和交叉概率;目前支持的调度器包括:
在
Continuous、Categorical和Integer类中添加random_state参数(默认值为None),用于在超参数采样过程中固定随机种子。请注意,这只能确保空间组件的可重现性,而非整个包。这是由于DEAP依赖项没有原生设置随机种子的方法。
API变更:
将mutation_probability和crossover_probability的默认值分别改为0.8和0.2。
在
GAFeatureSelectionCV中使用的weighted_choice函数被重新编写,以给予更接近max_features参数的特征数量更高的概率移除了未使用且错误的函数
plot_parallel_coordinates()
错误修复:
现在当使用
plot_search_space()函数时,所有参数都会被转换为np.float64类型,以避免在绘制布尔值时出现seaborn包的错误。
0.8.1版本的新变化
功能特性:
如果设置了
GAFeatureSelectionCV中的max_features参数,初始种群现在会进行采样,使特征数少于max_features的解决方案获得更高概率。
0.8.0版本更新内容
功能特性:
GAFeatureSelectionCV现在新增了一个名为 max_features 的参数,类型为 int,默认值为 None。 如果该参数不为 None,它将对特征数量超过 max_features 的个体进行惩罚,从而为所选特征数量设置一个"软性"上限。类
GASearchCV和GAFeatureSelectionCV现在支持与scikit-learn相同的多指标评估方式, 您将在logbook和cv_results_对象中看到这一变化,现在会显示每个指标的评估结果。 与scikit-learn一样,如果使用多指标评估,refit参数必须是一个字符串,用于指定评估交叉验证分数的指标。 更多详情请参阅GASearchCV和GAFeatureSelectionCV的API文档。如果被以下异常中断,训练会优雅地停止:
KeyboardInterrupt,SystemExit,StopIteration。 当这些异常被触发时,模型会完成当前代并保存当前最佳模型。此功能仅在至少完成一代训练时有效。
API变更:
以下参数修改了默认值,以创建更广泛且不同的模型,从而获得更好的结果:
population_size 从 10 到 50
代数从40增加到80
变异概率从0.1调整到0.2
文档:
新增了一个名为Iris_multimetric的笔记本,用于展示新的多指标功能。
0.7.0版本的新特性
功能特性:
GAFeatureSelectionCV用于特征选择,可与任何scikit-learn分类器或回归器配合使用。它能在优化交叉验证得分的同时最小化所选特征数量。该类兼容mlflow和tensorboard集成、回调函数以及plot_fitness_evolution功能。
API变更:
模块
mlflow被重命名为mlflow_log,以避免名称解析时出现意外错误
0.6.1版本更新内容
功能特性:
为
DeltaThreshold新增了generations参数。 现在它会比较最近若干代指标的最大值和最小值,而不仅仅是当前代与上一代的比较。默认值为2,因此行为与之前版本保持一致。
错误修复:
当提供的param_grid长度为1时,会触发用户警告而非错误。内部实现会将交叉操作切换为使用DEAP的
cxSimulatedBinaryBounded()函数。当使用
Continuous类并指定边界lower和upper时, 原先是从[lower, lower + upper]范围的均匀分布中采样,现在已修正为正确地从[lower, upper]范围采样。
0.6.0版本更新内容
功能特性:
新增了
ProgressBar回调功能,该功能使用tqdm进度条来显示训练过程中剩余多少代。新增了
TensorBoard回调功能,用于记录世代指标,在模型训练过程中实时监控,并可在TensorBoard实例中比较不同运行结果。新增了
TimerStopping回调功能,用于在总训练时间达到设定阈值后停止迭代。在
plot_parallel_coordinates()中新增了平行坐标图功能。现在,如果一个或多个回调决定停止算法,它将打印其类名以了解哪些回调负责停止。
新增了对来自scikit-learn的BaseSearchCV额外方法的支持,例如cv_results_、best_index_和refit_time_等。
向
BaseCallback添加了方法on_start和on_end。 现在算法会像这样检查回调函数:on_start: 当从GASearchCV.fit方法调用进化算法时。
on_step: 当进化算法完成一代时(此处无变化)。
on_end: 在最后一代结束时。
错误修复:
之前存在一个缺失语句导致回调函数从第1代开始评估,忽略了第0代。 现在这个问题已修复,回调函数从第0代开始正常工作。
API变更:
模块
plots和MLflowConfig现在需要显式安装 seaborn 和 mlflow,这些现在可以通过pip install sklearn-genetic-opt[all]选择性安装。GASearchCV.logbook 属性现在包含了来自 scikit-learn 中 cross_validate 函数的额外信息。
为GASearchCV添加了一个可选额外参数,名为return_train_score: bool,默认值为
False。 与scikit-learn中一样,它控制cv_results_是否应包含训练分数。
文档:
将所有演示样例编辑为Jupyter笔记本格式。
新增了嵌入式Jupyter笔记本示例。
该包的模块现在在文档中包含了其类/函数的摘要说明。
更新了回调函数和自定义回调函数的教程,新增了TensorBoard回调功能以及基础回调函数的新方法。
内部实现:
现在hof使用self.best_params_作为位置0的参数,以保持与scikit-learn API及self.best_index_等参数的一致性
0.5.0版本更新内容
功能特性:
通过使用
MLflowConfig和GASearchCV中的新参数log_config,实现与MLflow的内置集成实现了回调函数
LogbookSaver,该函数会保存estimator.logbook对象,其中包含所有拟合的超参数及其交叉验证分数为模块
callbacks中的所有函数添加了参数estimator
文档:
新增用户指南"与MLflow集成"
更新教程"自定义回调函数"以适配新的API继承行为
内部实现:
新增了一个基类
BaseCallback,所有回调类都必须继承自该基类现在覆盖率报告不再统计包含 # pragma: no cover 和 # noqa 标记的代码行
0.4.1版本更新内容
文档:
新增了关于"理解评估流程"的用户指南
多份关于贡献指南和行为准则的文档
添加了重要链接
文档依赖项现已独立于软件包依赖项
内部实现:
将测试CI从Travis迁移至Github Actions
0.4版本的新特性
功能特性:
实现了回调模块,可根据当前迭代指标停止优化过程,目前已实现:
ThresholdStopping、ConsecutiveStopping和DeltaThreshold。算法 'eaSimple'、'eaMuPlusLambda'、'eaMuCommaLambda' 现已实现在
algorithms模块中,以便更好地控制其选项,而不是直接使用 deap.algorithms 模块实现了
plots模块并新增了plot_search_space()函数,该函数会绘制混合计数图、散点图和直方图,展示所有拟合超参数及其交叉验证分数基于rst格式的文档,使用Sphinx构建以便托管在read the docs平台。 包含公开类和函数的文档说明,以及多个关于如何使用该软件包的教程
在拟合GASearchCV后添加了best_params_和best_estimator_属性
新增可选参数 refit, pre_dispatch 和 error_score
API变更:
移除了对 Python 3.6 的支持,将库支持的版本更改为与 scikit-learn 当前版本一致
对文档和变量命名风格进行了多项内部修改,以兼容Sphinx
移除了参数 continuous_parameters、categorical_parameters 和 integer_parameters,改用 param_grid 替代
0.3版本的新特性
功能特性:
新增了space模块,用于更好地控制每个超参数的数据类型和取值范围、从中采样随机值的分布,并将所有数据类型整合到一个可与新param_grid参数配合使用的Space类中
将continuous_parameters、categorical_parameters和integer_parameters改为param_grid,前者仍可使用但将在下一版本中移除
新增了使用deap库中eaMuCommaLambda算法的选项
内部算法 eaMuPlusLambda 和 eaMuCommaLambda 的 mu 和 lambda_ 参数现在基于初始种群规模计算,而非世代数量
0.2版本的新特性
功能特性:
在优化过程中启用了deap的eaMuPlusLambda算法,现已成为默认流程
为已拟合的GASearchCV添加了logbook和history属性,以便进行拟合后分析
Elitism=False现在实现了轮盘赌选择机制,而非忽略该参数新增了参数keep_top_k用于控制名人堂(hof)中的解决方案数量
API变更:
重构优化算法,改用DEAP包替代自定义实现,这将移除GASearchCV类中的多个方法、属性和变量
参数 encoding_length 已被移除,GASearchCV 类不再需要该参数
将拟合估计器的属性从best_params_重命名为best_params
现在日志会输出适应度函数的deap日志,包括每代的标准差、最大值和最小值
变量 GASearchCV._best_solutions 已被移除,其功能将由 GASearchCV.logbook 和 GASearchCV.history 替代
将默认参数 crossover_probability 从 1 改为 0.8,generations 从 50 改为 40
0.1版本的新特性
功能特性:
GASearchCV用于超参数调优 通过自定义遗传算法为scikit-learn 分类和回归模型服务plot_fitness_evolution()函数用于查看各代平均适应度值