[飞桨机器学习]Bagging算法

[飞桨机器学习]Bagging算法

Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1996年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。

一、简介

Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling).给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在来样集中.

照这样,我们可采样出T 个含m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合.这就是Bagging 的基本流程.在对预测输出进行结合时, Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者.

Bagging是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。 这是机器学习中常规策略的一个例子,被称为模型平均(modelaveraging)。采用这种策略的技术被称为集成方法。模型平均(model averaging)奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。模型平均是一个减少泛化误差的非常强大可靠的方法。

二、基本思想

1.给定一个弱学习算法,和一个训练集;
2.单个弱学习算法准确率不高;
3.将该学习算法使用多次,得出预测函数序列,进行投票;
4.最后结果准确率将得到提高.

三、算法流程

四、实例

数据集pima简介

该数据集最初来自国家糖尿病/消化/肾脏疾病研究所。数据集的目标是基于数据集中包含的某些诊断测量来诊断性的预测 患者是否患有糖尿病。
从较大的数据库中选择这些实例有几个约束条件。尤其是,这里的所有患者都是Pima印第安至少21岁的女性。
数据集由多个医学预测变量和一个目标变量组成Outcome。预测变量包括患者的怀孕次数、BMI、胰岛素水平、年龄等

【1】Pregnancies:怀孕次数
【2】Glucose:葡萄糖
【3】BloodPressure:血压 (mm Hg)
【4】SkinThickness:皮层厚度 (mm)
【5】Insulin:胰岛素 2小时血清胰岛素(mu U / ml
【6】BMI:体重指数 (体重/身高)^2
【7】DiabetesPedigreeFunction:糖尿病谱系功能
【8】Age:年龄 (岁)
【9】Outcome:类标变量 (0或1)

import pandas
from sklearn import model_selection
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import
Bagging 是一种框架算法,以随机森林(RDF)算法为代表。该算法采用随机有放回的方式选择训练数据,然后构造分类器,最后将这些分类器组合起来。其具体步骤是从原始样本集中使用 Bootstraping 方法随机抽取 n 个训练样本,共进行 k 轮抽取,得到 k 个相互独立且元素可重复的训练集。针对这 k 个训练集,训练 k 个模型,这些模型可根据具体问题选择,如决策树、KNN 等。对于分类问题,由投票表决产生分类结果;对于回归问题,由 k 个模型预测结果的均值作为最后预测结果,且所有模型的重要性相同 [^3]。 Bagging 算法被提出是为解决一些机器学习中的问题,其核心步骤有特定的逻辑,从数学角度(泛化误差)也能对其有效性进行分析。在 Python 中,可以使用 sklearn 的 `BaggingClassifier` 实现,也能手动实现简化版 Bagging。它与随机森林存在一定关系,通过可视化可以展示其如何降低波动,同时该算法有自身的优缺点,也有适用的场景 [^1]。 Bagging 与 Boosting 算法作为机器学习领域的重要集成学习方法,未来有望得到更广泛应用,通过改进算法能提高模型的性能和鲁棒性,为机器学习领域发展做出更大贡献 [^2]。 ```python # 以下是使用 sklearn 的 BaggingClassifier 示例代码 from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier # 生成一些示例数据 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建基分类器(这里使用决策树) base_estimator = DecisionTreeClassifier() # 创建 Bagging 分类器 bagging = BaggingClassifier(base_estimator=base_estimator, n_estimators=10, random_state=42) # 训练模型 bagging.fit(X_train, y_train) # 预测 y_pred = bagging.predict(X_test) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值