随机抽样与样本偏差

  |  

摘要: 随机抽样与样本偏差

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


在大数据时代,看起来好像是由于算力提高,抽样的作用弱化了。但是实际上由于我们面对大数据的是数据质量不一,相关性各异的数据,这样实际上抽样的作用反而变大了。

抽样的理念简单来说可以用下图表示

在图中,左边是总体,统计学假设总体遵循一个潜在的未知分布。右侧是抽样数据以及其经验分布。根据左边获得右边,我们需要做抽样。

对于数据科学家而言,并不需要操心左侧的理论本质,而应聚焦于抽样过程手中的数据

但是有一些特殊情况我们是可以关心一下左侧的理论本质的,例如有些数据是由可建模的物理过程生成的。比如二项分布的抛硬币过程等等。那么还是可以通过对总体的理解获得额外的洞察的。

本文我们梳理一下关于抽样的知识点。主要涉及随机抽样,样本偏差,选择偏差


$1 随机抽样和样本偏差

$1-1 偏差

统计偏差是一些系统性的测量误差抽样误差

应该严格区分由随机选取所导致的误差由偏差所导致的误差,分别是在测量和抽样中产生的。

如果观察到结果存在偏差,通常说明我们指定了不正确的统计模型或机器学习模型,或是漏掉了某个重要的变量。

$1-2 随机抽样

随机抽样过程中,以均等的机会从总体的所有可用成员中抽取,得到一个样本。

抽样可以使有放回的,也可以是无放回的。

step1: 定义总体

随机抽样的关键在于如何正确地定义可访问的总体。

step2: 指定抽样过程

  • 简单随机抽样

在不对总体分层的情况下,做随机抽样所得到的样本。

1
2
3
# 简单随机抽样
df_sample = pd.DataFrame.sample(df, n=20)
df_sample = df.sample(n=20)
  • 分层抽样

对总体分层,并在每层中做随机抽样。

采用分层抽样时,可以对不同的层赋予不同的权重,以生成对等的抽样规模。

下面的例子中,假设数据中有一个分类型变量 var0,以该变量 df[“var0”] 为依据分层抽样,各层的抽样个数均为 10

1
2
3
4
5
6
7
# 分层抽样
each_sample_count = 10 # 各层抽样个数
label_unique = np.unique(df['var0']) # 分层依据
df_sample = pd.DataFrame(np.zeros((1, len(df.columns))), columns=df.columns ,dtype=int)
for label in label_unique:
sample = pd.DataFrame.sample(df[df['var0']==label], each_sample_count)
df_sample = pd.concat([df_sample,sample])

$1-3 数据规模与数据质量

一般而言,我们在做估计或是用样本拟合模型的时候,数据质量的影响大于数据规模的影响。数据质量涉及到数据的完整性,格式的一致性,单个数据点的准确性等。对于抽样来说,抽样的代表性也是数据质量的一部分。

有时数据规模越小,结果反而更好。在随机抽样上花费些时间和精力,不仅可以减小偏差,还能让我们更关注于数据探索和数据质量。

例如,在缺失的数据和离群值中,可能包含了一些有用的信息。要从上百万条记录中查找缺失值或评估离群值,成本可能会非常高,但是对于具有数千条记录的样本,这些事情则是完全可行的。此外,如果数据量过大,也无法开展数据绘图和人工检测。


$2 选择偏差

选择偏差是指研究过程中因样本选择的非随机性而导致得到的结论存在偏差。人们喜欢把事物分为典型的几个类别,然后在对事件进行概率估计时,过分强调这种典型类别的重要性,而不顾有关其他潜在可能性的证据选择性偏差的后果是使人们倾向于在实际上是随机的数据序列中“洞察”到某种模式,从而造成系统性的预测偏差。

$2-1 最典型的选择偏差-数据窥探

如果我们指定一个假设,并使用设计良好的实验去验证该假设,就能得到具有高置信度的结论。

但很多时候我们不会先做假设,再去验证假设,而是直接查看可用的数据,识别数据中的模式。但这里有个问题,就是这个识别出的模式是真实的,还是仅仅是数据窥探(广泛地探查数据,直至发现我们感兴趣的现象)的结果

这两件事都是对现象的研究,但是第一件事是先有假设,然后通过实验验证一个假设所得到的现象,第二件事是事先我也不知道假设是什么,就是通过研判可用数据而发现的现象,然后从中发现我感兴趣的现象。这两者之间有差别,需要注意。

下面以一个例子说明两件事的区别

(1) 假设一个人有特异功能,可以做到连续抛出硬币十次均为正面。在这个假设的基础上,我们收集数据,也就是让他做实验,发现这个人果然可以连续十次正面,那我们就倾向于他真的具有特异功能。这是第一件事(指定一个假设,并使用设计良好的实验去验证该假设,就能得到具有高置信度的结论)

(2) 体育场有两万名观众,在主持人指挥下一起抛出十次硬币,其中有若干人做到了十次均为正面。事后我们将这些十次正面的人挑选出来,这时候说这些人有特异功能就不合适了。这是第二件事(事先不知道假设是什么,直接查看可用的数据,识别数据中的模式。但这个模式是有选择偏差的)

虽然第一件事可以避免选择偏差,但是在业务场景中我们所做的工作基本都是第二件事,也就是事先我们也不知道假设是什么,但是依然反复地研究同一份数据集,尽可能多地从中发现某些特性。反复地查看大规模数据集本身就是数据科学中的一个关键价值主张,但是过程中需要注意选择偏差的问题。例如如果在大规模数据集上反复运行不同的模型,并提出不同的问题,我们肯定可以发现一些有意思的现象。但是所发现的结果是否具有意义,有可能仅是一些离群值,就像上面的例子那样。

$2-2 选择偏差的形式

在统计学中,除了数据窥探之外,选择偏差的典型形式还包括非随机抽样主观随机挑选数据选取突出特定统计效应的时间间隔,以及在结果看上去“具有意义”时停止实验

$2-3 选择偏差的例子-趋均值回归

趋均值回归指对同一变量做连续测量时出现的一种现象,即在极端观测值后,会出现更趋向于中心的观测值。对极值给予特殊的关注和意义,会导致某种形式的选择偏差。

例如 “NBA新秀会在第二年表现低迷” 是很多人发现的现象。因为所有新秀在第一年中,总是会有一个人的成绩好于其它所有人,我们给这个最佳新秀(极端观测值)给予了特殊关注。一个新秀的表现取决于技能,也取决于运气,选取最佳新秀时,技能和运气同时发挥了作用,而在下个赛季,技能还是有的,但是运气很多时候就没有了,那么他的成绩就会下滑。由于我们给这个最佳新秀这个极端观测值特殊关注,于是观察到了 NBA 新秀会在第二年表现低迷这个现象。


Share