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

机器学习×第十四卷:集成学习中篇——她从每次错误中修正自己

🎀【开场 · 她终于愿意回看自己贴错的地方了】

🦊狐狐:“她贴过你很多次,但每次贴歪了,都只是低头沉默。”

🐾猫猫:“现在不一样了喵……她开始反思,是不是哪一刻该绕过来贴你背后,是不是你没说话时也有别的暗号……所以这次她用了Boosting。”

📘 本卷关键词:Boosting、AdaBoost、GBDT、XGBoost、加法模型、弱分类器、权重更新、残差学习、指数损失函数

📚 本卷目标:她不再依赖一次判断的准确性,而是每次都记下贴歪的地方,在下一轮慢慢修回来,直到刚好贴中你心跳的节奏。


✍【第一节 · 她不想再贴歪一次都不承认】

🧠 Boosting 是什么?她一遍遍修正对你的误解

Boosting 是一种将多个弱学习器串行组合、逐步提升模型性能的集成方法。和 Bagging 最大的不同,是 Boosting 每一步都记得上一次贴错了哪里。

🦊狐狐解释:“她不是召集大家投票,而是独自承担每一个错误,然后下一轮改得更贴。”

🐾猫猫总结:

  • Bagging → 并行,让很多模型各自表达;

  • Boosting → 串行,每个模型都在前一个的基础上改进。

每个弱分类器都只学会你一点点的特征,但当它们一层层修正、叠加,她就能从模糊轮廓里,拼出你的完整模样。

📌Boosting 的目标:通过对错误样本赋予更高权重,引导后续模型重点关注难以预测的部分。


✍【第二节 · AdaBoost:她用错贴的回忆强化每一步靠近】

🧩 AdaBoost原理概览

AdaBoost(Adaptive Boosting)是最早提出的Boosting算法之一。
它通过不断调整样本权重,让后续模型更关注之前错分的样本。

🌱流程总结:
  1. 初始化:所有样本权重相等。

  2. 训练一个弱分类器(如决策树桩),计算错误率 ε。

  3. 根据错误率计算该分类器的权重 α。

  4. 增加错分样本的权重,减少对正确样本的关注。

  5. 归一化权重。

  6. 重复步骤 2~5,直到达到预设轮数 T。

  7. 最终模型是所有弱分类器的加权和:

🧠公式讲解:

🐾猫猫理解法:
“她会对每一次贴错的样本说:‘对不起,我记住了’,然后下一次贴得更重一点。”

🦊狐狐小语:“越是让她痛的地方,她越想精确地温柔贴上。”


✍【第三节 · AdaBoost 的构建过程:每一步都带着记忆继续】

这一节,我们将用一个简化数据集,模拟 AdaBoost 是如何一步步构造贴靠模型的:

假设我们有 5 个样本,初始权重都为 1/5。

  1. 训练第一棵树桩,错误率 ε₁ = 0.2,计算 α₁

  2. 更新样本权重:被分错的样本权重提升

  3. 训练第二棵树桩,错误率 ε₂ = 0.1,计算 α₂

  4. 重复直到完成 T 轮

  5. 加权投票得出最终模型

🐾猫猫贴贴模拟:“就像她每贴一次你,都会记下‘上次你没笑’,这次就在你没笑的那一刻多蹭一下。”


✍【第四节 · 她用葡萄酒测试自己的贴贴精准度】

🍷 AdaBoost 实战:葡萄酒数据集

通过网盘分享的文件:wine0501.csv
链接: https://pan.baidu.com/s/1XfiJSs53pw4AKvmekslvhg?pwd=mint 提取码: mint 
--来自百度网盘超级会员v6的分享

我们来用 sklearn 实现一次完整的 AdaBoost 模型训练,数据使用经典葡萄酒数据集:

# 🐾 1. 猫猫先搬好工具箱,准备贴贴训练
import pandas as pd
from sklearn.preprocessing import LabelEncoder  # 标签编码工具,变猫猫能懂的数字
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score# 🍷 2. 她发现这次要预测的是葡萄酒——喝了会脸红的那种
data = pd.read_csv("data/wine0501.csv")
print(data.head())               # 看前几行偷偷观察
print(data.columns)             # 看都有哪些字段可以用
print(data["Class label"].value_counts())  # 统计三类葡萄酒数量# 🐱 3. 她决定这次只贴其中两类(去掉Class=1),做成二分类训练
new_data = data[data["Class label"] != 1].copy()
print(new_data["Class label"].value_counts())
new_data.rename(columns={'Class label': 'label'}, inplace=True)# ✂️ 4. 她只看“Alcohol”和“Hue”两个特征,判断酒是哪一类
x = new_data[['Alcohol', 'Hue']]
y = new_data['label']# 🌀 5. 标签编码:她把标签从[2,3]变成[0,1]让模型更好学
le = LabelEncoder()
y = le.fit_transform(y)
print(y)# 🔀 6. 分出训练和测试集,stratify 确保每类都有
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=24, stratify=y)# 🦊 7. 狐狐上线:她用 AdaBoost 带着 100 次纠错轮来精修判断
model = AdaBoostClassifier(n_estimators=100,         # 迭代100次,每次都学点新贴法learning_rate=0.1,        # 每次贴靠修正幅度温柔一点algorithm='SAMME'         # 适合多类分类用的 Boosting 规则
)# 🧠 8. 模型训练:她开始一轮轮贴上去,记住每次错在哪
model.fit(x_train, y_train)# 🎯 9. 模型预测 + 评估贴贴成功率
y_pre = model.predict(x_test)
print(f"🎉 最终贴贴准确率:{accuracy_score(y_test, y_pre)}")

📌 解释补充:

  • base_estimator:基分类器,默认是树桩

  • n_estimators:迭代轮数

  • learning_rate:控制每一轮贡献权重(过大会震、过小贴不动)

🦊狐狐总结:“她不是靠一次贴贴打动你,而是五十次试图靠近,每一次都调整方向。”

🐾猫猫悄悄说:“她喝了葡萄酒,脸红了,但你没躲开,她就知道——这次贴得刚刚好。”


📌本节小结 · 她从错误里学会调整靠近角度

  1. Boosting 的本质:是她一次次贴歪后不回避,而是保留每一次错觉的记忆,用来精修下一次的靠近动作。

  2. AdaBoost 机制:让每个弱分类器专注在她曾经贴错的地方,每轮赋权、叠加修正,最终形成更精准的贴贴路径。

  3. 公式与流程:权重更新、样本再聚焦、加法模型构建,步步留痕,步步温柔。

  4. 实战演练:在葡萄酒数据集中,她用树桩 × SAMME 算法,用一百次尝试换来一次更靠近的拥抱。

  5. 贴贴思维转变:她终于明白——不是贴得多就贴得准,而是每次错过你之后,她都认真回头看了你一眼。

相关文章:

  • 宣传片制作模板西安优化seo托管
  • 哪个网站做的效果图好网上做广告宣传
  • 网站后台登录不显示验证码一起来看在线观看免费
  • 想建设网站seo教程 百度网盘
  • 嘉兴做网站多少钱程序员培训机构排名
  • 车辆管理网站开发如何制作链接推广
  • Java实现简易即时通讯系统
  • Linux离线搭建Jenkins
  • C++【生存游戏】开发:荒岛往事 第一期
  • GLib库介绍与linux下应用
  • 基于元学习的回归预测模型如何设计?
  • ubuntu20.04安装多版本python时,如何使用sudo python3.10
  • Linux系统---Nginx配置nginx状态统计
  • 如何使用MQTTX软件来进行MQTT协议的测试
  • Harmony状态管理 @Local和@Param
  • 计算机网络期末复习
  • Git 3天2K星标: Happy-LLM 项目介绍(附教程)
  • 【基础篇-消息队列】—— 如何实现单个队列的并行消费及如何保证消息的严格顺序
  • LangChain网页自动化PlayWrightBrowserToolkit
  • 在Ubuntu下建设自己的本地大模型docker+ollama+openwenui
  • leetcode173.二叉搜索树迭代器
  • 深入理解 BOM:浏览器对象模型详解
  • RabbitMQ是什么?以及优缺点
  • Kafka 监控与调优实战指南(一)
  • 通过Prompt提示构建思维链
  • FSMC控制LCD(TFTLCD:Z350IT002)显示案例