计算机中bootstrapping 是很没意思_Bootstrapping算法(附python代码)

计算机中bootstrapping 是很没意思_Bootstrapping算法(附python代码)_第1张图片

简介

Bootstrapping算法就是利用有限的样本经由多次重复抽样,建立起足以代表母体样本分布之新样本,在机器学习中解决了样本不足的问题。

在西瓜书第二章提到,自助法在数据集较小、难以有效划分训练/测试集时很有用,将多次随机抽样作为训练集,将初始数据作为测试集。

假定盒子中有蓝、黄共n个小球,自助样本可按如下步骤获得:

  1. 从盒中随机抽取一个小球并记录其颜色;
  2. 把小球放入盒中;
  3. 混匀。再随机抽取一个小球,记下其颜色;
  4. 放回盒子中,混匀,重新抽取;
  5. 重复步骤③和④n次,便可得到一个自助样本。重复上述抽样过程M次,便可得到M个自助样本。

案例

计算机中bootstrapping 是很没意思_Bootstrapping算法(附python代码)_第2张图片

我们举个例子:假设我们想知道蓝球和黄球的比例是否大体相当。那么我们采用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 法就是其中的一种。

你可能感兴趣的:(是很没意思)