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

机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征

机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征

资料取自《零基础学机器学习》。
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


主成分分析(PCA)是一种数据降维魔法师,能够在保留关键信息的前提下,把复杂数据"折叠"成更简单形式。就像用3句话总结一本小说核心情节[^5-4]。下面通过超市顾客数据案例讲解:

一、核心思想(如同快递装箱)

假设要运输100件形状各异的货物(即100维特征),但只能用3个标箱打包:

杂乱货物
找出承载量最大的箱子
按重要性装箱
  1. 找主运输箱:选取能装最多货物的箱子(主成分1)
  2. 补充空隙:选与第一箱垂直的第二箱装剩余重要货物(主成分2)
  3. 反复叠加:直到装满3个箱子(主成分3),丢弃不重要的零碎物品[^5-4]

类比说明:就像用"年收入+消费频率+健康指数"3个维度,就能代表原始30个消费行为特征的核心信息

二、实战步骤(用超市数据演示)

案例背景:超市有200个顾客的100维消费数据,包括:

  • 生鲜购买频率
  • 电子产品消费额
  • 促销敏感度
  • …(共100项指标)[^5-4]
原始100维数据
标准化处理
计算协方差矩阵
找出方差最大的方向
提取前3个主成分
  1. 特征标准化:消除量纲差异,让"购买次数"和"消费金额"可比(如同统一用公分和公斤替代市尺和市斤)[^4-1]

  2. 寻找主方向

    • 第一主成分:解释最大方差的方向(如综合消费能力轴)
    • 第二主成分:解释剩余方差且与第一正交(如消费偏好方向)
    • 第三主成分:继续捕捉剩余重要信息(如促销敏感度)[^5-4]
  3. 数据投影
    原始100维数据投影到3个主轴上,得到:

    # 转换后的数据示例
    顾客A: [2.5, -0.8, 1.2]
    顾客B: [-1.3, 0.7, 0.3]
    

    数字代表在三个主方向上的强度值

三、神奇效果(三维可视化)

压缩后的3D散点图能清晰展示客户分群:

X轴
综合消费能力
Y轴
品质偏好度
Z轴
价格敏感度
  • 簇1(右上角):高消费+爱品质+不差钱 → 重点维护客户
  • 簇2(中部):中等消费+促销敏感 → 精准营销目标
  • 簇3(左下方):低频消费+低单价 → 潜在流失客户[^5-4]

生活场景:就像用身高/体重/体脂率3个指标代替50项体检数据,医生仍能判断健康状况[^5-4]

四、应用场景与注意事项

优势场景

  • 高维数据可视化(如基因数据)
  • 去除冗余特征(如相片去噪)
  • 加速模型训练(减少计算量)[^5-4]

使用注意

  • 主成分无实际含义(类似加密坐标)
  • 会丢失部分细节信息
  • 需要先标准化处理[^4-1]

目录:总目录
上篇文章:机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体


[^4-1]《零基础学机器学习》第四章第二节特征标准化
[^5-4]《零基础学机器学习》第五章第六节降维技术

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

相关文章:

  • 【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025
  • 【STM32】ST-Link V2.1制作
  • 软件工程第六章-详细设计
  • Git 使用全攻略:从入门到精通
  • 牛客网NC209794:使徒袭来
  • 2025年PMP 学习二十一 14章 项目立项管理
  • 系统安全及应用深度笔记
  • (已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop
  • Java大数据机器学习模型在金融衍生品风险建模中的创新实践
  • 【Unity网络编程知识】Unity的 WWW相关类学习
  • 【免费下载】2025年全国地铁路线及站点矢量数据
  • 关于IntegerCache.cache的介绍
  • 【密码学——基础理论与应用】李子臣编著 第十二章 SM3密码杂凑算法 课后习题
  • Ubuntu 远程桌面配置指南
  • 数据要素及征信公司数据要素实践
  • 探究:霍尔开关,在电动晾衣架丝滑升降与卷发器智能温控中的关键作用
  • 已解决——如何让网站实现HTTPS访问?
  • 前端页面 JavaScript数据交互
  • 鸿蒙 系统-安全-程序访问控制-应用权限管控
  • ES6详解
  • Linux中的DNS的安装与配置
  • flow-两种SharingStarted策略的区别示例
  • kotlin Flow的技术范畴
  • 解决软件连接RabbitMQ突发System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接异常
  • RabbitMQ-高级
  • nginx 漏洞修复 CVE-2024-7347 CVE-2025-23419
  • 深入理解蒙特卡洛树搜索(MCTS):python从零实现
  • SQL:多列匹配(Multiple-column Matching)
  • Mybatis操作数据库(2)
  • 看之前熟悉双亲委派加载机制,看之后了解双亲委派加载机制