清单管理?面向机器学习中的数据集

Posted 半吊子全栈工匠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清单管理?面向机器学习中的数据集相关的知识,希望对你有一定的参考价值。

毋庸置疑的是,数据在机器学习中起着至关重要的作用。每个机器学习模型实例都是使用静态数据集的形式进行训练和评估,这些数据集的特性从根本上影响了模型的行为: 如果一个模型的部署环境与它的训练或评估数据集不匹配,或者这些数据集存在不必要的误差和偏见,那么它就不可能有良好的表现。当机器学习模型应用于高风险领域时,如招聘和金融等领域时,这种不匹配会产生特别严重的后果。即使在其他领域,不匹配也可能导致收益的损失。

虽然数据的可信来源已经在数据库领域得到了广泛的研究,但是在机器学习领域却不是这样的,记录数据集的创建和使用并没有得到足够的重视,目前还没有标准化的机器学习数据集记录流程。

有什么好的方法么?不妨尝试一下清单管理。

1. 关于清单管理

在电子工业中,每个部件,无论多么简单或复杂,都伴随着一份描述其操作特性、测试结果、推荐使用和其他信息的数据表。同样的,我们可以尝试使用清单管理,每个数据集都伴随着一个清单列表,记录其动机、组成、采集、用途等等。数据集的清单列表会增加机器学习的透明度和问责制,减少机器学习模型中不必要的误差和偏见。

用于数据集的清单需要满足两个关键群体的需求: 数据集创建者和数据集消费者。对于数据集的创建者来说,清单可以对创建、分发和维护数据集的过程进行反思,包括任何潜在的假设、风险或危害,以及使用的影响。对于数据集消费者来说,清单可以确保他们拥有所需的信息,以便在使用数据集时做出明智的决策。数据集创建者的透明度对于数据集消费者来说是必要的,这样可以充分了解选择适当的数据集,并避免无意中的误用。

同时,数据集的清单管理促进机器学习结果有更大的重用性,无法访问数据集的开发者可以利用清单中的信息创建具有类似特征的替代数据集。

2. 面向数据集生命周期的清单

数据集生命周期包括: 动机、组成、采集、预处理/清理/标记、使用、分发和维护。面向数据集的生命周期,可以尝试简历清单列表。需要注意的是,清单中的内容并非适用于所有数据集,那些不适用的选项可以跳过。

2.1 数据集的创建动机

创建数据集的理由是创建的动机,自检清单可能包括:

  1. 创建数据集的目的是什么?

  2. 预期面向什么问题?

  3. 有没有什么具体的任务?

  4. 谁创建了数据集,代表哪个实体(实例例如,公司、机构、组织) ?

2.2 数据集的组成

数据集的创建者在数据采集之前明确的清单列表,要了解对数据集的消费者提供所需要的信息,以便在是否使用数据集时做出明智的决定。需要注意的是,如果涉及个人信息,要关注《个人信息保护法》,以及其他的法律法规的限定。

  1. 组成数据集的实例代表什么(例如,文档、照片、人物、国家等) ?

  2. 是否存在多种类型的实例(例如,电影、用户和评级之间的交互,可能是节点和边) ?

  3. 总共有多少个实例 ?

  4. 数据集是否包含所有可能的实例,还是来自更大集合的实例样本(不一定是随机的) ?如果数据集是一个样本,那么较大的集合是什么?样本能否代表较大的集合吗?如果是,要描述如何验证这个代表性。如果不能,要描述原因。

  5. 每个实例由哪些数据组成?原始数据(例如,未处理的文本或图像)还是特征数据呢?

  6. 是否有与每个实例相关联的标签或对象? 

  7. 单个实例中是否缺少信息?如果是,描述这个信息是缺失的(例如,因为它是不可用的)。

  8. 个别实例之间的关系是否明确(例如,社交网络链接等) ?

  9. 是否有推荐的数据拆分(例如,训练、开发/验证、测试) ?如果是,描述这些拆分背后的理由。

  10. 数据集中是否有任何错误、噪音源或冗余? 如果有,描述是哪些。

  11. 数据集是自包含的,还是链接到外部资源(例如,网站或其他数据集) ?如果链接到或依赖于外部资源,a)是否保证这些资源在一段时间内将继续存在并保持不变; b)是否存在完整数据集的官方版本(即,包括数据集创建时存在的外部资源) ; c)是否存在外部数据集资源的使用限制(例如,许可或费用) ?说明所有外部资源和与之相关的任何限制,以及链接。

  12. 数据集是否包含可能被视为机密的数据(例如,受医患保密性保护的数据等) ?

如果数据集与人有关,还可能包括:

  1. 数据集是否识别人群(例如,按年龄、性别) ?如果是,描述如何识别的,并在数据集中提供它们各自分布的描述。

  2. 是否有可能从数据集中直接或间接地(即与其他数据结合)识别个人(即一个或多个自然人) ?

  3. 数据集是否包含任何可能被视为敏感的数据(例如,政治观点或身份或地点的数据; 金融或健康数据; 生物特征或基因数据; 政府身份识别形式,如身份证等) ?

2.3 采集

