bootstrap是统计学习中的一种采样技术,是用原样本自身的数据抽样形成新的样本。
它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下:
(1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
(2) 根据抽出的样本计算给定的统计量T。
(3) 重复上述N次(一般大于1000),得到N个统计量T。
(4) 计算上述N个统计量T的样本方差,得到统计量的方差。
Bootstrap在小样本时效果很好,通过方差的估计可以构造置信区间等。
def scalegirl(samples):
count = 0.0
size = samples.size
for sex in samples:
if(sex ==0):
count += 1.0
print(count)
return count/(total -count)
import numpy as np
boys = (np.ones(1000))
girls = (np.zeros(800))
all = np.hstack((boys,girls))
print(girls.shape)
scale = 0.0
iter = 10000
for i in range(iter):
bootstrapSamples = resample(all,n_samples =100, replace = 1)
print(bootstrapSamples)
tempscale = scalegirls(bootstrapSamples)
print(tempscale)
scale += tempscale
print(scale/ iter)
print(all)
上述代码会重复10000次采样并计算重新采样之后的比率。
而bootstrap aggregating(bagging)就是在样本数据上抽样形成子样本预测模型,并整合多个样本模型,它是一种做模型合并的算法,在机器学习领域运用很多。这种算法可以提高统计分类器和回归器的稳定性和准确度,并且帮助避免过度拟合。
bagging(装袋法)由Leo Breiman在1994年提出,当时用来随机合并训练数据集而提高分类器的性能。因此,bagging算法不直接作用于模型本身,而是作用于训练数据上。
设有训练集,记作D,数据集的大小是n。Bootstrap Aggregating的目标就是基于D生成m个新的数据集Di,新数据集的大小记作n’。
新数据集的每个元素是通过在原数据集采样得到的,采样的概率服从平均分布。这样一来,Di中会存在重复的样本。如果n′=n,而且n的值足够大,那么Di中没有出现重复的样本比例大概为**(1−1/e)≈63.2%** (参考)。其余的样本都是出现了重复的。
随后,使用这m个新产生的数据集分别训练模型。预测时,对这些模型的结果进行平均(对拟合任务)或者投票(对分类任务)。