• 统计中的过采样


    统计中的过采样(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个班,人数如下:
    1. 一班 10人
    2. 二班 20人
    3. 三班 30人
    4. 四班 40人
    总人数 = 10 + 20 + 30 + 40 = 100 
    平均每个班多少人 = 100 / 4 = 25 

    像个方法的差异为20% (= (30-25)/25)。 为什么?因为在第一个方法中,大的数据集被过采样了,也就是人数多的班级抽样的人多。解决的方法:把过采样的第一组数据,每个值都除以班级人数,然后归一化(Normalize,使得各个班级出现的可能性之和为 1),然后用pmf (概率质量函数 Probability Mass Function)求平均数。步骤如下:
    1. {10:1, 20:2, 30:3, 40:4} 值除以各个班级人数 => {10:0.1, 20:0.1, 30:0.1, 40:0.1}
    2. 归一化 Normalize, pmf 为{10:25%, 20:25%, 30:25%, 40:25%}
    3. 我们可以发现,第二步得到的 pmf 与第二组数据得到 pmf 是同一个,所以就是10个人的班级,20个人的,30个的,和40个的班级数据相同,所以得到的平均值也就相同
    4. 对于pmf 求平均值比较简单 ∑(key * value) = (10*25% + 20*25% + 30*25% + 40*25%) = 25

    这个例子说明了过采样的数据误差和纠正方法。
  • 相关阅读:
    Ghost博客安装
    PHP变量作用域
    ssh文件传输命令:sz与rz命令
    excel怎么固定第一行
    memcache和redis区别
    Memcache分布式部署方案
    Memcache服务器端参数说明
    Memcache基础教程
    在Windows下安装Memcached
    MySQL体系结构和存储引擎概述
  • 原文地址:https://www.cnblogs.com/bob-dong/p/14248207.html
Copyright © 2020-2023  润新知