深度学习:从基础到实践(全2册)
上QQ阅读APP看书,第一时间看更新

2.5 抽样与放回

在机器学习中,我们经常通过随机选择现有数据集中的一些元素来构建新的数据集。我们将在2.6节中进行这种操作,并寻找样本集的均值。

让我们考虑两种不同的方法来通过现有数据集生成新数据集,其中关键的问题是:从数据集中选择一个元素时,我们是将它从数据集中移除,还是仅复制这个元素并使用它?

打个比方,假设我们去图书馆找几本短篇书,为了保持趣味性,我们把它们放在桌子上堆成一小堆,之后从中随机挑选。

一种方法是从书堆中随机选择一本书,之后把它带回并放到桌子上,然后再回到书堆进行挑选,这样我们就可以挑选出一堆随机选择的书了。注意,因为我们已经把挑选出的每一本书都放在桌子上,所以不可能选到同一本书两次(我们可以选择已经选过的书的另一印本,但已经不是同一本书了)。

另一种方法是从书堆里选择一本书,并将整本书复印(只是做一个比喻,我们暂时忽略法律和道德问题),然后把书放回它原来的地方,并把影印本放在桌子上。然后我们返回书堆,再一次随机拿起一本书、复印、归还之后把它放入书堆里,一遍又一遍,这样我们就拥有一堆复印的书了。注意,我们将在复印之后把每本书还回书堆,这种情况下,是有可能选到同一本书并把它复制两次的。

在机器学习中,构建新数据集时,我们可以遵循这两种方法中的任何一种。每从训练集中选择一个数据,我们可以从数据集中删除它(这样我们就不能再选择它了),也可以只是复制它并将它返回到数据集(这样我们就可以再次选择它)。

上述两种方法所得到的结果是全然不同的类型,无论是从明显的表面还是从不那么明显的统计数据上都可以看得出。一些机器学习算法被设计成只适用于这两种方法中的一种。那么现在就让我们更仔细地看一看这些备选方案。我们想要创建一个选择列表,而这个列表是从一个初始对象中选择出来的。

2.5.1 有放回抽样

首先,让我们看一下对元素进行复制的方法,在这里,初始状态是保持原样的,如图2.13所示。我们把这种方法称为有放回抽样(或称为SWR),因为我们可以认为是将元素取出,为其制作一个副本,用副本替换原来的元素。

有放回抽样最明显的一个含义是:我们可能会多次使用同一个元素。在极端情况下,整个新建立的数据集都是一个元素的多个副本。

第二个含义是,我们可以创建一个比原始数据小的、大小相同的抑或更大的新数据集。由于原始数据集并不发生改变,因此只要我们愿意,就可以不断地选择元素。

图2.13 有放回抽样。每从池中移除一个元素,都会将它的一个副本放入选择区域中,然后再把原来的元素放回池中。通过这种技术,我们可以建立选择列表,但是原始的池是不会改变的,所以我们就有机会多次选择一个相同的项。在这个例子中,我们两次选择了元素C

这一过程的统计学含义是:选择是相互独立的。没有任何过去的背景,选择完全不受之前的选择的影响,也不会影响未来的选择。

要明白这一点,让我们看看图2.13所示池中的8个元素,每个元素被选中的概率都是1/8。可以看到,我们首先选择的是元素C。

现在新数据集里有了元素C,但是在选择之后,我们会把这个元素“重置”回原来的数据集中,再次查看原始数据集时,8个元素仍然全部存在,如果再次进行选择,每个元素仍有1/8的概率被选中。

这种采样的一个日常例子是:在库存充足的咖啡店里点一杯咖啡,比如我们点了一杯香草拿铁之后,香草拿铁这个选项也不会从菜单上被删除,还可供其他顾客选择。

2.5.2 无放回抽样

另一种通过随机选择去构建新数据集的方法是:从原始数据集中删除所选择的元素,并将其放到新数据集中。因为没有进行复制,所以原始数据集丢失了一个元素。这种方法称为无放回抽样(又称为SWOR),如图2.14所示。

图2.14 无放回抽样。每从池中移除一个元素,我们就会将其放入所选择的区域。因为没有把它重新放回池中,所以无法再次选择这一元素

让我们比较一下SWR与SWOR的含义。首先,在SWOR中,对任何元素的选择都不能超过一次,因为我们从原始数据集中删除了它。其次,在SWOR中,新数据集可以比原来的更小,或者是大小相同,但是不能变得更大。最后,在SWOR中,选择是相互依赖的。图2.14中,每个元素第一次被选中的概率为1/8。但是当选择元素C后,我们没有用副本替换它,所以如果回到原始数据集,就只剩下7个元素可用,即每个元素有1/7的概率被选中。选择这些元素中的任何一个的概率都增加了,因为可供选择的元素变少了。

如果再选择另一个元素,剩下的每个元素就都有1/6的概率被选中,以此类推。在选择了7个元素后,最后一个元素被选中的概率就有100%。

无放回抽样的一个常见示例是玩扑克牌游戏,每发一张牌,它就会从整副牌中“消失”,在重新收回牌或是洗牌之前是无法再发出的。

2.5.3 做选择

假设我们想通过从原始数据集中选择来构建一个比原始数据集小的新数据集,可以采用有放回抽样和无放回抽样两种方式。

与无放回抽样相比,有放回抽样可以产生更多可能的新数据集,让我们来看看这一点。假设原始数据集中只有3个对象(A、B和C),而我们需要一个包含两个对象的新数据集。采用无放回抽样只能得到3种可能的新数据集:(A,B)、(A,C)和(B,C);而采用有放回抽样,不仅可以得到这3个,还可以得到(A,A)、(B,B)和(C,C)。

一般来说,有放回抽样总是可以为我们提供一组有更多可能性的新数据集。还有很多关于统计特性的有趣差异,但是我们不展开讨论。

要记住的重要一点是:“是否放回”会对构建新数据集产生影响。