首页 > 解决方案 > TFF:如何拆分每个客户端的数据

问题描述

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

标签: tensorflow-federated

解决方案


如何拆分数据集的选择实际上取决于评估者以及他们想要完成的任务。TFF 中的预处理数据集(来自tff.simulation.datasets)通常只分成两部分,但它们可以以任何所需的方式重新加入和再次分割。

需要考虑的一件事:(至少)有两个维度对于联邦学习来说可能很有趣。

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

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

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


推荐阅读