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

集成学习:投票法、提升法、袋装法

集成学习:投票法、提升法、袋装法

目录

  1. 🗳️ 投票法 (Voting)
  2. 🚀 提升法 (Boosting)
  3. 🛍️ 袋装法 (Bagging)

1. 🗳️ 投票法 (Voting)

投票法是一种强大的集成学习策略,它通过将多个模型的预测结果进行组合,旨在提升整体模型的性能。这种方法可以分为简单投票和加权投票两种形式。在简单投票中,每个模型对分类结果的投票权重相同,而在加权投票中,则根据模型的表现为每个模型分配不同的权重。通过集成多个模型,投票法能够有效降低单一模型的偏差,提高预测的准确性。

投票法的实现

以下是投票法的基本实现,通过 scikit-learn 库的 VotingClassifier 进行组合:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 定义基学习器
clf1 = LogisticRegression(solver='liblinear')
clf2 = DecisionTreeClassifier()
clf3 = SVC(probability=True)# 创建投票分类器
voting_clf = VotingClassifier(estimators=[('lr', clf1), ('dt', clf2), ('svc', clf3)], voting='soft')# 训练模型
voting_clf.fit(X_train, y_train)# 预测并评估
y_pred = voting_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)print(f'Voting Classifier Accuracy: {accuracy:.2f}')

投票法的优势

投票法的主要优势在于它能够结合不同模型的强项,减少单个模型可能产生的错误。此外,在存在噪声数据时,投票法也能够有效提高稳定性。通过集成多种算法,投票法能够适应不同的决策边界,达到更为理想的分类效果。简单投票的实现易于理解,而加权投票则能更好地利用各个模型的特长。通过这种组合,模型的泛化能力得到提升,特别是在复杂的数据集上。


2. 🚀 提升法 (Boosting)

提升法是一种通过逐步训练多个弱分类器来构建强分类器的技术。它的核心思想是将关注点放在那些被先前分类器错误分类的样本上。通过这种方式,提升法能够逐步减少模型的偏差,提高整体预测的准确性。常见的提升算法包括 AdaBoost 和 XGBoost 等。

提升法的实现

以下是使用 AdaBoost 的示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建基础学习器
base_estimator = DecisionTreeClassifier(max_depth=1)# 创建 AdaBoost 分类器
ada_clf = AdaBoostClassifier(base_estimator=base_estimator, n_estimators=50)# 训练模型
ada_clf.fit(X_train, y_train)# 预测并评估
y_pred = ada_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)print(f'AdaBoost Classifier Accuracy: {accuracy:.2f}')

提升法的优势

提升法的最大优势在于其强大的预测能力,尤其是在面对复杂的数据模式时。通过将多个弱分类器的结果结合,提升法能够形成一个高度准确的强分类器。此外,提升法对异常值和噪声的鲁棒性较强,能够有效降低过拟合的风险。由于其逐步学习的特性,提升法还能够为每个样本分配不同的权重,从而更有效地学习复杂的决策边界。使用提升法时,选择合适的基础学习器和参数设置至关重要,这将直接影响模型的性能。


3. 🛍️ 袋装法 (Bagging)

袋装法是一种通过对训练数据进行重采样的技术,旨在提升模型的稳定性和准确性。袋装法通过在多个子集上训练多个模型,最终将它们的预测结果进行组合,以减少方差并提高整体性能。随机森林是袋装法的经典应用,结合了决策树的优势和袋装法的灵活性。

袋装法的实现

以下是使用随机森林实现袋装法的示例:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建随机森林分类器
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)# 训练模型
rf_clf.fit(X_train, y_train)# 预测并评估
y_pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)print(f'Random Forest Classifier Accuracy: {accuracy:.2f}')

袋装法的优势

袋装法的核心优势在于其通过重采样减少方差,进而提高模型的稳定性。这种方法能够有效防止过拟合,尤其是在数据量较小或特征较多的情况下。随机森林作为袋装法的代表,结合了多棵决策树的预测结果,通常能获得优于单一模型的效果。此外,袋装法的并行性使得其在训练速度上也具有一定优势,尤其在数据集较大时,能够显著减少训练时间。

通过对多个模型的集成,袋装法能够充分发挥每个模型的长处,从而形成更为稳定和高效的预测系统。由于其结构的简单性和易于实现的特点,袋装法被广泛应用于各类机器学习任务中,成为数据科学家和工程师的常用工具。

http://www.lryc.cn/news/466501.html

相关文章:

  • 波浪理论、江恩理论、价值投资的结合
  • LRDDR4芯片学习(三)——命令和时序
  • 【趣学C语言和数据结构100例】
  • linux卸载数据库(最为完整的卸载方式)
  • H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)
  • 使用梧桐数据库进行销售趋势分析和预测
  • SQLITE排序
  • python的文件操作
  • 群晖通过 Docker 安装 MySQL
  • 同程旅行面经
  • 【贪心算法】(第八篇)
  • 立即调用的函数表达式(IIFE)
  • YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题
  • flask 接口还在执行中,前端接收到接口请求超时,解决方案
  • 探索 Python 中的 XML 转换利器:xml2dict
  • dbt-codegen: dbt自动生成模板代码
  • springboot057洗衣店订单管理系统(论文+源码)_kaic
  • 南大通用(GBase 8s)数据库在 Spring Boot 中使用 Flyway
  • CMakeLists.txt 编写规则
  • Javascript算法——二分查找
  • node-sass/vendor/linux-x64-72 : Error: EACCES: permission denied, mkdir
  • uniapp-uniapp + vue3 + pinia 搭建uniapp模板
  • 深度学习的一些数学基础
  • 自由学习记录(13)
  • 低代码可视化-uniapp海报可视化设计-代码生成
  • 一次使用LD_DEBUG定位问题的经历
  • 数据库安全:如何进行数据库安全审计?
  • 【Python】基础语法错误和异常
  • 获取每个页面的元素,并写入json
  • 【ShuQiHere】深入解析数字电路中的锁存器与触发器