在数据挖掘的实际工程中,多数时候需要从总体中抽取样本来进行模型预测。抽样的方法有多种,此处例举常见的几种。
1、简单抽样。
简单抽样分为有放回抽样和无放回抽样。无放回抽样:从N个个体中随机抽取n个个体,每次抽取一个个体,且抽取后不再放回。有放回抽样:跟无放回类似,但是每次抽取个体之后,要放回。
2、簇抽样
先将总体分为多个不想交的簇,然后再抽取一个或多个簇作为样本。例如:把某中学二年级的学生按班级分为多个簇(假设一个班就是一个簇),每次抽取一个或多个班(簇)作为样本,这种抽样方法就是簇抽样。簇抽样要求簇内的差异较大,簇之间的差异较小,从而使得簇抽取的样本具有代表性。
3、分层抽样
将总体分为多个不想交的部分,叫做层,然后按照一个定的比例在每个层中进行抽样。例如:将某中学的所有学生作为总体,每个年级的学生作为一个层,再从每个层中随机抽样一定数量的学生,这种方法就是分层抽样。分层抽样要求层内的差异较大,而层之间的差异较小。
4、系统抽样(针对样本容量很大的情况)
从N个个体中抽取n个个体,做法是先确定k=N/n(对k向上取整),把N个个体分为n段,每段有k个个体,设定一个整数m,1 <= m <= k,在每段中抽取第m个个体,抽取完n段得到n个个体,这n个个体就是抽样的结果。这种抽样方法就是整体抽样。
5、自助抽样
假设总体的个体(实例)个数为N,自助抽样的思想是:每次从总体里面抽取一个个体,抽取N次,这样有一部分个体一次都没被抽中,而另一部分个体至少被抽中一次。一次都没抽中的个体数量大概是,当N很大时,其值为 ≈ 0.368,而至少被抽中一次的个体数占总体的0.682。
6、蓄水池抽样
当总体的数量足够大,不能读进计算机内存的时候,前面几种方法就不适用了,这个可以采用蓄水池抽样法。其具体实现的伪代码如下(假设从N个个体中抽取k个个体):