跳到主要内容

第 2 周 · 第 3 课 · 45-60 分钟

修复数据集

当一回数据侦探:揪出重复项、错误标签和不均衡的类别,把它们一一修好,让模型能学到公平又准确的规律。

材料
在网页浏览器中打开的这节课 · 纸和笔,或者一个记事应用 · 本课中内置的那个杂乱数据集
本课
进行中

会自动保存在这台设备上

你将能够做到

  • 发现常见的数据问题:重复项、错误标签和不均衡的类别。
  • 说明每个问题会怎样损害模型的准确率或公平性。
  • 修复一个小数据集,让它的样例都正确、类别也均衡。

想一想

一个学生正在教模型分辨苹果和香蕉。他的表里有 18 个苹果,却只有 2 根香蕉,其中一根香蕉被复制了三次,还有一个苹果被误标成了「香蕉」。当模型从这些数据中学习时,可能出什么问题?

上完这节课,你就能说出并修好这三个问题。

做个预测

预测一下:如果一个数据集里有 18 个苹果、只有 2 根香蕉,你觉得模型会把哪个类别学得更好?为什么?

均衡的数据
每个类别的样例数量都公平、大致相等的数据集,这样模型才能把每个类别都学好。
重复项
在数据集中出现不止一次的样例,它可能让模型过度关注那个被重复的个例。
错误标签
被标上了错误答案的样例,比如一根香蕉被标成「苹果」,这会教给模型一条假的规律。
准确率
模型标注正确的样例所占的比例;糟糕的数据通常会把它拉低。
泛化
模型在新样例上表现得有多好;干净、均衡的数据有助于模型泛化。

重复项:同一个样例被算了两次

重复项是指出现不止一次的样例。它看起来人畜无害,但一行重复的数据会让模型把这个单一个例当成许多个,从而给了它过大的分量。

如果同一根香蕉出现了三次,模型可能会过度关注那根特定的香蕉,而不是学会香蕉总体上是什么样。去掉重复项,能让每个真实样例只算一次。

  • 表格里那一行完全相同的香蕉被复制了三次
  • 同一张照片被粘贴进数据集两次

错误标签:错的答案会教出错的规律

错误标签是指被标上了错误类别的样例,比如一个苹果不小心被标成了「香蕉」。因为模型把标签当作事实来信任,一个错误的标签就会教给它一条假的规律。

哪怕只有少数几个错误标签,也可能拉低准确率,因为模型在努力迎合那些本来就不对的答案。修正一个标签,就是把它改成正确的类别(如果你实在判断不出来,就把这个样例删掉)。

  • 一个又圆又红的水果被标成了「香蕉」
  • 动物数据集里,一张猫的照片被标成了「狗」

均衡的数据:给每个类别公平的份额

数据均衡的意思是,每个类别都有公平、大致相等的样例数量。如果一个数据集有 18 个苹果、却只有 2 根香蕉,模型看到的苹果就多得多,可能几乎学不会香蕉长什么样,于是它会过于频繁地猜「苹果」。

让类别变均衡,无论是收集更多香蕉样例,还是把苹果削减一些,都能帮助模型学好每一个类别、并公平地泛化。干净、正确、均衡的数据,是一个准确模型的根基。

  • 10 个苹果配 10 根香蕉,比 18 个苹果配 2 根香蕉均衡得多
  • 主要用某一个类别训练出来的模型,往往会过多地预测那个类别

例题讲解

一步步修复一张杂乱的水果表

  1. 先看这张杂乱的表:18 个苹果、2 根香蕉,其中一行香蕉被复制了三次,还有一个苹果被标成了「香蕉」。
  2. 找出重复项:那根一模一样的香蕉出现了三次,删掉两份,保留一份。
  3. 修正错误标签:那个被标成「香蕉」的又圆又红的水果其实是苹果,把它的标签改成「苹果」。
  4. 检查均衡:现在两个类别悬殊得厉害,于是补充更多真实的香蕉样例,直到苹果和香蕉大致相当。
  5. 结果:一个干净、标注正确、类别均衡的数据集,模型可以从中学到公平的规律。

要点:在模型学习之前,通过删除重复项、修正错误标签和让类别均衡来修复数据集。

均衡前后对比

一张条形图,按样例个数显示每个类别有多少样例。修复前:苹果 18,香蕉 2,非常不均衡。修复后:苹果 10,香蕉 10,已经均衡。让类别均衡,能给模型一个公平的机会去学会两种水果,而不是过多地预测苹果。

三个问题及其修复办法
问题如何修复为什么重要
重复项删掉多余的副本单个个例分量过大
错误标签把它改成正确的类别错误的答案会教出假的规律
类别不均衡给少的类别补样例,或削减多的那个模型把稀少的类别学得不够

一张表,把每个数据问题与它的修复办法和重要性对应起来。重复项:某个样例被重复;修复办法是删掉多余的副本;之所以重要,是因为它让单个个例分量过大。错误标签:某个样例的答案是错的;修复办法是把标签改正;之所以重要,是因为它教出一条假的规律。类别不均衡:某个类别的样例远多于另一个;修复办法是给较少的类别补充样例,或削减较多的那个;之所以重要,是因为模型会把稀少的那个类别学得不够。

活动

修复有缺陷的数据集

修好一个杂乱的太空水果数据集,删除重复项、改正错误标签、改善均衡程度,然后重新运行模型,对比修复前后的结果。

  1. 检查这份有问题的数据集。删掉重复的行,改掉看起来不对的标签。
  2. 多加一些数量偏少那一类的样本,把比例调平衡。
  3. 测试用的水果始终隐藏且不变。检查并重新运行模型,比较修复前后的差别。

数据集大小

18

可以吃 / 不能吃 的数量

14 / 4

重复的行

4

错误的标签

?

重复的行会自动检测出来(特征完全相同)。错误的标签在你点击检查之前一直隐藏:先自己调查。那 8 颗测试水果是留出来的,在这里永远不会被改动。

  • 晨曦莓

    与 晨曦莓(副本) 重复
    颜色
    深红
    形状
    圆形
    质地
    光滑
    生长在
    林冠
    种子数
    6
    甜度
    8
    发光等级
    0
    大小
    10 厘米
  • 沙李

    颜色
    琥珀
    形状
    椭圆形
    质地
    凹凸
    生长在
    沙丘
    种子数
    4
    甜度
    7
    发光等级
    1
    大小
    8 厘米
  • 潮汐果

    颜色
    青绿
    形状
    圆形
    质地
    毛茸茸
    生长在
    礁石
    种子数
    8
    甜度
    9
    发光等级
    0
    大小
    12 厘米
  • 余烬梨

    颜色
    深红
    形状
    椭圆形
    质地
    光滑
    生长在
    林冠
    种子数
    5
    甜度
    6
    发光等级
    2
    大小
    9 厘米
  • 沙丘滴

    颜色
    琥珀
    形状
    圆形
    质地
    凹凸
    生长在
    沙丘
    种子数
    3
    甜度
    7
    发光等级
    1
    大小
    7 厘米
  • 林冠无花果

    颜色
    青绿
    形状
    椭圆形
    质地
    毛茸茸
    生长在
    林冠
    种子数
    7
    甜度
    8
    发光等级
    0
    大小
    11 厘米
  • 红葫芦

    颜色
    深红
    形状
    圆形
    质地
    光滑
    生长在
    沙丘
    种子数
    6
    甜度
    5
    发光等级
    2
    大小
    10 厘米
  • 礁李

    颜色
    琥珀
    形状
    椭圆形
    质地
    毛茸茸
    生长在
    礁石
    种子数
    4
    甜度
    9
    发光等级
    1
    大小
    8 厘米
  • 绿荚

    颜色
    青绿
    形状
    圆形
    质地
    凹凸
    生长在
    林冠
    种子数
    9
    甜度
    6
    发光等级
    0
    大小
    13 厘米
  • 琥珀芽

    颜色
    琥珀
    形状
    圆形
    质地
    毛茸茸
    生长在
    林冠
    种子数
    2
    甜度
    7
    发光等级
    2
    大小
    6 厘米
  • 星焰

    与 星焰(副本) 重复
    颜色
    紫罗兰
    形状
    星形
    质地
    带刺
    生长在
    陨石坑
    种子数
    2
    甜度
    3
    发光等级
    4
    大小
    5 厘米
  • 光螺

    颜色
    天蓝
    形状
    螺旋形
    质地
    凹凸
    生长在
    洞窟
    种子数
    1
    甜度
    2
    发光等级
    5
    大小
    4 厘米
  • 晨曦莓(副本)

    与 晨曦莓 重复
    颜色
    深红
    形状
    圆形
    质地
    光滑
    生长在
    林冠
    种子数
    6
    甜度
    8
    发光等级
    0
    大小
    10 厘米
  • 星焰(副本)

    与 星焰 重复
    颜色
    紫罗兰
    形状
    星形
    质地
    带刺
    生长在
    陨石坑
    种子数
    2
    甜度
    3
    发光等级
    4
    大小
    5 厘米
  • 虚空星

    颜色
    紫罗兰
    形状
    螺旋形
    质地
    光滑
    生长在
    陨石坑
    种子数
    0
    甜度
    3
    发光等级
    5
    大小
    5 厘米
  • 荆星

    颜色
    天蓝
    形状
    星形
    质地
    带刺
    生长在
    洞窟
    种子数
    3
    甜度
    2
    发光等级
    2
    大小
    5 厘米
  • 洞窟辉

    颜色
    天蓝
    形状
    星形
    质地
    凹凸
    生长在
    洞窟
    种子数
    2
    甜度
    1
    发光等级
    4
    大小
    7 厘米
  • 甜礁

    颜色
    青绿
    形状
    椭圆形
    质地
    光滑
    生长在
    礁石
    种子数
    6
    甜度
    9
    发光等级
    0
    大小
    10 厘米

