数据创建与数据管理

news2024/7/4 4:54:44

原文:Dataset Creation and Curation · Introduction to Data-Centric AI

为监督学习创建数据集需要样本以及样本的标签。课程专注于分类任务,但是把这些原理运用到其它监督学习的任务也是可以的。

数据收集

寻找训练数据时的关键问题:

1.训练出的机器学习模型如何应用?(什么时候使用,用在预测什么规模的数据上等)

2.这个模型会在什么关键场景上做预测?

考虑下图,一个训练好的图片分类器正确地预测出左边的图包含一头牛,然而模型却没有正确预测出右边的图片。为什么呢?

原因很可能是训练分类器的时候,用的图片中牛通常跟草地一起出现。所以,训练模型时我们要注意标签与特征之间不同类型的关联。高效的机器学习模型倾向于被表象迷惑,寻找捷径达到目标:它们会竭力利用任何关联从而在数据集上获得高的正确率,尽管这些关联是伪相关(spurious correlations)的,模型不能泛化应用到真实世界中。

选择的偏颇

伪相关的出现归因于选择的偏颇。这是指收集的训练集和模型讲应用到的测试集之间分布的改变,即训练集没能代表真实世界的设定。这种情况也叫分布改变。有一些潜在的原因会导致收集数据时存在选择的偏颇:

--时间/地点偏颇(比如训练集是在过去收集的,将来的数据可能会分布改变,或者从一个国家收集数据训练出的模型应用到全世界)

--人工统计特征偏颇(比如训练集没有囊括少数群体的数据)

--反馈偏颇(比如调查问卷的反馈率,问题有诱导偏颇或者多项选择题的答案)

--可用性偏颇,即收集某些数据是因为方便获得而不是最有代表性的(比如只调查身边朋友的情况)

--长尾偏颇,即某些应用有很多不同的罕见场景,但是收集机制忽略了一些场景(比如自动驾驶汽车走到了错误的道路上逆行)

收集数据时选择偏颇如何解决?

数据集中出现选择偏颇是很难通过建模发现的。其中一种评估模型是否在偏颇的数据上训练的方法是在应用模型的时候,把一个具有代表性的数据集拿出来作为验证集。

--如果数据是在一个时间变化的环境中收集,可以把最近的数据作为验证集。

--如果数据是在多个地点收集,而模型要在一个新的地点应用部署,可以把某些地点的所有数据作为验证集。

---如果数据包含重要而罕见的事件,那么在构建随机的验证集时可以对罕见事件过采样。

需要收集多少数据?

考虑一个应用,你需要训练一个正确率达95%的分类器。你需要收集多少数据呢?值不值得收集更多的数据呢?

一个简单的方法估计这个问题。假设我们已经有一个大小为n的训练数据集D_{train},以及一个固定大小的验证集D_{val}。首先决定一些子集的大小比如:

n_{1}=0.1\cdot n,n_{2}=0.2\cdot n,n_{3}=0.3\cdot n,...,n_{10}=1\cdot n

For j=1,...,10:

        Fori=1,2,...,T:

                  - 从原始数据集随机采样形成大小为n_j的数据集D_{ij}(不重复分层采样)

                  -在D_{ij}上训练出一个模型,在验证集D_{val}上得到正确率a_{ij}

以上过程会产生多对\{(n_j,a_{ij})\}数据的集合。(我想a_{ij}应该是T次的平均正确率?)

利用得到的多对数据的集合,我们可以预测一个模型在比原始数据集D_{train}更大n^{'}>>n的数据集上的正确率a^{'}。猜猜这个预测模型为什么不能用KNN或线形回归?

