概率抽样方法简介

作者:陆亚男

导语: 抽样作为统计学中非常常用的一种方法,在当前数据化运营的大背景下,被有效得应用在样本不均衡,快速的概念验证等方面,抽样包含概率抽样和非概率抽,本文主要介绍不同的概率抽样方法的核心思想,优缺点以及相关的应用场景。

概率抽样也称为随机抽样,指在总体中排除人的主观因素,给予每一个体一定的抽取机会的抽样。 其特点为,抽取样本具有一定的代表性,可以从调查结果推断总体;概率抽样方法主要分为以下几个类别:

1.简单随机抽样 (Simple sampling)

简单随机抽样也称为单纯随机抽样、纯随机抽样、SRS抽样, 是指从总体N个单位中任意抽取n个单位作为样本,使每个可能的样本被抽中的概率相等的一种抽样方式

(1)场景一:

数据源:例如我现在有一个包含qq的号码包数据集,数据量100万,需要随机抽样1万去做测试

数据源示例:

由于qq号本身的所有数据都是有差异的,不存在周期性的特性,并且是数值型的数据,所以可以采取取模的方式来进行随机抽样,用sql实现的简单示例如下:

select *
from table_a
where mod(qqno,3)=1
limit 10000

(2)场景二:

数据源:例如我现在有一个包含vopenid的号码包数据集,数据量100万,需要随机抽样1万做测试

数据源示例:

核心思想 :由于vopenid不属于数值型数据,我们可以采取为当前的数据源随机生成一个随机序列,再根据序列随机选择指定量级的数据的方式来实现随机抽样

代码实现方式:

方法1:

select  *  from table_a  order by rand() limit 10000;

方法2:

select  * 
from (        
 select table_a.*, cast(rand() * 100000 as int) as rankid
 from  table_a            
 ) table_b
order by rankid limit 10000

rand() 函数产生一个0到1的随机数字,上述两种方式都是使用rand()函数和limit关键字来获取样例数据,只是在实现细节上略有差异

方法3:

SELECT * FROM table_a DISTRIBUTE BY RAND() SORT BY RAND()  LIMIT 10000;

使用DISTRIBUTE和SORT关键字来保证数据是随机分散到mapper和reduce的,order by rand()语句可以获取同样的效果,但是性能没有那么高

简单随机抽样的特点是:每个样本单位被抽中的概率相等,样本的每个单位完全独立,彼此间无一定的关联性和排斥性

2. 系统抽样 (Systematic random sampling)

也称等距抽样。将总体中的所有单位按一定顺序排列,在规定的范围内随机地抽取一个单位作为初始单位,然后按事先规定好的规则确定其他样本单位。先从数字1到k之间随机抽取一个数字r作为初始单位,以后依次取r+k、r+2k……等单位。这种方法操作简便,可提高估计的精度,系统抽样按照具体的实现方式分为以下两种:

(1)无序系统抽样:对总体采用按无关标志的等距抽样,即总体单位的排列顺序和所要研究的标志是无关的,是一种更好的纯随机抽样方式,如现在要调查玩家的充值水平,按照玩家的qq账号的数字串大小进行排列(玩家的qq账号本身与充值水平不存在直接的关系)

数据源:例如现在有个包含vopenid,等级,充值金额三个属性的100万号码包,需要选出1万个测试用户

数据源示例:

代码实现方式:用开窗函数对数据源进行排序,然后用取模这种比较简洁的方式来选取对应的数据,由于要在100万数据中选择1万数据,则数据选择间隔为100,假设从第一个位置开始选取

select qq,level,money
from 
(
select  qq,level,money,row_number()over(order by qq) rn
from table_a
)table_b
where mod(rn,100)=0

(2)有序系统抽样:对总体采用按照有关标志的等距抽样,即总体单位的排列顺序与所要研究的标志有直接的关系,它能使标志值高低不同的单位,均有可能选入样本,从而提高样本的代表性,减小抽样误差,如现在要调查玩家的充值水平,按照玩家的充值金额大小进行排序(玩家的充值金额实际就代表了玩家的充值水平)

数据源同(1)所示

代码的是实现方式 与无序排序的代码基本一致,只是我们是按照充值金额去排序

select qq,level,money
from 
(
select  qq,level,money,row_number()over(order by money) rn
from table_a
)table_b
where mod(rn,100)=0

系统抽样的特点:抽出的单位在总体中分布均匀,且抽出的样本可少于随机抽样,最大的优势在于 经济性

3.分层抽样 (Stratified random sampling)

分层抽样是将抽样单位按某种特征或者某种规划划分为不同的层,然后从不同的层中独立、随机的抽取样本。将个层的样本结合起来,对总体的目标量估计,样本的结构与总体的结构比较相近,从而提高估计的精度,例如现在要调查不同等级的玩家的战力分布情况,数据源包含玩家的等级,vopenid,战力,则需要按照等级将玩家划分到不同的层级中,再从不同层选取指定数量的用户进行分析

数据源:包含 vopenid,level,powerpoint三个关键信息,总数据量100万,需要抽取划分的每个年龄段2000个用户

数据源示例:

代码的实现方式:

 select agemod,vopenid,age,powerpoint
