简介
Bootstrapping算法就是利用有限的样本经由多次重复抽样,建立起足以代表母体样本分布之新样本,在机器学习中解决了样本不足的问题。
在西瓜书第二章提到,自助法在数据集较小、难以有效划分训练/测试集时很有用,将多次随机抽样作为训练集,将初始数据作为测试集。
假定盒子中有蓝、黄共n个小球,自助样本可按如下步骤获得:
- 从盒中随机抽取一个小球并记录其颜色;
- 把小球放入盒中;
- 混匀。再随机抽取一个小球,记下其颜色;
- 放回盒子中,混匀,重新抽取;
- 重复步骤③和④n次,便可得到一个自助样本。重复上述抽样过程M次,便可得到M个自助样本。
案例
我们举个例子:假设我们想知道蓝球和黄球的比例是否大体相当。那么我们采用bootstrapping的步骤则是:
1. 每次采样10个球
2. 重复上述过程10000次,把每次的蓝、黄球比例求平均,代表最终的蓝、黄球比例。
代码
import numpy as np
from sklearn.utils import resample
def scaleyellow(samples):
count = 0.0
total = samples.size
for colour in samples:
if (colour == 0):
count += 1.0
# print(count)
return count / (total - count)
blue = (np.ones(1000))
yellow = (np.zeros(800))
# yellow/blue=0.8
all = np.hstack((blue, yellow))
scale = 0.0
iter = 10000
for i in range(iter):
bootstrapSamples = resample(all, n_samples=100, replace=1)
# print(bootstrapSamples)
tempscale = scaleyellow(bootstrapSamples)
scale += tempscale
print(scale / iter)
>>>0.8133598040468601
总结
- 从上个例子中,我们可以看到,通过自采样的方法,从统计角度,得到的蓝、黄球比例和真实的值非常接近。
- 有时候我们无法得知真相,只有通过样本来推断。
- 当今计算机技术的高度发展,使统计研究及其应用跃上了一个新台阶。
- 这不仅提高了计算的速度,而且可以把统计学家从求解数学难题中释放出来,并逐渐形成一种面向应用的、基于大量计算的统计思维——模拟抽样统计推断, Bootstrap 法就是其中的一种。