机器学习集成算法与K-means聚类

一、集成算法:"集体智慧" 提升模型性能

集成算法的核心思想是 "集百家之长",通过组合多个个体学习器的结果,弥补单一模型的局限性,这与 "多个专家判断优于单个专家" 的现实逻辑高度契合。其学习重点可分为以下三部分:

1. 核心基础:结合策略是 "融合" 的关键

集成结果的质量依赖于合理的结合策略,PPT 中明确了三种核心方式:

  • 简单平均法 / 加权平均法:适用于回归任务,加权平均通过给性能更优的学习器分配更高权重,进一步提升精度;
  • 投票法:适用于分类任务,遵循 "少数服从多数" 原则,但需注意个体学习器的多样性 ------ 若学习器高度一致,集成可能无法提升性能,甚至起反作用(如 PPT 中 "集成不起作用""集成起负作用" 的案例)。

2. 三大主流框架:并行与串行的差异

根据个体学习器的生成方式,集成算法分为三类,其逻辑和应用场景差异显著:

  1. 实践落地:代码与参数理解并重

PPT 中的 "葡萄酒分类" 练习让我意识到,理论需结合工具落地:

需熟练使用sklearn中的RandomForestClassifier/RandomForestRegressor,关键参数如n_estimators(树的数量,默认 100)、oob_score(是否用袋外数据评估,等价于交叉验证)、bootstrap(是否有放回采样)直接影响模型效果;

理解数据结构(如葡萄酒数据集的 13 个特征、3 个类别)是选择模型和调参的前提。

二、K-Means 聚类:无监督学习中的 "分组工具"

K-Means 是无监督学习中最经典的聚类算法,核心是 "让相似的数据聚在一起",解决 "无标签数据如何分类" 的问题,其学习重点集中在 "原理 - 评估 - 优缺点 - 实践" 四步:

1. 核心原理:迭代优化簇中心

K-Means 的逻辑简洁但关键步骤环环相扣,需严格遵循四步流程:

  1. 初始化:随机选择 k 个样本作为初始簇中心;
  2. 样本聚类:计算每个样本到各簇中心的距离(常用欧式距离、曼哈顿距离),将样本归入最近的簇;
  3. 更新中心:计算每个簇的样本均值,作为新的簇中心;
  4. 迭代停止:若簇中心收敛或达到最大迭代次数,输出聚类结果。

其中,距离度量是基础 ------ 欧式距离适合衡量 "绝对距离"(如二维空间两点距离),曼哈顿距离适合衡量 "轴上距离总和"(如城市中两点的出租车行驶距离),需根据数据特点选择。

2. 结果评估:CH 指标定优劣

无监督学习的难点是 "如何判断聚类效果",PPT 中的 CH 指标提供了量化标准:

  • CH 指标通过 "类内紧密度"(样本与簇中心的距离平方和)和 "类间分离度"(簇中心与总中心的距离平方和)计算;
  • CH 值越大,代表簇内越紧密、簇间越分散,聚类效果越好,为调参(如 k 值)提供了客观依据。

3. 优缺点认知:合理选择应用场景

K-Means 的特性决定了其适用范围:

  • 优点:算法简单、训练速度快,复杂度与样本数呈线性关系,适合常规结构化数据集;
  • 缺点 :k 值需手动确定(是核心痛点),对非球形簇(如环形、条形数据)拟合效果差,且对初始簇中心敏感(需通过n_init参数多次运行优化)。

4. 实践关键:数据生成与参数调参

PPT 中的make_blobsKMeans工具使用是实践核心:

  • make_blobs可生成自定义聚类数据集,关键参数如n_samples(样本数)、centers(类别数)、cluster_std(簇内方差)可控制数据难度;
  • KMeansn_clusters(k 值)、max_iter(最大迭代次数)、random_state(固定随机种子)是调参重点,需结合 CH 指标反复测试,找到最优 k 值。

三、整体总结:两类算法的核心差异与学习启示

维度 集成算法 K-Means 聚类
学习类型 监督学习(需标签) 无监督学习(无标签)
核心目标 提升预测精度(分类 / 回归) 实现数据分组(聚类)
关键依赖 个体学习器的多样性与结合策略 k 值选择与簇中心迭代
应用场景 有标签的预测任务(如疾病诊断、销量预测) 无标签的数据探索(如用户分群、异常检测)

通过本次学习,我不仅掌握了具体算法的原理和代码实现,更理解了 "算法选择需匹配问题类型"------ 有标签用集成,无标签用聚类;同时意识到 "调参不是盲目试错",需结合算法原理(如 RandomForest 的n_estimators、K-Means 的 k 值)和评估指标(如 OOB 得分、CH 指标)科学优化,才能让模型真正解决实际问题。

相关推荐
-dzk-31 分钟前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
风筝在晴天搁浅40 分钟前
hot100 78.子集
java·算法
Jasmine_llq44 分钟前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪1 小时前
快速进制转换
笔记·算法
m0_706653231 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你911 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_423233902 小时前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder1232 小时前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_715575342 小时前
分布式任务调度系统
开发语言·c++·算法