采样与重采样(sampling and resampling)
/ SAM-pling and ree-SAM-pling /
采样,就是挑选哪些例子能进入你的数据集——好比民意调查员挑出几千个人来代表整个国家。挑得好,一个小样本就能忠实地映照出更大的总体;挑得草率(比如只打固定电话),你就把一种偏差烤进了数据,日后再高明的建模也无法把它去掉。重采样则是与之相关的做法:从你已有的数据里抽出新的选择,用以重新平衡数据或衡量不确定性。
好的采样力求有代表性。随机采样让每个人机会均等;分层采样则刻意按比例保留重要的子群(这样一份全国调查就能保住它的年龄结构)。重采样技术为特定任务而复用已有数据:过采样(oversampling)对罕见类进行复制或生成更多,欠采样(undersampling)则丢掉一些过于常见的类(两者都用来对抗类别不平衡),而自助法(bootstrap)则反复地有放回随机抽样,用以估计「若当初采到的数据略有不同,结果会抖动多少」。
为何重要:每个模型都默默假设它的训练样本反映了它将被使用的那个世界;一旦这个假设破裂,模型就会在它从未见过的那些情形上自信地犯错。通过重采样来重新平衡,能帮模型注意到一个罕见类,但它是一把双刃剑——欠采样会扔掉真实数据,而过采样则可能让模型把那些被复制的罕见样本背了下来。这一切都没有增添真正的新信息;它只是把你已经拥有的东西重新分配了一下。
1936年,一家杂志根据数百万份回函预测了一场美国大选——但它只寄给了自己那些富裕的订户和有车的人,于是这个庞大的样本严重偏斜,把结果预测错了。而一位只用了几千名精心平衡受访者的民调人却预测对了。规模,败给了代表性。
数百万份有偏的回函,输给了几千份有代表性的回答。
为应对类别不平衡而重采样时,只对训练集动手——绝不要碰测试集。先过采样、后划分,会让同一个例子的副本落到划分的两侧,这是数据泄露的典型教科书案例。