TFF:如何拆分每个客户端的数据



为什么在联合学习任务中,我们不拆分数据集进行训练、测试和验证,我们只进行训练和测试。

如何分割数据集的选择实际上取决于评估者以及他们试图实现的目标。TFF中经过预处理的数据集(来自tff.simulation.datasets(通常只被一分为二,但它们可以以任何需要的方式重新加入并再次拆分。

需要考虑的一件事是:(至少(有两个维度可能对联合学习感兴趣。

  1. 示例:将单个客户端的数据集拆分为训练、测试和验证。这可能被视为最类似于集中培训制度。大多数TFF数据集都使用此功能
  2. users:在联邦制度中,将用户划分为train、test和heldout用户可能特别有趣。这可能能够回答全局模型在多大程度上推广到看不见的用户,但可能会受到单个数据集和拆分的非iid性的严重影响。这在一些TFF提供的数据集中使用

此外,这两者都可以是基于时间的(如果有时间的概念(,例如将每个客户端数据集拆分为";前一天";(列车(和";第二天";(测试(。或者,正如跨设备FL在实践中经常出现的情况一样,按照一天中的时间划分(用户可以在晚上进行训练,可能与中午不同(,Eichner 2019使用这种设置进行了一些实验。

注意tff.simulation.datasets.stackoverflow.load_data确实有三个拆分,分别命名为trainheld_outtest。请仔细阅读文档,因为它使用了上述两种类型的拆分。

最新更新