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

机器学习核心算法笔记:集成学习与聚类算法

一、集成学习(Ensemble Learning)

1. 集成学习概述

集成学习的核心思想源于 “集体智慧”:对于复杂任务,多个学习器的综合判断通常优于单个学习器。其本质是通过构建并结合多个个体学习器,提升模型的泛化能力和稳定性。

结合策略主要包括:

  1. 简单平均法:对多个学习器的输出取算术平均(适用于回归任务)。
  2. 加权平均法:根据学习器的性能分配权重,权重非负且总和为 1,公式为 \(H(x) = \sum_{i=1}^{T} w_i h_i(x)\)(\(w_i\)为权重,\(h_i(x)\)为个体学习器输出)。
  3. 投票法:分类任务中采用 “少数服从多数” 原则,多数学习器预测的类别作为最终结果。

2. 集成学习分类

根据个体学习器的生成方式,集成学习可分为三类:

分类核心特点代表算法生成方式
Bagging个体学习器无强依赖,可并行生成随机森林通过 bootstrap 抽样(有放回采样)生成不同训练集,并行训练多个学习器
Boosting个体学习器强依赖,需串行生成AdaBoost根据前一轮学习器的误差调整样本权重,串行训练学习器,最终加权组合
Stacking分阶段聚合多模型无固定代表第一阶段用多个基础模型生成预测结果,第二阶段用新模型学习这些结果与真实标签的关系

3. 核心算法详解

(1)Bagging 与随机森林

Bagging 原理:全称 “Bootstrap Aggregation”,通过对原始数据集进行有放回抽样(bootstrap),生成多个不同的训练集,并行训练多个同质学习器,最终通过投票(分类)或平均(分类)输出结果,公式为 \(f(x) = \frac{1}{M} \sum_{m=1}^{M} f_m(x)\)(M为学习器数量)。

  • 随机森林(Random Forest):

    1. “随机” 体现:数据采样随机(bootstrap 抽样)、特征选择随机(每个节点分裂时随机选择部分特征)。
    2. “森林” 体现:由多个决策树并行组成,通过多数投票确定最终分类结果。
    • 优势:
      1. 可处理高维数据,无需预处理特征选择;
      2. 能评估特征重要性;
      3. 支持并行计算,训练速度快;
      4. 结果可可视化,便于分析。
    • 关键参数:
      1. n_estimators:树的数量(默认 100);
      2. oob_score:是否用袋外数据评估(默认 False,True 时等效交叉验证);
      3. bootstrap:是否有放回抽样(默认 True)。
(2)Boosting 与 AdaBoost
  • Boosting 原理:从弱学习器(性能略优于随机猜测)开始,通过迭代调整样本权重和学习器权重,逐步强化模型性能。

  • AdaBoost 步骤:

    1. 初始化所有样本权重相等;
    2. 训练弱学习器,对分类错误的样本提高权重,正确样本降低权重;
    3. 基于更新后的样本集训练下一个弱学习器;
    4. 最终组合所有弱学习器,误差率低的学习器赋予更高权重。

二、k 均值聚类(k-means Clustering)

1. 聚类概述

聚类是无监督学习的核心任务,目标是将相似样本自动归为一类,核心挑战是距离度量和聚类评估。

2. 距离度量方法

  1. 欧式距离:衡量多维空间中两点的绝对距离,n 维空间公式为 \(d = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}\)(二维空间为 \(d = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}\))。
  2. 曼哈顿距离:衡量两点在标准坐标系中的轴距总和,平面公式为 \(d(i,j) = |x_1 - x_2| + |y_1 - y_2|\)。

3. k 均值算法流程

k 均值是最经典的聚类算法,核心是通过迭代优化聚类中心实现样本分组:

  1. 初始化:随机选择 k 个样本作为初始聚类中心;
  2. 聚类分配:计算每个样本到各中心的距离,将样本指派到最近的中心所在簇;
  3. 更新中心:计算每个簇的样本均值,作为新的聚类中心;
  4. 迭代收敛:重复步骤 2-3,直至中心不再变化或达到最大迭代次数,输出最终聚类结果。

4. 聚类评估与算法特性

  • CH 指标:评估聚类质量的核心指标,通过类内紧密度(样本与簇中心距离平方和)和类间分离度(簇中心与总中心距离平方和)计算,值越大表示聚类效果越好(类内越密、类间越散)。

  • 优点:

    1. 简单高效,时间复杂度与样本量呈线性关系,适合大规模数据集;
    2. 易于实现和理解。
  • 缺点:

    1. 需手动指定 k 值,且对初始中心敏感;
    2. 难以处理非凸形状或密度差异大的簇;
    3. 对噪声和异常值较敏感。

5. 关键函数与参数

  1. 数据生成:make_blobs()用于生成聚类数据集,关键参数包括n_samples(样本数)、n_features(特征数)、centers(类别数)、cluster_std(类别方差)。
  2. 聚类实现:KMeans()用于执行 k 均值聚类,关键参数包括n_clusters(簇数量)、max_iter(最大迭代次数)、n_init(算法运行次数)、random_state(随机种子)。

三、总结

  1. 集成学习通过组合多个学习器提升监督学习性能,Bagging(随机森林)适合并行高效场景,Boosting(AdaBoost)适合逐步优化误差,Stacking 适合复杂场景的多模型融合。
  2. k 均值聚类是无监督学习的基础算法,通过距离度量和中心迭代实现样本分组,适合简单分布数据集,但需注意 k 值选择和聚类形状限制。
http://www.dtcms.com/a/342691.html

相关文章:

  • QT6(QSpinBox和QDoubleSpinBox)
  • java项目数据脱敏工具类实现
  • 【离线安装】CentOS Linux 7 上离线部署Oracle 19c(已成功安装2次)
  • 【数据可视化-96】使用 Pyecharts 绘制主题河流图(ThemeRiver):步骤与数据组织形式
  • 如何使用 DeepSeek 助力工作​
  • C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-下篇)
  • 阿里云的centos8 服务器安装MySQL 8.0
  • 【LeetCode 415】—字符串相加算法详解
  • Java学习历程14——制作一款五子棋游戏(4)
  • R 语言科研配色 --- 第 85 期 (附免费下载的配色绘图PPT)
  • 全屋WiFi强电款WiFi6 86面板一站式测试解决方案
  • leetcode 904 水果成篮
  • 从零开始理解 K 均值聚类:原理、实现与应用
  • Grafana侧重可视化,那多数据源告警呢?
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 【实战记录】麒麟服务器操作系统安装KSC-Defender安全中心全指南
  • EagleTrader交易员采访|交易是一场概率游戏
  • 免费DirectX修复工具?游戏运行异常?【图文详解】dll修复工具?D3DX9_43.dll丢失
  • 【科研绘图系列】R语言绘制序列分析图
  • Rust 的流程控制与函数
  • SQL 中 DISTINCT 的全方位指南:从基础用法到性能优化
  • 【51单片机】【protues仿真】基于51单片机温度烟雾控制系统
  • C++项目实战——高性能内存池(一)
  • Redis面试精讲 Day 26:Redis源码分析:事件循环与网络模型
  • docker使用和部署深化学习
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第一章知识点问答(21题)
  • 华为AUTOSAR质量目标与开发实践
  • LeetCode100 -- Day3
  • 常德二院全栈国产化实践:KingbaseES 数据库的关键作用
  • 机器学习聚类算法学习报告