采样是对随机现象的模拟,基于给定的样本分布,模拟产生一个对应的事件。
使用较少的样本来预估总体分布
重采样,充分利用已有数据集,挖掘更多信息。自助法:进行多次随机有放回抽样,当样本量足够大时,极限上有36.8%的样本抽不到,抽到的可以作为训练集,抽不到的作为测试集,进行多次试验可以估计偏差和方差。重采样可以解决样本不均衡问题。
计算机无法产生真实随机数,只能产生伪随机数。一般通过线性同余来产生。公式如下 x t + 1 ≡ a x t + c ( m o d m ) x_{t+1}\equiv ax_t+c(mod m) xt+1≡axt+c(modm)其中m必最好是质数,质数能保证数据进入循环且能生成数域内的所有数,即[1,m]范围内的所有数。a是使生成的数据看起来杂乱无章。例如从0开始,假定a=1,第m次取数时是mc对m取模,得0.也即必定能在m次内构成循环。如果m是质数,构成循环前的所有数都将不相等。也即实现了各个数出现的概率相等,即均匀分布。以上的举例过于简单,实际上a\c\m都需要精心设计。
样本不平衡问题
训练不平衡样本得到一个较差的结果的本质原因是训练时使用的优化目标函数和测试时使用的评价指标不一样。造成这种情形的原因可能是训练集的样本分布和测试集的样本分布不一致。例如判断一个人是否得病,训练时使用的是正负样本对优化目标函数的权重贡献都一样,但是实际上人们更关心得病了的样本。再如优化的目标函数是基于整体训练集(不均衡)的准确率尽量高,而人们期望正负样本各自的准确率都尽量高,相当于期望正负样本比为1:1。
处理的方式由两种:基于数据的方法(重新采样构建均衡样本集)、基于算法的方法
基于数据的方法常见的有过采样和欠采样。
过采样:把数据集分为正负两个集合,重复从少的那一类集合中有放回地随机抽取样本加入训练集当中。
欠采样:把数据集分为正负两个集合,重复从多的那一类集合中有随机抽取样本加入少的那一类集合当中构建训练集。用于是从多抽到少,抽取过程中可以根据不均衡程度决定放回或者不放回样本。
过采样缺陷:多次抽取后少的样本重复的较多,容易过拟合。另增大了训练集,对运算要求更高。解法方法:对抽取到的样本增加一个随机扰动(或者联合其他少数同类样本的信息构造新样本)
欠采样缺陷:多的那一类样本只选取了其中一部分,可能会丢弃有用信息,学到的模型不够完整。解决方法:通过算法挑选出具有代表性的样本作为采样的基础数据集,再从中采样、剔除很容易识别的样本
基于算法的方法有:改变目标函数,给不同的样本不同的权重;极度不均衡时可以将问题转为单类学习、异常检测
优点:没有丢失信息;不额外增加相同样本,降低过拟合风险。
缺陷:需要重新构建评价指标,对精确率和召回率做权衡,通常情况下的auc、f1等指标可能不够使用。