平行集成 Parallel ensemble & bagging--Random Forest 随机森林

本文详细介绍了平行集成方法,特别是Bagging(Bootstrap Aggregating)和Pasting策略。通过实例展示了如何在Scikit-Learn中实现这两种方法,并讨论了随机森林在Bagging中的应用。内容包括采样方法、集成算法的参数设置以及如何利用OOB(Out-of-Bag)样本进行性能评估。此外,还对比了硬投票和软投票的概念。
摘要由CSDN通过智能技术生成

一、平行集成 Parallel ensemble learning
Bagging : bootstrap aggregating 的缩写 (有放回采样)在从样本中抽样给classifier 或者predictor来训练集成模型里面的单个模型的时候,这里的采样方式是有放回的。如下图中,假设总样本为9个不同颜色的球,其中红色4个,绿色3个,蓝色两个。现在要从这个样本中抽取两个子集(subset),分别命名为bag1和bag2,在一中抽取的为4个红球,两个蓝球,此时如果不将球放回的话,那么bag2中只能从剩下的三个绿色的球中抽取,bagging是有放回的采样,所以这里相当于还是从原来的总样本中抽取一些球来作为bag2的子集,下图中抽取的是两个蓝球和两个绿球来作为bag2的样本集。
在这里插入图片描述
在这里插入图片描述
这里一个iteration,就是一个predictor, T个iteration最后结果的平均值。每个predictor里面F%个抽出来训练,剩下的用来test。
Pasting: (无放回采样)
同样的在选取子样本时,和bagging不一样的是,当bag1已经选取好之后,bag2只能从bag1中选取剩下的里面做出选择,因为bag1中采样之后,并没有放回,所以bag2所采样的总体样本中就不存在bag1中已有的样本,bag2只能从剩下的三个绿球中选择。
在这里插入图片描述
其中每一个bag的样本会传到一个predictor里面,让predictor计算得出一个结果。如下图所示。
一旦所有的predictor被训练完成,这个集成算法就可以对新的样本进行预测,其预测的结果可以通过简单地汇总所有的预测变量来得到。分类中的典型统计模式通常是使用聚合函数(aggregating function), 回归中通常是使用平均值。

In database management, aggregate function or aggregation function is a function where the values of multiple rows are grouped together to form a single summary value. --wiki

下图也是以bagging的方式采样到predictors的过程。
在这里插入图片描述
我们可以通过不同的CPU核甚至不同的服务器平行训练Bagging中的predictors。类似的,也可以平行地做出预测。Scikit-Learn 同时为bagging和pasting提供了简单的API,BaggingClassifier 用来分类,BaggingRegressor用来做回归。
下面我们看一下如何用Scikit Learn实现bagging和pasting。
我们使用的是sklearn.datasets中的make_moons来产生两个交织半圈的数据集(一共有500个samples),如下图所示。

from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
X,y=make_moons(n_samples=500,noise=0.3,random_state=42)
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=42)
plt.scatter(X[:,0],X[:,1],c=y)

在这里插入图片描述
现在分别使用DecisionTreeClassifier和BaggingClassifier为它们分类,其中BaggingClassifier中里面的basic classifier 为DecisionTreeClassifier。

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
import numpy as np
def visualize_classifier(model, X, y, ax=None, cmap='rainbow'):
    ax = ax or plt.gca()
    # Plot the training points
    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=cmap,clim=(y.min
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值