添加样本来改善平衡

这些额外的、标签正确的水果可以加进来。多加一些稀少那一类,能帮模型学会它。

  • 火花星 — 不能吃。 一颗 6 厘米的紫罗兰星形水果,表皮光滑,有 1 颗种子,甜度 4/10,发光等级 3/5,生长在陨石坑。
  • 螺刺 — 不能吃。 一颗 4 厘米的天蓝螺旋形水果,表皮带刺,有 2 颗种子,甜度 2/10,发光等级 1/5,生长在洞窟。
  • 亮螺 — 不能吃。 一颗 5 厘米的天蓝螺旋形水果,表皮凹凸,有 1 颗种子,甜度 1/10,发光等级 4/5,生长在洞窟。
  • 荆焰 — 不能吃。 一颗 6 厘米的紫罗兰星形水果,表皮带刺,有 3 颗种子,甜度 3/10,发光等级 2/5,生长在陨石坑。
  • 暮星 — 不能吃。 一颗 5 厘米的紫罗兰星形水果,表皮毛茸茸,有 0 颗种子,甜度 4/10,发光等级 3/5,生长在陨石坑。
  • 夜螺 — 不能吃。 一颗 4 厘米的天蓝螺旋形水果,表皮带刺,有 2 颗种子,甜度 2/10,发光等级 2/5,生长在洞窟。
  • 草原无花果 — 可以吃。 一颗 11 厘米的青绿椭圆形水果,表皮毛茸茸,有 7 颗种子,甜度 8/10,发光等级 1/5,生长在林冠。
  • 阳李 — 可以吃。 一颗 9 厘米的琥珀椭圆形水果,表皮光滑,有 4 颗种子,甜度 8/10,发光等级 2/5,生长在沙丘。

这条虚构的课堂规则:如果一颗太空水果发光很强(发光等级 3 或以上),或者带刺,那它就不能吃。否则就可以吃。「标签错误」指的是标签和这条规则不符,不是真实世界的事实。

检查你的理解

回答这些题,检验你能否发现并修复数据问题。

  1. Question 1. 在训练模型之前,下面哪些是你应该修好的问题?选出所有符合的。

    把符合的都选上。

  2. Question 2. 判断这句话是对还是错。

    一个有 18 个苹果、只有 2 根香蕉的数据集是很均衡的。

  3. Question 3. 把修复数据集的各个步骤排成合理的顺序。

    1. 1.查看数据集,找出其中的问题
    2. 2.删除重复的行,并改正错误的标签
    3. 3.让各个类别变得均衡
    4. 4.重新训练模型,并检查它的准确率

已回答 0 / 3

自己动手试试

先弄坏,再修好

拿一个干净的小数据集,故意把这三个问题一一加进去,然后再把它们修好,并描述效果。

  1. 从一个干净、均衡、只有两个类别的小数据集开始。
  2. 加一行重复数据,把一个标签改成错的,再删掉一些样例,让其中一个类别变得大得多。
  3. 现在把这三个问题都修好,并针对每一个说明这次修复应当如何改善模型的准确率或公平性。

做到这样就算成功

  • 三个问题都被故意加入并清楚地标了出来。
  • 三个问题都被修复了。
  • 每一次修复都给出了与准确率或公平性相关的理由。

反思

输入时会保存在这台设备上

请不要写私人信息。你的回答只保存在这个浏览器里,不会发送到任何地方。

小结

重复项、错误标签和类别不均衡都会损害模型;修复它们能得到干净、均衡的数据,从而提高准确率,并帮助模型公平地泛化。

  • 删除重复项,别让任何一个样例分量过大。
  • 改正错误标签,别让模型学到假的规律。
  • 让类别均衡,好让模型学会每一类并公平地泛化。

七至八年级延伸内容

当你没法收集更多数据时

通过补充稀少类别的样例来实现均衡是最理想的,但有时你没那么容易收集到更多。另一个办法是把较多的那个类别削减到数量相当,尽管这意味着要丢掉一些真实的样例。

针对那张杂乱的水果表,说说你会选哪种做法(补充更多香蕉,还是删掉一些苹果),并解释每种选择在模型的准确率和公平性上各自做了什么取舍。

完成这一课

  • Attempt the knowledge check(未完成)
  • Save a reflection (recommended)(未完成)

先做一下知识检查,才能完成这一课。