一个上下文bandit基准测试包。
coba的Python项目详细描述
Coba公司
一个敏捷的,协作的班迪特上下文研究的基准框架。在
如何进行基准测试?
最后一次问你自己一个基准数据集和算法
- 添加新的数据集容易吗?在
- 添加新算法容易吗?在
- 创建、运行和共享基准是否容易?在
科巴路
Coba是从头开始建造的,目的是做所有这些和更多的事情。在
科巴是。。。在
- 。。。light-weight(开始时没有依赖项)
- 。。。distributed(它的构建是为了通过缓存、api密钥支持、校验和等跨web工作)
- 。。。verbose(它有可定制的、分层的日志记录,用于对日志运行作业进行有意义的、可读的反馈)
- 。。。robust(基准测试将每个操作写入文件,以便在系统崩溃时始终可以恢复这些操作)
- 。。。just-in-time(在需要之前不加载任何资源,它们会立即释放以保持内存较小)
- 。。。一只鸭子?(coba只依赖于duck类型,因此不需要继承来实现我们的接口)
但不要相信我们的话。我们鼓励您亲自查看代码,稍后将提供更多文档。在
添加新数据集
从分类数据集创建模拟
分类数据集是快速评估CB算法的一种简单方法。只要数据集是CSV格式,就可以很容易地用ClassificationSimulation.from_csv
将其转换为上下文bandit模拟。本地文件和本地文件都可以通过此方法工作。当通过http请求时,Coba甚至允许您在本地缓存文件的一个版本,以便以后快速重新运行。在
从生成模型创建模拟
某些域具有定义良好的模型,代理必须在这些模型中做出决策。要从这些域中添加数据集,可以使用LambdaSimulation
来定义随机函数,这些函数根据定义的分布返回上下文、操作和奖励。在
从头开始创建自定义仿真
如果需要比上面提供的更多的定制,那么可以创建一个新的模拟类。实现这样的类不需要继承或复杂的注册。只需满足Coba的Simulation
接口,如下所示(包含Interaction
供参考):
classSimulation:@propertydefinteractions(self)->Sequence[Interaction]:"""The sequence of interactions in a simulation."""...defrewards(self,choices:Sequence[Tuple[Key,int]])->Sequence[float]:"""The observed rewards for interactions (identified by key) and their selected action indexes."""...classInteraction:@propertydefcontext(self)->Hashable:"""The interaction's context description."""...@propertydefactions(self)->Sequence[Hashable]:"""The interactions's available actions."""...@propertydefkey(self)->Key:"""A unique key identifying the interaction."""...
添加新算法
许多算法已经实现开箱即用,包括epsilon greedy、vowpabbit bagging、VowpWabbit softmax、vowpabbit cover、vowpabbit RND和上置信度边界。添加算法只需满足Learner
接口,如下所示:
创建和共享基准
基准测试是使用json配置文件创建的。在配置文件中,定义要包含在基准中的数据集、数据集的位置、如何将数据集拆分为批、使用什么随机种子以及数据集是否应随机化。通过将所有这些特性放入一个配置文件中,创建、修改和共享基准测试只需编辑此文件并通过电子邮件发送给其他研究人员。在
{"templates":{"shuffled_openml_classification":{"seed":777,"type":"classification","from":{"format":"openml","id":"$id"}}},"batches":{"count":51},"ignore_first":true,"simulations":[{"template":"shuffled_openml_classification","$id":3},{"template":"shuffled_openml_classification","$id":6},{"template":"shuffled_openml_classification","$id":8}]}
示例
存储库中包含一个examples目录,其中包含许多代码演示和基准测试演示。这些例子展示了如何创建基准,根据基准评估学习者并绘制结果。在
- 项目
标签: