一个上下文bandit基准测试包。

coba的Python项目详细描述


Coba公司

一个敏捷的,协作的班迪特上下文研究的基准框架。在

如何进行基准测试?

最后一次问你自己一个基准数据集和算法

  1. 添加新的数据集容易吗?在
  2. 添加新算法容易吗?在
  3. 创建、运行和共享基准是否容易?在

科巴路

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接口,如下所示:

^{pr2}$

创建和共享基准

基准测试是使用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目录,其中包含许多代码演示和基准测试演示。这些例子展示了如何创建基准,根据基准评估学习者并绘制结果。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Camera API如何聚焦图像中多边形的中心?   来自Java的spring Filling邮戳模板   java只能编织本地JAR的方面吗?   javajavax。加密。BadPaddingException:解密错误无法解密加密的公钥   从java运行ansibleplaybook   在Java中,如何从不同的偏移量读取大块的字符串文件?   java Android GridView将无法确定正确的位置   executorservice如何使用自动线程管理在Java中实现生产者/消费者   JavaEJB3.1嵌入式API单元测试EJB+JPA实体   API的java输出自动停止   java Checkmarx缺陷解决方案   java缓存,获取最早的元素   WebSphere8中的JavaEJB问题   两个时区之间的java Jodatime时差   Java 8不兼容类型错误   java TableCellEditor:如果按下该键,则清除原始文本;如果没有输入,则保留值