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

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

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

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

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

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

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

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

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

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

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 指标)科学优化,才能让模型真正解决实际问题。

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

相关文章:

  • Pytest 插件怎么写:从0开发一个你自己的插件
  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 【Protues仿真】基于AT89C52单片机的数码管驱动事例
  • Windows下,将本地视频转化成rtsp推流的方法
  • strcasecmp函数详解
  • AI模型部署 - 大语言模型(LLM)部署技术与框架
  • js来比较两个对象内容有误差异
  • mysql数据库学习
  • 想在手机上操作服务器?cpolar让WaveTerminal终端随身携带,效率倍增
  • 【Springboot进阶】Java切面编程对性能的影响深度分析
  • 【Ruoyi解密-02.登录流程:】登录-找密码不抓瞎
  • selenium3.141.0执行JS无法传递element解决方法
  • Linux的奇妙冒险——进程间通信(管道、SystemV IPC)
  • 完全背包(模板)
  • webrtc中win端音频---windows Core Audio
  • 2025图表制作完全指南:设计规范、工具选型与行业案例
  • Chrome/360 浏览器扩展深度解析:内置扩展与普通扩展的实现机制对比
  • (栈)Leetcode155最小栈+739每日温度
  • 力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
  • Spring Boot集成腾讯云人脸识别实现智能小区门禁系统
  • 【C++去除整数某一位数字求新数和倍数保留2位小数控制】2022-10-22
  • 人工智能 -- 循环神经网络day1 -- 自然语言基础、NLP基础概率、NLP基本流程、NLP特征工程、NLP特征输入
  • 打造医疗新质生产力
  • 如何用算力魔方4060安装PaddleOCR MCP 服务器
  • visual studio更改git提交的用户名和邮件
  • Seaborn数据可视化实战:Seaborn基础与实践-数据可视化的艺术
  • 高效处理NetCDF文件经纬度转换:一个纯CDO驱动的Bash脚本详解
  • [大模型微调]基于llama_factory用 LoRA 高效微调 Qwen3 医疗大模型:从原理到实现
  • WPF中UI线程频繁操作造成卡顿的处理
  • 中文房间悖论:人工智能理解力的哲学拷问