(
select * from 
( 
select age/10 agemod,vopenid,age,powerpoint,cast(rand()*2000 as double) rank_num 
from table_a 
)table_b
distribute by agemod sort by agemod,rank_num desc
)table_c 
where row_number(agemod)<=2000

分层抽样的优缺点:样本的代表性比较好,抽样误差比较小,缺点是抽样手续较简单随机抽样要繁杂

4. 整群抽样 (Cluster sampling)

整群抽样又称聚类抽样,是将总体各单位归并成若干个互不交叉、互不重复的集合,称之为群,然后以群为抽样单位进行单纯随机抽样抽取个体的一种抽样方式。

整群抽样与分层抽样存在直接的差异:(1)分层抽样要求各层之间的差异很大,层内个体或者单元差异小,整群抽样是要求群与群之间的差异小,群体之间的单元差异大;(2)分层抽样的样本是从每个层内抽取若干单元或者个体构成的,而整群抽样则要么是整群抽取,要不整群不被抽取

图示说明如下(蓝色圆形,紫色菱形,蓝色圆柱形代表不同类别的用户):

整群抽样

分层抽样

5.多级抽样 (Multistage sampling)

多级抽样又叫多阶段抽样,是梳理统计的一种。在复杂的,大规模的市场调查中,调查单位不是一次性直接抽取的,而是采取两阶段或者多阶段的方法,先抽取大的单位,在大单位中再选取小的单位,然后再逐层选取的方式,这种抽样方式称为多级抽样

在多级抽样的各个阶段,均可以采取简单随机抽样或者分层抽样,应用场景举例说明,现在需要完成全国大学生人口抽样,可以分为几个阶段进行,首先以省为抽样框,抽取一部分,然后在抽取的省中,再以市为单位进行抽样,抽出若干,然后逐层递进

多级抽样所面临的都是个体数目十分庞大而且分布区域又十分广泛的总体

6.特殊采样方法补充:

在某些分类场景下,如对回流用户和流失用户做逻辑回归时,回流用户中的样本数量极少,而流失用户中样本数量极多,就形成了类不平衡(class-imbalance)的问题

解决类不平衡,可以采用以下两种方案:

(1)过采样:对训练集中样本数量较少的类别(少数类)进行过采样,合成新的样本来环节类不平衡

(2)欠采样:对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡的问题

在1~5中介绍的方法都可以用来实现欠采样,而对于过采样,可以采用SMOTE(Synthetic Minority Oversampling Technique)的方法来处理,即合成少数类过采样技术。它是基于随机过采样方法的一种改进方法,基本思想是对少数类的样本进行分析并根据少数类样本人工合成新样本添加到数据集中,合成的策略是对每个少数样本a,从它的最近邻中随机选择一个样本b,然后在a、b的连线上随机选取一个点作为新合成的少数类样本,具体的算法步骤如下:

(1)对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到k近邻 (2)对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为xn。 (3)对于每一个随机选出的近邻xn,分别与原样本按照如下的公式构建新的样本。

由于SMOTE算法本身的局限性,存在边缘化和盲目性等问题,很多人纷纷提出了新的改进办法,在一定程度上改进了算法的性能,但还存在许多需要解决的问题,这里只是抛砖引玉,就不再赘述

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AILearning

【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计 - 无监督学习 - 用户指南 | ApacheCN

2.6. 协方差估计 许多统计问题在某一时刻需要估计一个总体的协方差矩阵,这可以看作是对数据集散点图形状的估计。 大多数情况下,基于样本的估计(基于其...

2885
来自专栏个人分享

统计学中抽样调查和一些常用的方法

抽样调查的领域涉及如何用有效的方式得到样本。这些调查都利用了问卷,而问卷的设计则很有学问。它设计如何用词、问题的次序和问题的选择与组合等等。涉及包括心理学、社会...

743
来自专栏Petrichor的专栏

深度学习: 验证集 & 测试集 区别

673
来自专栏Python小屋

Python使用逻辑回归算法根据三围数据判断用户性别

'''男性三围标准计算公式: 胸围=身高*0.61 腰围=身高*0.42 臀围=身高*0.64 女性三围标准计算公式: ...

622
来自专栏深度学习

推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

1、准确率与召回率(Precision & Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相...

5646
来自专栏深度学习

推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure)

准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;...

4135
来自专栏算法channel

2000字详解:极大似然估计, 最大后验概率估计

统计学中,似然函数是一种关于统计模型参数的函数。给定输出x时,关于参数θ的似然函数为L(θ|x),似然函数在数值上等价与给定θ后的

720
来自专栏https://www.cnblogs.com/L

【机器学习】--隐含马尔科夫模型从初识到应用

马尔可夫(1856~1922),苏联数学家。切比雪夫的学生。在概率论、数论、函数逼近论和微分方程等方面卓有成就。     马尔可夫模型(Markov Mode...

842
来自专栏算法channel

机器学习|K-Means算法

01 — K-Means算法 在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,主要通过不断地取离种子点最近均值的算法。 如下...

2726
来自专栏斑斓

概率学中的随机变量与分布

随机变量 Random Variables 如果一个变量的值存在一个与之相关联的概率分布,则称该变量为“随机变量(Random Variable)”。数学上更...

2753

扫码关注云+社区