预测在大小为n^{'}的数据集上的正确率需要外插,也就是说我们需要以模型为中心(model-centric)。我们看一个经验的做法(参考Rosenfeld, J., Rosenfeld, A., and Belinkov, Y. A constructive prediction of the generalization error across scales. International Conference on Learning Representations, 2020.):

log(error)=-a\cdot log(n)+b,我们可以利用最小二乘法,使用数据集    \{(n_j,a_{ij})\}去估计a和b的值。然后就把n^{'}带入这个式子,得到在某个大小的数据集上模型的错误率。

对于小型数据集,没有预定义的验证集,你可以在训练用的子集上使用交叉验证的方法获得对a_{ij}比较稳定的估计。

多名打标签者给数据打标签

文章接下来讲利用众包的方式对数据打标签。

有些打标签者的准确率比别人低,有些打标签者直接抄别的打标签者的答案,而不管对不对。一个办法是在数据中放入一些“质量控制”的样本,这些样本的真正标签是已知的。

Y_{ij}表示第j个打标签者对第i个样本打的标签类别。

然而很多数据集都是没有“质量控制”样本的。给定一个数据集,我们需要估计三个数量:

1.每个样本的统一的标签(best label)

2.每个统一标签的质量评分(condidence)

3.每个打标签者的优劣评分(bad annotator)

三种算法可以估计以上三个数量:Majority Vote + Inter-Annotator Agreement, Dawid-Skene, and CROWDLAB.

Majority Vote + Inter-Annotator Agreement

一个简单的决定统一标签\hat{Y_{i}}的方法是看大多数对样本i打的标签是什么。对这个统一标签的评分可以用以下式子:

其中\jmath _{i}=\{j:Y_{ij}\neq \varnothing \},即对这个样本i打标签的人。

还可以用以下式子评估打标签的人的优劣:

其中\imath_{j} =\{i\in[n]:Y_{ij}\neq\varnothing\}即打标者j打标签的样本。而\imath_{j,+} =\{i\in\imath_{j}:|\jmath_{i}|> 1 \}即对于标注者j,至少有一个其他的标注者也打了同样的标签的样本。

这个方法存在的问题包括:1.多数投票的模棱两可。 2.好的标注者和坏的标注者对估计的影响一样。

Dawid-Skene 

另一种方法(Paun, S., et al. Comparing Bayesian Models of Annotation. Transactions of the Association for Computational Linguistics, 2018.)更好地解决以上问题。其中一个选择是Dawid-Skene算法,在这个算法中会为每一个标注者j建立一个矩阵C_{j}\in\mathbb{R}^{K\times K},矩阵中的项C^{a,b}_{j}指标注者j错误地把属于类a的样本标注为类b的概率。

CROWDLAB (Classifier Refinement Of croWDsourced LABels)

如果把每个样本的特征也考虑进去,一个方法是训练一个模型预测样本的标签。这个模型M可以用比如Major Vote 方法获得的统一标签的样本进行训练。

CROWDLAB 将分类器的概率预测与标注者相结合,以估计统一标签及其质量。CROWDLAB 估计基于这样的直觉:对于由少数标注者打标签的样本,我们应该更多地依赖分类器的预测,而对于由许多标注者打标签的样本,则应较少依赖分类器的预测(对于许多标注者的样本,简单的Major Vote已经提供了良好的置信度度量)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c#学习相关系列之构造函数

目录 一、构造函数的作用 二、构造函数的特征 三、三种构造函数介绍 1、实例构造函数 2、静态构造函数 3、私有构造函数 一、构造函数的作用 构造函数用来创建对象,并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称,它通常用来…

每日一练 | 网络工程师软考真题Day45

阅读以下说明,答复以下【问题1】至【问题4】 【说明】 某公司有1个总部和2个分部,各个部门都有自己的局域网。该公司申请了4个C类IP地址块 202.114.10.0/24~202.114.13.0/24。公司各部门通过帧中继网络进行互联,网络拓扑结构如图1-1所示。 【…

如何在线去除图片上的水印?一分钟教你一键去除

想要去除图片上的水印?不妨试试在线图片水印去除工具!在个人生活或工作中,我们常常需要使用他人的图片,然而图片上的水印却常常成为阻碍,若你正为此烦恼,那么在线图片去水印工具将成为你的救星,…

禁止使用U盘的方法

禁止使用U盘的方法 说到保护电脑数据安全,无论是个人还是企业,这都是一个很重要的问题,大家都会想到设置电脑开机密码,但这还远远达不到我们的要求,有很多种方法可以跳过开机验证,直接进入电脑。所以我们还…

代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球

LeetCode T860 柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 题目思路: 这道题我们只要顺序按照数组判断是否能有钱找零即可,我们定义三个变量来记录每张钞票目前的数量,其中我们知道给10元得找5元,给二十元得找515元,而15元的组合有10元5元和…

算法通过村第十七关-贪心|青铜笔记|贪心也很简单呕

文章目录 前言难以解释的贪心算法贪心问题发放饼干柠檬水找零分发糖果 总结 前言 提示:我像接纳变甜的果实一般迎接此时。 --朱塞培翁加雷蒂《享受》 贪心的思想很难用理论去解释,这里我们通过案例感受下,怎么思考贪心的问题。 难以解释的贪心…

threejs(5)-详解灯光与阴影

一、Gsap动画库基本使用与原理 npm 地址:https://snyk.io/advisor/npm-package/gsap import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import…

设备巡检怎么规范流程?如何做好后勤管理工作?

后勤巡检对于企业和高校来说,就像一台电脑上的安全防护软件,它会定期或不定期地扫描和检查系统,找出存在的问题,例如垃圾文件和病毒风险。巡检的目的是为了检查公司和高校的各项设施、设备和环境等,以发现潜在的环境安…

React之服务端渲染

一、是什么 在SSR中 (opens new window),我们了解到Server-Side Rendering ,简称SSR,意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可…

【C++】类与对象 第一篇(class,this)

目录 什么是类? 类的引入 class 类的两种定义方式: 声明与定义分离 类的访问限定符号 访问限定符​编辑 C中struct和class的区别是什么? 封装 类的作用域 类的实例化 类对象模型 如何计算类对象的大小 this指针 C语言和C实现Stack的对比 C语言实现…

程序员新手村常见问题

到今年已经工作十一个年头了,把这些年自己出现在自己身上或者同事身上的问题记录下来。 手里有锤子,看神马都是钉子 新人程序员很容易手段目的化,战术战略化。学了一门新技术后,不管具体的技术场景,哪里都想拿出来比…

2023年【广东省安全员A证第四批(主要负责人)】考试题及广东省安全员A证第四批(主要负责人)考试内容

题库来源:安全生产模拟考试一点通公众号小程序 广东省安全员A证第四批(主要负责人)考试题是安全生产模拟考试一点通总题库中生成的一套广东省安全员A证第四批(主要负责人)考试内容,安全生产模拟考试一点通…

CNN 网络结构简介

本文通过整理李宏毅老师的机器学习教程的内容,介绍 CNN(卷积神经网络)的网络结构。 CNN 网络结构, 李宏毅 CNN 主要应用在图像识别(image classification, 图像分类)领域。 通常,输入的图片大小相同&am…

【Oracle】[INS-30131]执行安装程序验证所需的初始设置失败。

这里写目录标题 一、问题描述1 报错内容1.1 无法从节点“kotin”检索 exectask 的版本1.2 工作目录"xxx"无法在节点"kotin"上使用 2 相关环境2.1 安装软件2.2 安装系统 3 解决思路分析 二、解决方案1 方案一、 满足验证条件 - 不换系统1.1 第一步、检查文件…

uniapp开发微信小程序的巨坑

1、不能使用v-show 2、关于插槽的巨坑 这里我真的是摸索了好久。 小程序版本: hbuilderx版本: 其他版本不知道会不会出现以下情况。 如果组件中带有插槽,那么使用插槽时有以下要注意: 1、如果子组件通过slot,向外…

MySQL数据xtrabackup物理备份方法

目录 一、物理备份的方式二、xtrabackup物理备份1.安装xtrabackup2.完整备份/恢复流程3.增量备份流程4.差异备份流程5.物理备份总结 一、物理备份的方式 1.完整备份 每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的…

ADC读取数据进入死循环

结论优先:程序并发处理不当引起寄存器标志位被非预期清除,引起进入死循环。 现象:在进行AD读取数据时,有一个等待ADC转换完成的标志位,概率性卡死在while等待ADC数据转换完成。 static err_t gd32_adc_read(struct d…

Pytorch入门实例的分解写法

数据集是受教育年限和收入,如下图 代码如下 import torch import numpy as np import matplotlib.pyplot as plt import pandas as pddata pd.read_csv(./Income.csv)X torch.from_numpy(data.Education.values.reshape(-1,1).astype(np.float32)) Y torch.from_numpy(data…

python 查找波峰和波谷

import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks# 生成示例信号 x np.array([1, 3, 7, 1, 2, 6, 0, 4, 3, 2, 5, 1])# 寻找波峰 peaks, _ find_peaks(x)# 寻找波谷(使用信号的负数形式) valleys, _ find_pe…

炒冷饭、语雀崩、领会员-我最主观的一段文字

目录 什么是语雀 语雀,为每一个人提供优秀的文档和知识库工具。 作为一个程序员来说,我们需要一块位置去存储我们正在学习的技术、过往踩过的坑以及正在做的事情,如果我们需要记录每天的TO-DO List,或者需要按照四象限工作法亦或…