数据获取过程,可以人们创建具有类似特征的替代数据集,可能包括:

  1. 如何获得与每个实例相关联的数据?这些数据是否可以直接观察到(例如,原始文本、电影评级) ,或者从其他数据(例如,词性标签、年龄或语言)中间接推断/导出?如有关数据是间接从其他数据推断/得出,有关数据是否经过验证/核实?

  2. 采用了哪些机制或程序来收集数据(例如,硬件设备或传感器、人工管理、软件程序、软件 api) ?如何验证这些机制或程序?

  3. 如果数据集是一个较大集合中的样本,那么采样策略是什么(例如,确定性的、具有特定采样概率的概率) ?

  4. 数据收集的时间跨度是多少?这个时间段是否与与实例(例如,最近抓取的旧文章)相关联数据的创建时间段相匹配?

  5. 是否进行过任何道德审查程序 ?

如果数据集与人员有关,还可能包括:

  1. 是直接从有关个人那里收集数据,还是通过第三方或其他来源(例如网站)获取数据?

  2. 是否向有关个人通报了数据收集的情况?如果是,通知是如何提供的,并提供一个链接或其他访问点,或以其他方式通知的本身。 

  3. 有关个人是否同意收集和使用他们的数据?如果是,提供一个链接或其他访问点,或以其他方式复制个人的同意确认。

  4. 如果获得同意,是否向同意的个人提供了今后撤销其同意或用于某些用途的机制?如果是,提供一个链接或其他接入点。

  5. 是否对数据集的潜在影响及其对数据主体的使用进行了分析?如果是,分析包括结果、链接或任何支持文档的其他访问点。

2.4 预处理/清洗/标记

数据集的消费者需要了解处理过程,以确定”原始”数据是否可以与其所选任务兼容的方式进行了处理。清单包括:

  1. 是否对数据进行了预处理/清理/标记(例如,离散化、标记化、词性标记、特征提取、实例删除、缺失值处理) ?

  2. 除了预处理/清理/标记的数据之外,还保存了“原始”数据吗?如果是,提供一个链接或其他接入点的“原始”数据。

  3. 用于预处理/清理/标记数据的软件是否可用?如果可以,提供一个链接或其他接入点。

2.5 用途

数据集的应用边界是什么?通过明确这些任务,数据集的创建者可以帮助数据集消费者做出明智的决定,从而避免潜在的风险或危害。

  1. 数据集是否已用于某些任务? 如果是,简述一下这些任务。

  2. 是否有一个存储链接到所有使用数据集的论文或系统?如果有,提供一个链接或其他接入点。

  3. 数据集可以用于什么(其他)任务?

  4. 数据集的组成或者数据集的收集和预处理/清理/标记的方式是否会影响未来的使用?

  5. 是否有不应该使用数据集的任务? 如果有,说明一下。

2.6 分发

数据集的分发要么在数据集所代表的组织内部分发,要么在外部分发给第三方,清单可能包括:

  1. 数据集是否会分发给数据集所代表的组织之外的第三方(例如,公司、机构、组织) ?

  2. 数据集将如何发布(例如,网站上的下载链接、 API、 GitHub等) ?数据集是否有一个 DOI 数据集?

  3. 数据集什么时候分发?

  4. 数据集是否会根据版权或其他知识产权许可使用条款分发?如果是,描述许可证和/或使用条款,并提供链接或其他接入点。

  5. 是否有任何第三方对与实例相关的数据施加基于 ip 的或其他限制?

  6. 是否对数据集的分发管制或限制?

2.7 维护

不要有人生,没人养。关于数据集的维护计划,清单可能包括:

  1. 谁将支持/托管/维护数据集?

  2. 如何联系数据集的所有者或管理者(例如,电子邮件地址) ?

  3. 是否有勘误表? 如果有,提供链接。

  4. 是否会更新数据集(例如,更正标记错误、添加新实例、删除实例) ?如果,多久更新一次,由谁更新,以及如何通知数据集的消费者 ?

  5. 如果数据集与人有关,是否对保留与实例有关的数据有适用的限制?如果有,这些限制如何执行?

  6. 数据集的旧版本是否会继续得到支持/托管/维护?

  7. 如果其他人希望扩展/增强/构建/贡献数据集,是否有一种机制让他们这样做?这些贡献是否得到验证/核实?

3.数据集清单管理的作用与影响

数据集的清单管理不能提供一个完整的解决方案来减轻不必要的偏见或潜在的风险。创建者可能无法预测数据集的每一种可能的用途,当创建与人相关数据集的时候,可能需要与多领域的专家合作,才能较好地收集数据。

为数据集进行清单管理必然会增加数据集创建者的成本。尽管清单有较多一次性问题的选项,但创建清单的过程总是需要时间,组织的基础设施和工作流程需要修改,同样是开发成本。清单列表和工作流可能会对动态数据集造成问题,频繁更新数据集的清单可能会有较大的成本。

尽管如此,数据集的清单管理促进了数据集创建者和数据集消费者之间更好的沟通,还使数据集创建者能够区分透明度和可靠性。总的来说,对数据集进行清单管理应该是利大于弊的。

【关联阅读】

以上是关于清单管理?面向机器学习中的数据集的主要内容,如果未能解决你的问题,请参考以下文章

清单管理?面向机器学习中的数据集

《机器学习实战》第3章决策树程序清单3-1 计算给定数据集的香农熵calcShannonEnt()运行过程

《机器学习实战》中的程序清单2-1 k近邻算法classify0都做了什么

「机器学习」DVC:面向机器学习项目的开源版本控制系统

机器学习中的数据集切分

机器学习中的数据集切分