当前位置: 首页 > news >正文

Imbalanced-learn 5. Ensemble of samplers

Ensemble of samplers

  • 5. 采样器的集成方法
    • 5.1. 包含内部平衡采样器的分类器
      • 5.1.1. 袋外分类器(Bagging classifier)
      • 5.1.2. 随机树森林
      • 5.1.3. 提升(Boosting)

5. 采样器的集成方法

5.1. 包含内部平衡采样器的分类器

5.1.1. 袋外分类器(Bagging classifier)

在集成分类器中,bagging 方法会在数据的不同随机子集上构建多个估计器。在 scikit-learn 中,该分类器被称为 BaggingClassifier。然而,这个分类器不允许对每个数据子集进行平衡处理。因此,在不平衡数据集上训练时,该分类器会偏向多数类:

>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_samples=10000, n_features=2, n_informative=2,
...                            n_redundant=0, n_repeated=0, n_classes=3,
...                            n_clusters_per_class=1,
...                            weights=[0.01, 0.05, 0.94], class_sep=0.8,
...                            random_state=0)
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.metrics import balanced_accuracy_score
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.tree import DecisionTreeClassifier
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
>>> bc = BaggingClassifier(DecisionTreeClassifier(), random_state=0)
>>> bc.fit(X_train, y_train) #doctest:
BaggingClassifier(...)
>>> y_pred = bc.predict(X_test)
>>> balanced_accuracy_score(y_test, y_pred)
0.77...

BalancedBaggingClassifier 中,每一个自助样本还会进一步进行重采样,以实现所需的 sampling_strategy。因此,BalancedBaggingClassifier 拥有与 scikit-learn 的 BaggingClassifier 相同的参数。此外,采样方式可以通过参数 sampler,或者通过 sampling_strategyreplacement 这两个参数来控制,后者适用于希望使用 RandomUnderSampler 的情况:

>>> from imblearn.ensemble import BalancedBaggingClassifier
>>> bbc = BalancedBaggingClassifier(DecisionTreeClassifier(),
...                                 sampling_strategy='auto',
...                                 replacement=False,
...                                 random_state=0)
>>> bbc.fit(X_train, y_train)
BalancedBaggingClassifier(...)
>>> y_pred = bbc.predict(X_test)
>>> balanced_accuracy_score(y_test, y_pred)
0.8...

更改 sampler 将会引出不同的已知实现方法[MO97], [HKT09], [WY09]。你可以参考以下示例,以了解这些不同方法在实际中的应用:使用采样器的Bagging分类器

5.1.2. 随机树森林

BalancedRandomForestClassifier 是另一种集成方法,森林中的每棵树都会获得一个平衡的自助样本 [CLB+04]。此类提供了 RandomForestClassifier 的所有功能:

>>> from imblearn.ensemble import BalancedRandomForestClassifier
>>> brf = BalancedRandomForestClassifier(
...     n_estimators=100, random_state=0, sampling_strategy="all", replacement=True,
...     bootstrap=False,
... )
>>> brf.fit(X_train, y_train)
BalancedRandomForestClassifier(...)
>>> y_pred = brf.predict(X_test)
>>> balanced_accuracy_score(y_test, y_pred)
0.8...

5.1.3. 提升(Boosting)

已有多种基于提升(Boosting)的方法被设计出来。

RUSBoostClassifier 会在执行增强迭代之前对数据集进行随机欠采样 [SKVHN09]:

>>> from imblearn.ensemble import RUSBoostClassifier
>>> rusboost = RUSBoostClassifier(n_estimators=200, algorithm='SAMME.R',
...                               random_state=0)
>>> rusboost.fit(X_train, y_train)
RUSBoostClassifier(...)
>>> y_pred = rusboost.predict(X_test)
>>> balanced_accuracy_score(y_test, y_pred)
0...

一种特别的方法是在装袋分类器中使用 AdaBoostClassifier 作为基学习器,这种方法被称为“EasyEnsemble”。 EasyEnsembleClassifier 允许对在平衡自助样本上训练的 AdaBoost 学习器进行装袋集成 [LWZ08]。与 BalancedBaggingClassifier 的 API 类似,可以按如下方式构建集成模型:

>>> from imblearn.ensemble import EasyEnsembleClassifier
>>> eec = EasyEnsembleClassifier(random_state=0)
>>> eec.fit(X_train, y_train)
EasyEnsembleClassifier(...)
>>> y_pred = eec.predict(X_test)
>>> balanced_accuracy_score(y_test, y_pred)
0.6...

示例

  • 使用重采样比较集成分类器

该篇文章由ChatGPT翻译,如有疑问,欢迎提交Issues

http://www.lqws.cn/news/545941.html

相关文章:

  • 【水印论文阅读1】将水印规则的定义域从离散的符号空间转移到连续的语义空间
  • 【大模型水印论文阅读2】前缀文本编码、均匀性约束
  • 【linux】程序地址空间
  • 信息抽取领域关键Benchmark方法:分类体系
  • 不同类型的微型导轨精度降低速度有何差异?
  • 专注搜索引擎优化的专业模板平台
  • 【MySQL进阶】服务器配置与管理——系统变量,选项,状态变量
  • CVE-2015-5531源码分析与漏洞复现(Elasticsearch目录遍历漏洞)
  • C语言高级编程
  • 【日志】Unity游戏实习该怎么准备
  • Unity知识点-Renderer常用材质变量
  • 数据结构之顺序表(C语言版本)
  • 【高并发服务器项目测试报告】
  • 大事件项目记录4-用户接口开发-更新用户基本信息
  • 【论文阅读 | CVPR 2025 |MambaVision:一种混合 Mamba-Transformer 视觉骨干网络】
  • Node.js到底是什么
  • Dockerfile——AI教你学Docker
  • 【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示
  • 还在手动部署?用Jenkins+Docker+Git实现自动化CI/CD
  • 使用ant-design-vue 写个适用于web端的条件搜索栏组件,可折叠展开
  • 2025Mybatis最新教程(七)
  • 机器学习中为什么要用混合精度训练
  • 2025.6.27总结
  • HTTP协议中Connection: Keep-Alive和Keep-Alive: timeout=60, max=100的作用
  • SpringMVC系列(四)(请求处理的十个实验(下))
  • 多模态融合相机L3CAM
  • 高斯过程动态规划(GPDP)
  • 免费无广告PDFCreator:虚拟打印软件一键转 PDF/PNG/JPG
  • printf和scanf
  • 问卷调查[bell ring]