统计中的过采样(oversampling)可能会导致结果向大数据集偏差(bias),需要进行矫正(unbias)才能得到正确地结果。下面用一个例子说明:
第一个方是从该年级学生中随机选出1/10,问他们自己班级多少人。得到结果如下:
- 1个人说 自己班级有 10个人
- 2个人说 自己班级有 20个人
- 3个人说 自己班级有 30个人
- 4个人说 自己班级有 40个人
于是计算
总人数 = 1*10 + 2*20 + 3*30 + 4*40 = 300
总班级 = 1+2+3+4 = 10
平均每个班多少人 = 总人数 / 总班级数 =
300/10 = 30
第二个方法是去查学籍记录,得知该年级有4个班,人数如下:
- 一班 10人
- 二班 20人
- 三班 30人
- 四班 40人
总人数 = 10 + 20 + 30 + 40 = 100
平均每个班多少人 = 100 / 4 =
25
像个方法的差异为20%
(= (30-25)/25)。 为什么?因为在第一个方法中,大的数据集被过采样了,也就是人数多的班级抽样的人多。解决的方法:把过采样的第一组数据,每个值都除以班级人数,然后归一化(Normalize,使得各个班级出现的可能性之和为
1),然后用pmf (概率质量函数 Probability Mass Function)求平均数。步骤如下:
- {10:1, 20:2, 30:3, 40:4} 值除以各个班级人数 => {10:0.1, 20:0.1, 30:0.1, 40:0.1}
- 归一化 Normalize, pmf 为{10:25%, 20:25%, 30:25%, 40:25%}
- 我们可以发现,第二步得到的 pmf 与第二组数据得到 pmf 是同一个,所以就是10个人的班级,20个人的,30个的,和40个的班级数据相同,所以得到的平均值也就相同
- 对于pmf 求平均值比较简单 ∑(key * value) = (10*25% + 20*25% + 30*25% + 40*25%) = 25
这个例子说明了过采样的数据误差和纠正方法。