Python完整代码带你一文看懂抽样( 二 )


这种操作方法与之前的3种方法的差异点在于该方法抽取的是小群体集,而不是每个数据个体本身 。该方法虽然简单易行,但是样本的分布受限于小群体集的划分,抽样误差较大 。这种方法适用于小群体集的特征差异比较小的数据,并且对划分小群体集有更高要求 。

Python完整代码带你一文看懂抽样

文章插图
 
03 抽样需要注意的几个问题1. 数据抽样要能反映运营背景
数据能正确反映运营背景,这看起来非常简单,但实际上需要数据工作者对于运营环节和流程非常熟悉才有可能实现 。以下是常见的抽样不能反映运营背景的情况 。
  • 数据时效性问题:使用过时的数据(例如1年前的数据)来分析现在的运营状态 。
  • 缺少关键因素数据:没有将运营分析涉及的主要因素所产生的数据放到抽样数据中,导致无法根据主要因素产生有效结论,模型效果差,例如抽样中没有覆盖大型促销活动带来的销售增长 。
  • 不具备业务随机性:有意/无意多抽取或覆盖特定数据场景,使得数据明显趋向于特定分布规律,例如在做社会调查时使用北京市的抽样数据来代表全国 。
  • 没有考虑业务增长性:在成长型公司中,公司的发展不都是呈现线性趋势的,很多时候会呈现指数趋势 。这时需要根据这种趋势来使业务满足不同增长阶段的分析需求,而不只是集中于增长爆发区间 。
  • 没有考虑数据来源的多样性:只选择某一来源的数据做抽样,使得数据的分布受限于数据源 。例如在做各分公司的销售分析时,仅将北方大区的数据纳入其中做抽样,而忽视了其他大区的数据,其结果必然有所偏颇 。
  • 业务数据可行性问题:很多时候,由于受到经费、权限、职责等方面的限制,在数据抽样方面无法按照数据工作要求来执行,此时要根据运营实际情况调整 。这点往往被很多数据工作者忽视 。
2. 数据抽样要能满足数据分析和建模需求
数据抽样必须兼顾后续的其他数据处理工作,尤其是分析和建模需求 。这时需要注意以下几个方面的问题 。
(1)抽样样本量的问题
对于大多数数据分析建模而言,数据规模越大,模型拟合结果越准确 。但到底如何定义数据量的大小,笔者根据不同类型的数据应用总结为以下几个维度:
  • 以时间为维度分布的,至少包含一个能满足预测的完整业务周期 。例如,做月度销售预测的,至少包含12个月的数据;做日销售预测的,至少包含30天的数据,如果一天中包含特定周期,则需要重复多个周期 。同时,时间性特征的要充分考虑季节性、波动性、节假日等特殊规律,这些都要尽量包含在抽样数据中 。
  • 做预测(包含分类和回归)分析建模的,需要考虑特征数量和特征值域(非数值型)的分布,通常数据记录数要同时是特征数量和特征值域的100倍以上 。例如数据集有5个特征,假如每个特征有2个值域,那么数据记录数需要至少在1000(100×5×2)条以上 。
  • 做关联规则分析建模的,根据关联前后项的数量(每个前项或后项可包含多个要关联的主体,例如品牌+商品+价格关联),每个主体需要至少1000条数据 。例如只做单品销售关联,那么单品的销售记录需要在1000条以上;如果要同时做单品+品牌的关联,那么需要至少2000条数据 。
  • 对于异常检测类分析建模的,无论是监督式还是非监督式建模,由于异常数据本来就是小概率分布的,因此异常数据记录一般越多越好 。
以上的数据记录数不是固定的,在实际工作时,如果没有特定时间要求,笔者一般会选择一个适中的样本量做分析,此时应综合考虑特征数、特征值域分布数、模型算法适应性、建模需求等;如果是面向机器计算的工作项目,一般会选择尽量多的数据参与计算,而有关算法实时性和效率的问题会让技术和运维人员配合实现,例如提高服务器配置、扩大分布式集群规模、优化底层程序代码、使用实时计算的引擎和机制等 。
(2)抽样样本在不同类别中的分布问题
做分类分析建模问题时,不同类别下的数据样本需要均衡分布 。
抽样样本能准确代表全部整体特征: