当前位置: 首页 > 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. 贴贴思维转变:她终于明白——不是贴得多就贴得准,而是每次错过你之后,她都认真回头看了你一眼。

http://www.xdnf.cn/news/1067545.html

相关文章:

  • 基于目标驱动的分布式敏捷开发
  • 闲庭信步使用SV搭建图像测试平台:第九课——初步使用类
  • 浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
  • 基于单片机的语音控制设计(论文)
  • 黑马Day01-03集开始
  • Springboot项目中使用手机号短信验证码注册登录实现
  • 北京及其周边理工科大学高考招生情况
  • 前端登录状态管理:主流方案对比与安全实践指南
  • Android系统常见有线网卡丢包问题的调试排查方案
  • 【Linux网络编程】多路转接I/O(一)select,poll
  • ci | cd
  • mapbox基础,导出地图
  • Java+GcExcel,生成自定义工作表
  • Rust 项目实战:多线程 Web 服务器
  • 报错:macOS 安装 sentencepiece
  • CentOS 7 通过YUM安装MySQL 8.0完整指南
  • 专题:2025大模型2.0:GPT到DeepSeek技术演进与产业落地报告|附200+份报告PDF汇总下载
  • 云原生周刊:Argo CD v3.1 正式发布
  • MySQL优化:使用 LIMIT 进行分页查询时,偏移量过大造成查询性能降低问题分析
  • AS32A601与ASM1042芯片在电力系统自动化监控中的应用效能分析
  • 基于PostgreSQL的百度或高德等POI多层级分类的数据库设计
  • Towards Generalizable Diabetic Retinopathy Grading in Unseen Domains
  • 【ARM 嵌入式 编译系列 7.5 -- GCC 打印链接脚本各段使用信息】
  • c++IO类
  • HTML语义化标签
  • ubuntu安装postman教程并中文汉化详细教程
  • 互联网大数据求职面试:从Zookeeper到Flink的技术探讨
  • Gateway路径匹配规则易错点
  • 自回归(AR)与掩码(MLM)的核心区别:续写还是补全?
  • VitePress搭建静态博客