分层抽样是什么?先分组,再按比例从每组里抽
分层抽样(Stratified Sampling)是一种抽样方法:先根据某些特征,把总体划分成若干个互不重叠的组,这些组叫作“层”;然后在每一层中分别进行随机抽样,再把各层抽出的样本合在一起,组成最终的样本。它是统计调查和机器学习中都非常常用的方法。
为什么要分层
假设要调查一所大学学生对食堂的满意度,学校有一万名学生,其中本科生八千人、研究生两千人。如果只是简单地随机抽取一百人,由于随机性,可能碰巧抽到了九十个本科生、十个研究生,或者反过来,样本中两类学生的比例与实际情况相差较大。而本科生和研究生对食堂的看法可能存在系统性的差异,这样的样本就无法准确地反映全体学生的意见。如果采用分层抽样:把学生分为本科生和研究生两层,按照它们在总体中的比例,从本科生中随机抽取八十人,从研究生中随机抽取二十人,就能保证样本的结构与总体一致。
分层抽样的好处
保证代表性:确保总体中各个重要的子群体都能在样本中得到适当的体现,避免由于运气不好而漏掉某些群体,尤其是规模较小的群体。提高估计的精度:如果层内的个体比较相似,而层与层之间的差异较大,分层抽样得到的估计会比简单随机抽样更加准确,也就是说,用同样数量的样本能得到误差更小的结果。便于分别研究各个子群体:可以同时得到总体的估计和各层的估计,比如分别了解本科生和研究生的满意度。
比例分配和非比例分配
比例分配:每一层抽取的样本数量与这一层在总体中所占的比例相同,就像上面的例子,这是最常见的做法。非比例分配:有时,某些层的规模很小,按比例分配只能抽到极少的样本,无法可靠地分析这一层的情况,这时可以有意地多抽一些。比如在一项全国调查中,为了能够单独分析某个人口较少的地区,会在这个地区多抽一些样本。此时在计算总体的估计时,需要对各层的结果进行加权调整。还有一种奈曼分配,根据各层的规模和层内的波动程度来分配样本,波动越大的层抽取的样本越多,这样可以让总体估计的精度最高。
在机器学习中的应用
划分训练集和测试集:在分类问题中,如果直接随机地划分数据,训练集和测试集中各个类别的比例可能与原始数据不同,尤其是当某些类别的样本很少时。比如在一个只有 2% 是欺诈交易的数据集中,随机划分出来的测试集里可能碰巧只有极少的欺诈样本,甚至一个都没有,评估结果就会很不可靠。使用分层抽样,可以保证训练集和测试集中各个类别的比例都与原始数据一致。分层交叉验证:在 K 折交叉验证中,让每一折中各个类别的比例都与原始数据保持一致,这样每一折的评估结果更加稳定可靠。scikit-learn 等机器学习库中提供了专门的分层划分和分层交叉验证的工具,在处理分类问题时通常作为默认的推荐做法。除了按类别分层,也可以按照其他重要的变量进行分层,比如按照用户的地区、数据采集的时间段,确保各个子群体在训练和测试中都有代表。