分层抽样

Stratified sampling

1. 基本概念

统计学理论中,分层抽样针对的是对一个总体(population)进行抽样的方法。尤其适用于当总体内部,子总体(subpopulations)间差异较大时。每一个 subpopulation,也称为层(stratum)。

LL 表示层的数量,其中 分别指的是层 h 的样本数量,采样的数量,采样得到的样本均值和标准差;


分层抽样方法,sampleByKey和sampleByKeyExact,可以在键-值对的RDD上精确执行。
对于分层抽样,可以将键视为一个标签,而值作为一个特定的属性。
例如,密钥可以是男性或女性,也可以是文档id,而相应的值可以是人口中人口的年龄列表,也可以是文档中的单词列表。
sampleByKey方法会抛硬币来决定一个观察是否被取样,因此需要一个传递数据,并提供一个预期的样本大小。
sampleByKeyExact 需要比在sampleByKey中使用的每层简单随机抽样所需的资源多得多,但它将提供精确的采样大小和99.99%的置信度。

 

 

 

// an RDD[(K, V)] of any key value pairs
val data = sc.parallelize(
  Seq((1, 'a'), (1, 'b'), (2, 'c'), (2, 'd'), (2, 'e'), (3, 'f')))

// specify the exact fraction desired from each key
val fractions = Map(1 -> 0.1, 2 -> 0.6, 3 -> 0.3)

// Get an approximate sample from each stratum
val approxSample = data.sampleByKey(withReplacement = false, fractions = fractions)
// Get an exact sample from each stratum
val exactSample = data.sampleByKeyExact(withReplacement = false, fractions = fractions)

 

posted @ 2018-07-11 15:08  一直爬行的蜗牛牛  阅读(1787)  评论(0编辑  收藏  举报