大数据安全与隐私保护
写在前面:这是基于福建某高校网安专业课程的应试材料,并非专业资料,博客内容仅供参考。
课程要点
一、数仓架构与维度建模
- 数仓分层体系:ODS层负责原始数据接入,DWD层实现数据清洗与整合,DWS层构建汇总宽表,ADS层支撑最终应用。各层需明确区分功能定位。
- 宽表设计特性:突破传统数据库范式约束,强调字段冗余与使用便捷性。例如2019年某数据中台项目使用128列宽表支撑千万级数据处理。
- 维度建模核心:确定订单域、物流域等主题域划分标准,建立星型模型(含事实表与维度表)及雪花模型(星型扩展)的关联关系设计。
二、数据中台建设要点
- 统一数据源:企业所有数据指标必须且只有一个来源,彻底解决福建电信2013年出现的积分部门与市场部门数据不一致问题。
- 全局架构要求:禁止部门级烟囱式数仓建设,需集中管理订单、用户等核心数据资产,形成企业级统一数据资产表。
- 中台演进路径:由阿里2013-2014年提出概念,整合数仓体系化能力,强调数据重用性与通用性,减少重复开发。
三、数据清洗与治理
- 预处理流程:包含缺失值填充、重复数据去重、异常值修正等环节,配套数据归一化、离散化、哑变量编码等量化处理。
- 工具选择策略:探索阶段优先使用可视化清洗工具,Spark适用于内存处理但环境配置复杂,B工具配置更简便。
四、数据挖掘基础
- 分类算法评价
- 核心指标:掌握准确率、召回率、精确率、F1值计算,通过混淆矩阵推导(含真正例TP、假正例FP等基础单元)。
- 算法重点:朴素贝叶斯分类原理,决策树信息增益计算(非ID3算法本身),Lasso回归特征选择机制。
- 回归与聚类
- 回归模型:理解最小二乘法几何意义,区分SST(总平方和)、SSR(回归平方和)、SSE(残差平方和)差异,掌握过拟合/欠拟合判定及正则化应对。
- 聚类方法:K均值划分策略(均值找中心点),DBSCAN密度聚类(半径/密度阈值决定聚类结果),区分密度直达、密度可达概念。
五、实验与考核要求
- 代码掌握:重点掌握实验课提供的4个核心代码模块,特别是ARIMA模型参数选择(通过PACF/ACF图确定PQ值)。
- 考试侧重:深度讲解内容(如维度建模、数据中台)占比更高,实验常见知识点优先考核。
PART1《数仓建设保姆级教程》要点解析
第一部分:数据仓库基础概念
1.1 数据仓库的定义与四大核心特征
📖 PPT原文定位:01 数仓基本概念 → 数据仓库的定义与核心特征
PPT原文关键句 :
数据仓库 (Data Warehouse, DW/DWH) 是一个面向主题的、集成的、非易失的和时变的数据集合,主要用于整合分散的业务数据,为企业提供统一的历史信息视图,最终支持高层的管理决策分析。
详细内容:
| 特征 | 核心含义 | 考察深度 |
|---|---|---|
| 面向主题(Subject-Oriented) | 围绕"销售"“用户”"财务"等企业核心分析对象组织数据,而非按业务系统(CRM/ERP)划分 | 能举例说明不同主题域包含哪些数据 |
| 集成性(Integrated) | 多源数据经ETL清洗、转换、去重、统一编码后加载 | 能说出至少3种集成操作(去重、格式统一、编码转换) |
| 非易失性(Non-Volatile) | 数据一旦写入,主要用于查询分析,原则上不做更新和删除 | 能解释为什么不允许更新(保证历史可追溯) |
| 时变性(Time-Variant) | 所有数据带时间戳,记录不同时间点的状态变化 | 能说明支持哪些时间维度分析(同比、环比、趋势) |
1.2 OLTP vs OLAP 全方位对比
📖 PPT原文定位:01 数仓基本概念 → 数据仓库 vs. 数据库 核心特征对比
PPT原文关键句 :
数据库(OLTP)追求快响应、强一致,面向应用与业务流程,严格遵循范式,极力避免数据冗余
数据仓库(OLAP)支持复杂查询、辅助决策,面向主题与分析对象,引入适度冗余,以空间换时间
详细对比表:
| 对比维度 | OLTP(联机事务处理) | OLAP(联机分析处理) |
|---|---|---|
| 核心目标 | 事务处理 - 追求高并发、快响应、强一致性 | 分析处理 - 支持复杂查询、辅助决策 |
| 设计原则 | 面向应用与业务流程,严格遵循第三范式(3NF),极力避免数据冗余 | 面向主题与分析对象,引入适度冗余,以空间换时间 |
| 数据内容 | 仅保留当前最新状态,历史数据通常被覆盖或归档 | 海量历史数据累积,包含多时间点的快照 |
| 数据量级 | 通常GB~TB级 | 通常TB~PB级 |
| 操作特征 | CRUD并重,大量短事务,影响少量记录 | 主要是查询,极少更新,多为批量加载 |
| 响应时间 | 毫秒级(用户体验要求高) | 秒级~分钟级(容忍度较高) |
| 存储格式 | 行式存储 | 列式存储 |
| 典型场景 | 银行转账、电商下单、用户登录 | 销售大盘报表、用户画像分析、管理驾驶舱 |
| 代表产品 | MySQL、Oracle、SQL Server | Hive、ClickHouse、Greenplum、Snowflake |
💡 PPT中的关键原话:"用空间换时间"是数仓设计的核心原则之一。
1.3 直接访问业务系统的痛点
📖 PPT原文定位:01 数仓基本概念 → 直接访问业务系统的痛点
PPT原文关键句 :
⚠️ 性能影响:复杂的分析查询会拖慢在线交易系统(OLTP),影响核心业务。
🔀 数据不一致:不同系统间数据格式、编码规则不一,跨系统联合分析成本高且结果不可信。
🏝️ 数据孤岛:数据分散在CRM、ERP等不同系统,无法形成企业全局的数据视图。
详细内容:
| 痛点 | 详细解释 |
|---|---|
| 性能影响 | 复杂的分析查询(如多表JOIN+聚合)会大量消耗数据库CPU/IO资源,拖慢在线交易 |
| 数据不一致 | CRM中用户状态"已激活",ERP中同一用户"未激活",跨系统分析无法得到可信结果 |
| 开发效率低 | 业务表结构专为事务设计(3NF),字段分散,写一个简单报表需要关联十几张表 |
| 数据孤岛 | CRM、ERP、日志系统各自独立,无法形成用户的360度全景视图 |
| 安全风险 | 直接暴露生产库连接,操作失误可能误删数据;敏感数据暴露给分析师 |
1.4 数仓核心价值
📖 PPT原文定位:01 数仓基本概念 → 数据仓库的核心价值
PPT原文关键句 :
🛡️ 性能与环境隔离:分析查询完全在独立的离线环境运行,确保业务系统(OLTP)的稳定与高效。
🔗 统一可信的数据来源:清洗、整合多源异构数据,打造企业"Single Source of Truth"(单一事实来源),消除不一致性。
⚡ 极致的查询效率:通过预计算、分层聚合和索引优化,大幅缩短复杂报表的查询响应时间。
🧠 赋能深度业务洞察:提供跨主题、多维度的分析平台,支持历史回溯和趋势预测,驱动数据化决策。
1.5 数仓三种架构模式
📖 PPT原文定位:01 数仓基本概念 → 数据集市架构 / Inmon / Kimball / 混合型
PPT原文关键句 :
Inmon 企业信息工厂 (CIF):采用"自上而下"的建设思路。先构建统一的、遵循第三范式(3NF)的企业级数据仓库(EDW),确保全域数据一致性;再基于EDW构建各部门的数据集市。
Kimball 维度建模架构:采用"自下而上"的敏捷思路。跳过底层统一的步骤,直接基于星型/雪花模型构建数据集市,快速响应业务分析需求。
混合型数据仓库架构:融合 Inmon 和 Kimball 的优势,是目前行业主流选择。
详细对比表:
| 架构模式 | 倡导者 | 建设方向 | 核心流程 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|---|
| Inmon(CIF) | Bill Inmon(“数仓之父”) | 自上而下 | 先建EDW(3NF)→ 再建数据集市 | 数据一致性强,全局统一视图 | 建设周期长,不够灵活 | 大型企业、金融行业 |
| Kimball(维度建模) | Ralph Kimball | 自下而上 | 直接建数据集市(星型/雪花) | 快速响应,敏捷迭代 | 可能出现数据冗余和口径不一致 | 互联网公司、业务变化快 |
| 混合型架构 | — | 上下结合 | 底层统一ODS/EDW,上层维度建模 | 兼顾一致性与灵活性 | 架构复杂度较高 | 当前行业主流选择 |
1.6 元数据管理与常见术语解析
📖 PPT原文定位:01 数仓基本概念 → 元数据管理与常见术语解析
PPT原文关键句 :
元数据 (Metadata):关于数据的数据。它描述了数据的定义、来源、格式、逻辑关系和处理规则,是数仓的"地图"与"说明书"。
元数据分类:
| 元数据类型 | 面向对象 | 包含内容 | 实际价值 |
|---|---|---|---|
| 技术元数据 | IT开发人员、数据工程师 | 数据源连接信息、表结构定义、ETL脚本、任务调度依赖、数据血缘 | 帮助技术人员理解数据从哪里来、经过什么处理、到哪里去 |
| 业务元数据 | 业务分析师、数据产品经理 | 指标定义(如"日活跃用户"的计算口径)、业务术语解释、统计口径说明 | 帮助业务人员理解数据含义,确保"同一个指标同一个口径" |
必须掌握的术语:
| 术语 | 英文 | 定义 | 举例 |
|---|---|---|---|
| 实体 | Entity | 分析的核心对象,现实世界中可区分的事物 | 用户、商品、订单、店铺 |
| 维度 | Dimension | 分析业务的角度/坐标轴,用于切片和聚合 | 时间、地域、品类 |
| 度量 | Measure | 业务流程中产生的可量化数值 | 销量、支付金额、点击量 |
| 粒度 | Granularity | 事实表中一行数据代表的业务细节程度 | “每笔订单每件商品” vs “每日每个店铺” |
| 口径 | Caliber | 指标计算的具体逻辑和业务限定条件 | 复购率 = 购买≥2次的用户数 / 总购买用户数 |
| 代理键 | Surrogate Key (SK) | 人为生成、无业务含义的唯一数值标识 | 维度表中的自增ID,隔离源系统主键变更 |
第二部分:离线数仓建设核心
2.1 数仓分层详解
📖 PPT原文定位:02 离线数仓建设核心 → 数仓分层详解
PPT原文关键句 :
ODS 数据源层:数仓的统一入口,原样存储来自业务系统的原始数据,保留数据原貌。
DWD 数据明细层:对ODS层数据进行清洗、转换与整合,构建统一、高可用的明细数据层。
DWM 数据中间层:基于DWD层进行轻度聚合,生成公共中间结果表,减少上层应用重复计算。
DWS 数据服务层:面向业务主题构建宽表,整合汇总,直接支撑业务分析与查询需求。
DIM 公共维表层:存储一致性维度信息,如用户、商品、地区等,为各层提供关联分析能力。
APP 数据应用层:数仓的最终产出,直接提供给报表平台、BI系统、数据产品及分析人员使用。
完整六层架构详细表:
| 层级 | 全称 | 核心功能 | 数据来源 | 数据去向 | 代表操作 |
|---|---|---|---|---|---|
| ODS | 贴源层(Operational Data Store) | 原样保留原始数据,不做任何加工 | 业务数据库、日志文件、外部API | DWD层 | Sqoop/DataX同步,Flume日志采集 |
| DWD | 明细层(Data Warehouse Detail) | 清洗、转换、整合,建立最细粒度明细事实表 | ODS层 | DWM层、DWS层 | 去重、格式统一、维度退化、空值处理 |
| DWM | 中间层(Data Warehouse Middle) | 轻度聚合,减少上层重复计算 | DWD层 | DWS层 | 按天/小时预聚合、中间宽表构建 |
| DWS | 服务层(Data Warehouse Service) | 面向业务主题构建汇总宽表 | DWD层、DWM层 | ADS层 | 用户主题宽表、商品主题宽表 |
| DIM | 维度层(Dimension) | 存储一致性维度信息 | 业务系统、手工维护 | 各层(通过JOIN关联) | 日期维度表、地域维度表 |
| ADS | 应用层(Application Data Service) | 数仓最终产出,面向具体业务场景 | DWS层、DWD层 | 报表平台、BI工具 | 销售日报表、管理驾驶舱 |
分层四大核心价值:
📖 PPT原文定位:“分层是数仓设计的核心原则,旨在实现系统的解耦并全方位提升研发与查询效率。”
| 价值 | 详细解释 | 实际案例 |
|---|---|---|
| 数据复用(Reusability) | DWS层构建一次公共指标,可被多个ADS报表复用,避免重复计算 | 用户活跃度在DWS层计算一次,日报、周报、月报都引用它 |
| 问题隔离(Isolation) | 报表数据错误时,逐层排查(ODS→DWD→DWS→ADS),快速定位问题层级 | 发现GMV异常,从ADS→DWS→DWD逐层排查 |
| 性能优化(Performance) | 不同层级采用不同存储格式和压缩策略,平衡存储成本与查询性能 | DWD用ORC+Snappy,DWS用列式存储加速 |
| 逻辑清晰(Clarity) | 标准化结构降低复杂度,便于多人团队协作 | 新员工通过分层文档快速理解数据流向 |
2.2 数仓建模三大方法论
📖 PPT原文定位:02 离线数仓建设核心 → 数仓建模方法
PPT原文关键句 :
范式建模法 (3NF):严格遵循第三范式,消除冗余,强调数据结构的规范性。适用于构建企业级统一底层数据仓库(EDW)。
维度建模法 (Dimensional):以业务分析需求为导向,将数据拆分为事实表和维度表,构建星型/雪花模型。查询性能高,直观易懂,支持多维分析。
详细对比:
| 方法论 | 倡导者 | 核心逻辑 | 数据组织方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|---|
| 范式建模(3NF) | Bill Inmon | 严格遵循第三范式,消除数据冗余 | 实体-关系(ER)模型 | 数据一致性强,无冗余 | 查询需多表JOIN,性能较差 | 企业级EDW底层 |
| 维度建模 | Ralph Kimball | 以业务分析需求为导向,分为事实表和维度表 | 星型/雪花模型 | 查询性能高,直观易懂 | 存在数据冗余 | 数据集市主流方法 |
| 实体建模 | — | 抽象为"实体"“事件”"说明"三个基础要素 | 高阶概念模型 | 帮助理解复杂业务逻辑 | 不直接用于建表 | 业务概念设计阶段 |
2.3 维度建模详解
📖 PPT原文定位:02 离线数仓建设核心 → 维度建模详解
PPT原文关键句 :
事实表 (Fact Table):存储业务事件的度量数值(如:GMV、销量、点击量),是分析的核心对象。特点是记录数量级大、随时间持续快速增长,通常不做删除更新。
维度表 (Dimension Table):描述事实发生的上下文与环境(如:时间、商品、店铺、用户)。结构通常较"宽",包含大量描述性属性,记录数量相对较少且相对稳定。
2.3.1 事实表与维度表
事实表(Fact Table)详细特征:
- 存储内容:业务事件的数值型度量(measure),如订单金额、销售数量、点击次数
- 数据特征:记录数量巨大(千万级/亿级),随时间持续快速增长
- 操作特征:通常只做插入操作,不做删除和更新(保留历史)
- 关键字段:度量值 + 维度外键(关联维度表)
- 粒度:定义了表中每行数据的业务含义,粒度越细越灵活但数据量越大
维度表(Dimension Table)详细特征:
- 存储内容:描述性属性(descriptive attributes),如用户姓名、商品名称、时间描述
- 数据特征:记录数量相对较少(万级/百万级),变化频率低
- 操作特征:相对稳定,但会发生缓慢变化(SCD)
- 关键字段:维度主键(通常是代理键SK)+ 大量描述属性
💡 记忆口诀:事实表存"多少",维度表存"是谁、在哪里、什么时候"
2.3.2 三种模型模式
📖 PPT原文定位:“星型模式是最常用的基础模式。星座模式是构建大型企业级数仓的主流选择。”
| 模式 | 结构描述 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 星型模式 | 一张事实表直接关联多张维度表,维度表不拆分,形如★ | 结构简单,仅1层JOIN,查询性能最优 | 维度表存在数据冗余 | 绝大多数数仓场景 |
| 雪花模式 | 星型扩展,维度表进一步规范化拆分,形如❄ | 数据冗余少,节省存储 | 多层JOIN,查询性能下降 | 维度层级复杂且存储敏感 |
| 星座模式 | 多张事实表共享同一套维度表 | 避免维度重复建设,口径统一 | 架构相对复杂 | 大型企业数仓 |
2.4 数仓建设全流程
📖 PPT原文定位:03 离线数仓建设实战 → 业务痛点与标准化建设全流程解析
PPT原文关键句 :
01 需求调研 | 02 数据源梳理 | 03 架构设计 | 04 模型设计 | 05 ETL开发 | 06 任务调度 | 07 数据应用
七大步骤:
| 步骤 | 名称 | 核心工作内容 | 产出物 |
|---|---|---|---|
| ① | 需求调研 | 与业务方深入沟通,明确分析场景,梳理核心指标体系 | 需求文档、指标清单 |
| ② | 数据源梳理 | 盘点业务数据库、日志文件、埋点数据 | 数据源清单 |
| ③ | 架构设计 | 设计分层架构(ODS/DWD/DWS/ADS),确定技术选型 | 架构设计文档 |
| ④ | 模型设计 | 采用维度建模,设计事实表和维度表 | ER图、模型设计文档 |
| ⑤ | ETL开发 | 编写脚本完成抽取-清洗-转换-装载 | 可运行的ETL脚本 |
| ⑥ | 任务调度 | 配置上下游依赖关系,设定调度周期 | 调度配置(DAG) |
| ⑦ | 数据应用 | 开发报表、驾驶舱、API接口 | 可视化看板、数据服务 |
第三部分:实时数仓
3.1 Lambda vs Kappa 架构
📖 PPT原文定位:04 实时计算 → 主流技术架构演进
PPT原文关键句 :
Lambda 架构:批流分离。数据同时进入"批处理层"(Hadoop)保证结果准确,和"速度层"(Storm)保证低延迟,最后合并结果。缺点:维护两套独立的代码逻辑,架构复杂,开发与运维成本高。
Kappa 架构:流批一体。抛弃批处理层,使用一套流处理引擎(如 Kafka + Flink)统一处理所有实时和离线数据。优势:大幅简化架构,只需维护一套代码,实现真正的"流批一体",是目前行业的主流选择。
详细对比表:
| 对比维度 | Lambda架构 | Kappa架构 |
|---|---|---|
| 核心理念 | 批流分离,两条独立链路 | 流批一体,一套引擎 |
| 链路组成 | 批处理层 + 速度层 + 服务层 | 仅速度层(流处理+历史回溯) |
| 代码维护 | 两套代码,逻辑需一致 | 一套代码,多处运行 |
| 架构复杂度 | 高 | 低 |
| 开发成本 | 高(双倍开发) | 低 |
| 运维成本 | 高(两套系统) | 低(一套系统) |
| 技术代表 | Hadoop + Storm/Spark Streaming | Kafka + Apache Flink |
| 行业趋势 | 逐步淘汰 | 当前主流 |
3.2 Flink SQL实时数仓构建流程
📖 PPT原文定位:06 基于Flink SQL构建实时数仓 → 案例简介与数据处理流程
PPT原文关键句 :
01 数据准备:Debezium + Kafka Connect捕获MySQL binlog,实时同步订单与用户变更数据到Kafka。
02 定义数据源表:使用Flink SQL DDL语句,将Kafka中订单、用户的主题映射为Flink可计算的表。
03 实时DWD层:对订单流做清洗过滤掉测试数据,并关联维度表补充用户画像信息,形成宽表。
04 实时DWS层:应用Tumbling Window(滚动窗口)进行分钟级聚合,计算GMV、订单量等汇总指标。
05 数据落地 (SINK):将聚合结果写入高性能列式数据库ClickHouse,确保毫秒级查询响应。
06 可视化展示:FineBI连接ClickHouse,拖拽生成实时大屏。
完整六步流程:
1 | ① 数据准备:业务DB → Debezium(CDC)→ Kafka Topic |
关键技术组件:
| 组件 | 职责 | 关键特征 |
|---|---|---|
| Debezium | MySQL binlog变更数据捕获(CDC) | 无侵入式,实时捕获 |
| Kafka | 高吞吐消息管道 | 连接生产和消费两端 |
| Apache Flink | 统一计算引擎 | 支持流处理和批处理 |
| ClickHouse | 列式OLAP数据库 | 毫秒级查询响应 |
| FineBI | BI可视化工具 | 拖拽生成实时大屏 |
3.3 实时数仓分层复用
📖 PPT原文定位:05 实时数仓建设核心 → 流批结合的Kappa架构与分层实践
PPT原文关键句 :
实时ODS:利用Flink CDC技术,无侵入捕获业务DB变更。
实时DWD:对ODS数据进行清洗、脱敏、标准化处理。
实时DWS:按主题聚合计算,生成宽表,直接赋能下游应用。
| 层级 | 实现方式 | 关键差异(相比离线) |
|---|---|---|
| 实时ODS | Flink CDC捕获binlog → Kafka | 数据在Kafka中流动,不落HDFS |
| 实时DWD | Flink SQL实时清洗、过滤、关联维度 | 窗口操作,基于事件时间处理乱序 |
| 实时DWS | Flink SQL流式聚合(滚动/滑动窗口) | 聚合结果持续更新,非一次性计算 |
| 实时ADS | 写入ClickHouse/Druid → 实时大屏 | 打破T+1限制,毫秒级延迟 |
第四部分:数据治理与质量
4.1 数据治理核心定义与四要素
📖 PPT原文定位:07 数据治理 → 数据治理之道
PPT原文关键句 :
核心定义:对数据资产管理行使权力和控制的活动集合。核心价值在于提高数据质量,降低因数据滥用或管理不善带来的业务与合规风险,并通过优化数据利用,最大化挖掘数据资产的商业与社会价值。
治理核心:建立一套完整的数据管理体系,将"人、制度、流程、技术"四大要素有机结合。
四要素框架:
| 要素 | 具体内容 |
|---|---|
| 组织保障 | 成立数据治理委员会,明确IT与业务部门的权责分工 |
| 制度建设 | 制定数据标准规范、质量规则、安全分级分类标准 |
| 流程规范 | 覆盖数据全生命周期(产生→采集→处理→存储→应用→销毁) |
| 工具支持 | 元数据管理平台、质量监控工具、数据血缘分析工具 |
4.2 数据质量五大维度
📖 PPT原文定位:08 数据质量建设 → 衡量标准与管理流程
PPT原文关键句 :
“垃圾进,垃圾出 (Garbage In, Garbage Out) —— 质量是数据的生命线”
详细内容:
| 维度 | 定义 | 衡量指标 | 实际案例 |
|---|---|---|---|
| 准确性 | 数据是否真实反映客观事实 | 错误率、偏差率 | 用户年龄25岁,实际也是25岁 |
| 完整性 | 数据记录是否完整,关键字段是否缺失 | 字段缺失率 | 10000条记录,手机号缺失50条 |
| 一致性 | 同一数据在不同系统/时间是否逻辑一致 | 跨表冲突数 | CRM和ERP状态均为"已激活" |
| 及时性 | 数据是否满足业务的时效性要求 | 数据延迟时间 | 实时推荐系统延迟<1秒 |
| 有效性 | 数据是否符合预定义格式、值域和业务规则 | 格式错误数 | 年龄在0-120之间 |
4.3 数据质量管理闭环流程
六步闭环:
1 | ① 质量规则定义 → ② 数据质量检查(监控) → ③ 问题发现与告警 |
第五部分:数仓规范建设
5.1 三大开发规范
📖 PPT原文定位:09 数仓规范建设指南 → 数仓公共开发规范
PPT原文关键句 :
代码规范:统一SQL编写标准,统一缩进、关键字大小写与注释格式,提升代码可读性,降低维护成本。
任务规范:规范任务命名、资源配置参数与上下游依赖管理逻辑,确保任务调度系统稳定、高效运行。
文档规范:强制要求所有物理表和关键字段添加清晰的中文注释,消除语义歧义,方便团队知识传承。
| 规范类型 | 核心内容 | 实际价值 |
|---|---|---|
| 代码规范 | 统一SQL缩进、关键字大小写、注释格式 | 提升可读性,降低维护成本 |
| 任务规范 | 统一任务命名、资源配置、依赖管理 | 确保调度系统稳定高效 |
| 文档规范 | 所有物理表和字段必须添加中文注释 | 消除语义歧义,方便知识传承 |
5.2 命名规范
📖 PPT原文定位:09 数仓规范建设指南 → 数仓命名规范示例
PPT原文关键句 :
数据库:dw_业务线标识 (如 dw_shop, dw_trade)
表名:层级_主题_内容_周期/类型 (示例:dwd_user_action_di 用户行为日增量明细)
字段:小写+下划线,见名知意 (示例:user_id, order_amount, create_time)
分区字段:统一标准,时间分区统一为 dt (日期),小时级分区为 hr。
| 命名对象 | 格式规范 | 示例 |
|---|---|---|
| 数据库/Schema | dw_业务线标识 |
dw_shop、dw_trade |
| 表名 | 层级_主题_内容_周期/类型 | dwd_user_action_di、dim_shop_info |
| 字段名 | 小写+下划线,见名知意 | user_id、order_amount |
| 分区字段 | 天级dt,小时级hr |
dt='2024-01-15' |
PART2 《分类算法与应用》要点解析
第一部分:分类问题基础概念
1.1 监督学习 vs 无监督学习
📖 PPT原文定位:分类问题简介 → 分类算法概述
PPT原文关键句 :
监督学习算法 - 就是我们教计算机如何做事情
无监督学习算法 - 在非监督学习中,我们将让计算机自己学习
详细对比:
| 对比维度 | 监督学习 | 无监督学习 |
|---|---|---|
| 数据特征 | 有标签(Label)数据,每个样本都有"正确答案" | 无标签数据,算法自主发现模式 |
| 核心目标 | 预测未知数据的标签 | 发现数据内在结构和规律 |
| 典型任务 | 分类、回归 | 聚类、降维、异常检测 |
| 评价方式 | 有明确标准答案,可用准确率等指标评估 | 主观性较强,需结合业务判断 |
| 生活类比 | 老师教学生做题并给答案 | 让学生自己总结规律 |
1.2 监督学习的两种类型:分类与回归
📖 PPT原文定位:分类问题简介 → 分类算法概述
PPT原文关键句 :
监督学习可分为:分类、回归
详细对比:
| 对比维度 | 分类(Classification) | 回归(Regression) |
|---|---|---|
| 输出类型 | 离散的类别标签(如:良性/恶性、猫/狗) | 连续的数值(如:房价、温度) |
| 任务本质 | 将样本映射到预定义的类别中 | 拟合一个函数来预测数值 |
| 典型算法 | KNN、决策树、朴素贝叶斯、SVM、逻辑回归 | 线性回归、岭回归、Lasso回归 |
| 典型问题 | “这个肿瘤是良性还是恶性?” | “明天温度是多少度?” |
| 评估指标 | 准确率、精确率、召回率、F1、AUC | MSE、RMSE、MAE、R² |
💡 PPT中的原话:“什么样的数据适合分类算法?考虑案例中的数据类型”
1.3 分类方法的定义
📖 PPT原文定位:分类问题简介 → 分类算法的定义
PPT原文关键句 :
分类分析是根据已知类别的训练集数据,建立分类模型,并利用该分类模型预测未知类别数据对象所属的类别。
核心要素拆解:
| 要素 | 含义 | 关键点 |
|---|---|---|
| 已知类别的训练集 | 已有标签的历史数据 | 监督学习的"监督"来源 |
| 建立分类模型 | 学习从特征到类别的映射关系 | 分类器(Classifier) |
| 预测未知数据 | 对新样本进行类别推断 | 模型的泛化能力是关键 |
1.4 分类方法的应用场景
📖 PPT原文定位:分类问题简介 → 分类方法的应用
PPT原文关键句 :
模式识别(Pattern Recognition):通过计算机用数学技术方法来研究模式的自动处理和判读
预测:从利用历史数据记录中自动推导出对给定数据的推广描述,从而能对未来数据进行类预测
典型应用场景:
| 应用领域 | 具体问题 | 分类类型 |
|---|---|---|
| 医疗诊断 | 肿瘤良性/恶性判断 | 二分类 |
| 金融风控 | 信用卡欺诈检测、信用评分 | 二分类 |
| 图像识别 | 手写数字识别(0-9) | 多分类(10类) |
| 文本分类 | 垃圾邮件识别、情感分析 | 二分类/多分类 |
| 电商 | 用户购买意愿预测 | 二分类 |
1.5 分类器的构建标准
📖 PPT原文定位:分类问题简介 → 分类器的构建标准
PPT原文关键句 :
预测的准确率:模型正确预测新数据的类编号的能力
速度:产生和使用模型的计算花销
健壮性:给定噪声数据或有空缺值的数据,模型正确预测的能力
可伸缩性:对大量数据,有效的构建模型的能力
可解释性:学习模型提供的理解和洞察的层次
五大标准详细解读:
| 标准 | 含义 | 算法对比 |
|---|---|---|
| 准确率 | 模型预测的正确程度 | 决策树、SVM准确率高;KNN受K值影响 |
| 速度 | 训练和预测的时间开销 | KNN训练快但预测慢;SVM训练慢但预测快 |
| 健壮性 | 对噪声和缺失值的容忍度 | 决策树对噪声敏感;随机森林较健壮 |
| 可伸缩性 | 处理大数据量的能力 | KNN在大数据量下效率低;SVM可处理高维数据 |
| 可解释性 | 模型是否容易理解 | 决策树可解释性强;SVM可解释性弱 |
第二部分:常见分类数据集
2.1 鸢尾花数据集(Iris Dataset)
📖 PPT原文定位:常见的分类数据集 → 鸢尾花数据集 load_iris()
PPT原文关键句 :
iris 数据集包含 150 个样本,每行数据包含每个样本的四个特征和样本的类别信息,是一个 150 行 5 列的二维表。
特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度
类别(target):山鸢尾(0)、变色鸢尾(1)、维吉尼亚鸢尾(2)
详细数据说明:
| 属性 | 说明 | 数据类型 |
|---|---|---|
| 样本数 | 150个 | - |
| 特征数 | 4个(花萼长度、花萼宽度、花瓣长度、花瓣宽度) | 连续数值型(cm) |
| 类别数 | 3个(Setosa、Versicolour、Virginica) | 多分类 |
| 输入变量 | 4个 | X(特征矩阵 150×4) |
| 输出变量 | 1个(target/label) | y(目标向量 150×1) |
加载代码:
1 | from sklearn import datasets |
💡 考点:iris.target 用 0、1、2 三个整数分别代表三个花的品种
2.2 手写数字数据集(Digits Dataset)
📖 PPT原文定位:常见的分类数据集 → 手写数字数据集 load_digits()
PPT原文关键句 :
手写数字数据集包括 1797 个 0-9 的手写数字数据,每个数字由 8×8 大小的矩阵构成,矩阵中值的范围是 0-16,代表颜色的深度。
详细数据说明:
| 属性 | 说明 |
|---|---|
| 样本数 | 1797个 |
| 特征数 | 64个(8×8像素矩阵展开) |
| 类别数 | 10类(数字0-9) |
| 特征值范围 | 0-16(颜色深度) |
参数说明:
| 参数 | 作用 |
|---|---|
return_X_y=True |
以 (data, target) 形式返回数据 |
return_X_y=False(默认) |
以字典形式返回全部信息 |
n_class |
限制返回的类别数,如 n_class=5 只返回0-4 |
2.3 MNIST手写体数据集
📖 PPT原文定位:常见的分类数据集 → MNIST手写体数据集
PPT原文关键句 :
训练样本:共60000个;其中55000个用于训练,另外5000个用于验证
测试样本:共10000个
所有数字图像已经进行尺寸归一化、数字居中处理,固定尺寸为 28×28 像素
数据集划分说明:
| 数据集 | 数量 | 用途 |
|---|---|---|
| 训练集 | 60,000张 | 其中55,000张用于训练,5,000张用于验证 |
| 测试集 | 10,000张 | 评估最终模型的准确度 |
| 图像尺寸 | 28×28像素 | 已归一化和居中处理 |
2.4 乳腺癌数据集(Breast Cancer Dataset)
📖 PPT原文定位:常见的分类数据集 → 乳腺癌数据集
PPT原文关键句 :
乳腺癌数据集共有 569 个样本、30 个输入变量和 2 个分类
30个特征属性和2个分类目标(恶性-Malignant,良性-Benign)
目标分类分布:212-恶性(Malignant),357-良性(Benign)
详细数据说明:
| 属性 | 说明 |
|---|---|
| 样本数 | 569个 |
| 特征数 | 30个数值型特征 |
| 类别数 | 2类(恶性/良性) |
| 数据来源 | UCI威斯康辛州乳腺癌数据集 |
| 创建时间 | 1995年11月 |
30个特征的构成:
- 10个不同细胞核特征的 均值(mean)
- 10个不同细胞核特征的 标准差(std)
- 10个不同细胞核特征的 最差值(worst/最大值)
10个细胞核特征包括:
- radius(半径)
- texture(质地)
- perimeter(周长)
- area(面积)
- smoothness(光滑度)
- compactness(致密性)
- concavity(凹度)
- concave points(凹点)
- symmetry(对称性)
- fractal dimension(分形维数)
💡 考点:特征与细胞核的形状和大小有关
1 | from sklearn.datasets import load_breast_cancer |
2.5 IMDB电影评论数据集
📖 PPT原文定位:常见的分类数据集 → IMDB电影评论数据集
PPT原文关键句 :
数据集包含 50,000 个 IMDB 电影评论,专门用于情绪分析
评论的情绪是二元的:IMDB评级<5 → 情绪评分0;评级≥7 → 情绪评分1
数据划分说明:
| 数据文件 | 说明 |
|---|---|
labeledTrainData |
训练数据集 |
testData |
测试数据集 |
unlabeledTrainData |
额外的没有标注的数据集 |
sampleSubmission |
提交文件的样例 |
第三部分:K近邻算法(KNN)
3.1 KNN算法核心思想
📖 PPT原文定位:K近邻算法 → KNN算法
PPT原文关键句 :
K近邻(K Nearest Neighbors,KNN)算法的思想是寻找与待分类的样本在特征空间中距离最近的K个已标记样本(即K个近邻),以这些样本的标记为参考,通过投票等方式,将占比例最高的类别标记赋给待标记样本。
核心三要素:
- K值(选择多少个近邻)
- 距离度量(如何计算样本间距离)
- 分类决策规则(如何综合K个近邻的标签)
3.2 KNN算法执行步骤
📖 PPT原文定位:K近邻算法 → KNN分类器算法
PPT原文关键句 :
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。
五步流程图:
1 | 新样本 → 计算到所有训练样本的距离 → 按距离排序 → 取前K个 → 投票 → 预测类别 |
3.3 K值选择的影响
📖 PPT原文定位:K近邻算法 → KNN分类器算法
PPT原文关键句 :
K值过小时,只有少量的训练样本对预测起作用,容易发生过拟合,或者受含噪声训练数据的干扰导致错误
K值过大,过多的训练样本对预测起作用,当不同类别样本数量不均衡时,结果偏向数量占优的样本
K值影响详解:
| K值 | 效果 | 问题 | 类比 |
|---|---|---|---|
| K值过小 | 模型复杂,决策边界曲折 | 过拟合,对噪声敏感 | 只问身边1个人意见,容易被误导 |
| K值过大 | 模型简单,决策边界平滑 | 类别不平衡时偏向多数类 | 问了太多人,被多数人意见淹没 |
选择方法:交叉验证(Cross Validation)
3.4 KNN算法特点总结
| 维度 | 说明 |
|---|---|
| 训练阶段 | 几乎不耗时,只存储训练数据(懒惰学习 Lazy Learning) |
| 预测阶段 | 需要计算到所有训练样本的距离,耗时 |
| 优点 | 简单、直观、无需训练 |
| 缺点 | 预测慢、对维度灾难敏感、需要确定K值 |
| 适用场景 | 样本量适中、特征维度较低的分类任务 |
3.5 KNN手写实现代码要点
📖 PPT原文定位:【案例】使用Python实现KNN
关键函数结构:
1 | def distance(k, X_train, Y_train, x): |
💡 考点:
assert语句的作用(参数校验)- 欧氏距离计算公式:
sqrt(np.sum((x_train - x)**2))np.argsort()的作用(返回排序后的索引)Counter().most_common(1)[0][0]的作用(投票取众数)
第四部分:朴素贝叶斯算法
4.1 贝叶斯定理基础
📖 PPT原文定位:概率模型 → 几个重要的公式
PPT原文关键句 :
条件概率公式:P(A|B) = P(AB) / P(B)
全概率公式:P(B) = P(A₁)P(B|A₁) + P(A₂)P(B|A₂) + …
贝叶斯公式:P(Aᵢ|B) = P(Aᵢ)P(B|Aᵢ) / ∑P(Aⱼ)P(B|Aⱼ)
贝叶斯要解决的问题(PPT原话):
正向概率:假设袋子里有N个白球,M个黑球,随机摸一个,摸出黑球的概率有多大
逆向概率:如果事先不知道袋子里黑白球的比例,随机摸出几个球,根据这些球的颜色,可以推测袋子里面的黑白球比例
核心区别:
| 类型 | 已知条件 | 要求解的问题 |
|---|---|---|
| 正向概率 | 总体分布已知 | 计算某个事件发生的概率 |
| 逆向概率 | 观察到事件发生 | 推断总体分布/参数 |
4.2 朴素贝叶斯核心思想
📖 PPT原文定位:朴素贝叶斯算法 → 朴素贝叶斯分类器
PPT原文关键句 :
"朴素"指的是条件的独立性
朴素贝叶斯分类方法是一种具有最小错误率的概率分类方法,可用于分类和预测。
核心假设:
给定类别标签Y,所有特征之间互不影响,相互独立
朴素贝叶斯分类流程:
1 | 设 x={a₁, a₂, a₃, ..., aₘ} 为待分类项 |
4.3 朴素贝叶斯"嫁不嫁"案例
📖 PPT原文定位:朴素贝叶斯算法 → 朴素贝叶斯案例
PPT原文关键句 :
p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁) × p(性格不好|嫁) × p(身高矮|嫁) × p(不上进|嫁)
计算步骤:
- 统计训练数据中各特征的条件概率
- 利用"朴素"假设(条件独立)计算联合概率
- 比较 P(嫁|特征) 与 P(不嫁|特征)
- 选择概率更大的类别作为预测结果
案例计算公式:
1 | P(嫁|不帅,性格不好,身高矮,不上进) |
💡 考点:"朴素"的含义是条件独立性假设,这使得联合概率可以拆分为各特征条件概率的乘积
4.4 特征属性类型的处理
📖 PPT原文定位:朴素贝叶斯算法 → 讨论P(a|y)的估计
离散值特征:
- 直接使用频率估计概率
连续值特征:
当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)
| 特征类型 | 适用模型 | 说明 |
|---|---|---|
| 离散值 | 多项式朴素贝叶斯(MultinomialNB) | 适用于计数/频率特征 |
| 连续值(正态分布) | 高斯朴素贝叶斯(GaussianNB) | 假设特征服从正态分布 |
| 二值特征 | 伯努利朴素贝叶斯(BernoulliNB) | 适用于0/1布尔特征 |
4.5 Laplace校准(拉普拉斯平滑)
📖 PPT原文定位:朴素贝叶斯算法 → 讨论P(a|y)=0的估计
PPT原文关键句 :
当某个类别下某个特征项划分没有出现时,P(a|y)=0,这会令分类器质量大大降低
为了解决这个问题,我们引入Laplace校准
原因: 如果某个条件概率为0,则整个后验概率为0,无法进行分类
解决方法: 在分子上加1(或其他常数),分母上加上类别数
1 | # 高斯朴素贝叶斯加载示例 |
4.6 朴素贝叶斯优缺点总结
| 维度 | 说明 |
|---|---|
| 优点 | 简单高效、对缺失数据不敏感、多分类支持好 |
| 缺点 | 条件独立性假设过强(与"朴素"的代价)、对特征分布假设敏感 |
| 适用场景 | 文本分类(垃圾邮件检测)、情感分析、高维数据分类 |
第五部分:决策树算法
5.1 决策树核心思想
📖 PPT原文定位:集成学习 → 决策树
PPT原文关键句 :
决策树(Decision Tree)利用树结构进行决策,每一个非叶节点是一个判断条件,每一个叶子节点是结论,从根节点开始,经过多次判断得出结论。
决策树结构:
| 节点类型 | 含义 | 示例 |
|---|---|---|
| 根节点 | 树的起始,第一个判断条件 | “长相帅不帅?” |
| 内部节点 | 中间判断条件 | “收入高不高?” |
| 叶节点 | 最终结论/类别 | “见” 或 “不见” |
5.2 决策树案例(约会决策)
📖 PPT原文定位:集成学习 → 决策树案例
PPT原文关键句 :
女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员
决策路径:
1 | 年龄 < 30? → 长相中等以上? → 公务员?/高收入? → 见/不见 |
5.3 决策树构造:分裂属性选择
📖 PPT原文定位:集成学习 → 决策树模型构造
PPT原文关键句 :
决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。关键步骤是分裂属性。
分裂属性的目标是让各个分裂子集尽可能地"纯"。
5.4 熵与信息增益(ID3算法核心)
📖 PPT原文定位:集成学习 → ID3算法
PPT原文关键句 :
熵是表示随机变量不确定性的度量,白话称为物体内部的混乱程度。
A集合[1,1,1,2,2]的熵值要低;B集合[1,2,3,4,5]的熵值要高
ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
熵的计算公式:
Entropy(D) = -∑ pᵢ · log₂(pᵢ)
其中 pᵢ 表示第i个类别在整个训练元组中出现的概率
信息增益的计算:
Gain(D, A) = Entropy(D) - ∑ (|Dᵥ|/|D|) · Entropy(Dᵥ)
5.5 ID3算法案例
📖 PPT原文定位:集成学习 → ID3算法案例
PPT原文关键句 :
因为F(好友密度)具有最大的信息增益,所以第一次分裂选择F为分裂属性。
案例结论:
- 日志密度(L)信息增益:0.276
- 好友密度(F)信息增益:0.553(最大,首选分裂属性)
- 真实头像(H)信息增益:0.033
5.6 决策树三种算法对比
| 算法 | 分裂准则 | 分支类型 | 特征类型 |
|---|---|---|---|
| ID3 | 信息增益 | 多分支 | 仅离散值 |
| C4.5 | 信息增益比 | 多分支 | 离散+连续 |
| CART | Gini系数 | 二叉分支 | 离散+连续 |
5.7 决策树优缺点总结
| 维度 | 说明 |
|---|---|
| 优点 | 可解释性强、可处理数值型和类别型特征、无需特征缩放 |
| 缺点 | 容易过拟合、对数据噪声敏感、不稳定(数据微小变化可能导致树结构大变) |
| 剪枝方法 | 预剪枝(提前停止)、后剪枝(先建树再剪) |
第六部分:支持向量机(SVM)
6.1 SVM核心思想
📖 PPT原文定位:支持向量机 → 支持向量机概述
PPT原文关键句 :
线性可分、最大间隔超平面与支持向量
核心概念:
| 概念 | 含义 |
|---|---|
| 超平面 | 高维空间中划分不同类别的决策边界 |
| 最大间隔 | 超平面到两侧最近样本点的距离最大化 |
| 支持向量 | 距离分类超平面最近的样本点,直接决定超平面的位置 |
6.2 SVM优势与缺点
📖 PPT原文定位:支持向量机 → 支持向量机概述
PPT原文关键句 :
优势:在高维空间中非常高效;即使在数据维度比样本数量大的情况下仍然有效;在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的。
缺点:如果特征数量比样本数量大得多,在选择核函数时要避免过拟合;正则化项非常重要;不直接提供概率估计。
详细总结:
| 维度 | 说明 |
|---|---|
| 优势1 | 高维空间高效 |
| 优势2 | 维度 > 样本数时仍有效 |
| 优势3 | 仅使用支持向量(训练集子集),内存效率高 |
| 缺点1 | 高维时需注意过拟合 |
| 缺点2 | 正则化项很重要 |
| 缺点3 | 不直接提供概率估计(需交叉验证计算) |
6.3 核函数(Kernel Function)
📖 PPT原文定位:支持向量机 → SVM核函数
核函数的作用:
将低维空间中线性不可分的数据,映射到高维特征空间使其线性可分
常用核函数:
| 核函数 | 特点 | 适用场景 |
|---|---|---|
| 线性核(Linear) | 计算最快 | 线性可分场景 |
| 多项式核(Poly) | 适合多项式分布数据 | 中等复杂度 |
| 高斯核(RBF) | 最常用 | 绝大多数非线性场景 |
6.4 SVM代码实现
分类:
1 | from sklearn import svm |
回归(SVR):
1 | clf = svm.SVR() |
第七部分:集成学习
7.1 集成学习核心思想
📖 PPT原文定位:集成学习 → 集成模型
PPT原文关键句 :
集成学习本身并不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务,以达到获得比单个学习器更好的学习效果的一种机器学习方法。
高端点的说叫"博彩众长",庸俗的说叫"三个臭皮匠,顶个诸葛亮"。
核心原理:
生成一组个体学习器,然后采用某种策略将它们结合起来
7.2 Bagging vs Boosting
📖 PPT原文定位:集成学习 → 集成学习的方法
PPT原文关键句 :
Boosting是个体学习器之间存在着强依赖关系,必须串行生成的序列化方法
Bagging是个体学习器之间没有强依赖关系,可同时并行生成
详细对比:
| 对比维度 | Bagging | Boosting |
|---|---|---|
| 训练方式 | 并行,独立训练 | 串行,后一个依赖前一个 |
| 样本选择 | 有放回随机采样(Bootstrap) | 动态调整样本权重(错分样本权重↑) |
| 模型权重 | 所有预测函数权重相等 | 分类误差小的分类器权重更大 |
| 核心目标 | 降低方差(缓解过拟合) | 降低偏差(提升拟合能力) |
| 代表算法 | 随机森林 | AdaBoost、GBDT |
7.3 随机森林(Random Forest)
📖 PPT原文定位:集成学习 → 随机森林
PPT原文关键句 :
随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定
通过在分类器构造中引入随机性来创建一组不同的分类器
双重随机性:
| 随机性 | 说明 |
|---|---|
| 样本随机 | Bootstrap有放回抽样,每棵树的训练集不同 |
| 特征随机 | 节点分裂时,只考虑特征的随机子集 |
生成算法:
- 从样本集中通过重采样(Bootstrap)产生n个样本
- 对n个样本选择a中的k个特征(特征随机),建立决策树
- 重复m次,产生m棵决策树
- 多数投票机制进行预测
随机森林优势(PPT原话):
几乎不需要输入的准备
能完成隐含特征的选择,并且提供一个很好的特征重要度的选择指标
训练速度快
通用性:可以应用于分类、回归、聚类
简洁性:基本的随机森林学习算法仅用几行代码就可以写出来了
7.4 AdaBoost算法
📖 PPT原文定位:集成学习 → AdaBoost
PPT原文关键句 :
AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
通过改变数据分布来实现:根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。
迭代过程:
1 | 弱学习器1(初始权重)→ 评估误差 → 更新样本权重(错分样本权重↑) |
AdaBoost优点(PPT原话):
可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象
不需要弱分类器的先验知识
自适应地调整假定的错误率,执行的效率高
AdaBoost缺点(PPT原话):
会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致AdaBoost算法易受噪声干扰
依赖于弱分类器,而弱分类器的训练时间往往很长
7.5 集成学习算法选型建议
| 场景 | 推荐算法 | 原因 |
|---|---|---|
| 高维数据、通用场景 | 随机森林 | 稳定、抗过拟合、易用 |
| 追求极致精度 | GBDT/XGBoost | 精度高,竞赛首选 |
| 对噪声敏感的数据 | 随机森林 | Boosting对噪声敏感 |
| 需要快速基线模型 | 随机森林 | 调参简单,训练快 |
第八部分:分类模型评估指标
8.1 分类 vs 回归评估指标
📖 PPT原文定位:K近邻算法 → 分类、回归、聚类不同的评判指标
PPT原文关键句 :
分类算法中,常用的性能指标有:准确率(Accuracy)、AUC(Area Under Curve)
回归分析中,常用的性能指标有:均方误差(mean_squared_error)、可析方差得分(explained_variance_score)
8.2 混淆矩阵基础
混淆矩阵结构:
| 预测为正类 | 预测为负类 | |
|---|---|---|
| 实际为正类 | TP(真正例) | FN(假负例) |
| 实际为负类 | FP(假正例) | TN(真负例) |
8.3 核心指标计算公式
| 指标 | 公式 | 含义 |
|---|---|---|
| 准确率(Accuracy) | (TP+TN)/(TP+TN+FP+FN) | 整体预测正确的比例 |
| 精确率(Precision) | TP/(TP+FP) | 预测为正类中的正确比例 |
| 召回率(Recall) | TP/(TP+FN) | 正类中被正确识别的比例 |
| F1-Score | 2×P×R/(P+R) | 精确率与召回率的调和平均 |
8.4 ROC与AUC
PPT原文关键句 :
AUC(Area Under Curve):曲线下的面积
ROC曲线:
- 横轴:FPR(假阳性率) = FP/(FP+TN)
- 纵轴:TPR(真阳性率/召回率) = TP/(TP+FN)
AUC解读:
- AUC越接近1,模型性能越好
- AUC=0.5 相当于随机猜测
- 对类别不平衡不敏感,是分类评估的重要指标
8.5 交叉验证(Cross Validation)
📖 PPT原文定位:K近邻算法 → 基于k近邻算法实现分类任务
PPT原文关键句 :
交叉验证 (Cross validation)
意义:
- 评估模型泛化能力
- 避免过拟合
- 利用全部数据进行训练和验证
第九部分:模型保存与加载(实操考点)
📖 PPT原文定位:K近邻算法 → sklearn库的框架
PPT原文关键句 :
joblib.dump(knn, ‘filename.pkl’)
标准机器学习流程:
1 | # 1. 划分数据集 |
第十部分:各算法对比总结
| 算法 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| KNN | 投票表决 | 简单直观、无训练过程 | 预测慢、对维度敏感 | 小样本、低维分类 |
| 朴素贝叶斯 | 贝叶斯定理+条件独立 | 简单高效、多分类好 | 条件独立假设过强 | 文本分类 |
| 决策树 | 树形递归划分 | 可解释性强 | 容易过拟合 | 规则提取 |
| SVM | 最大间隔超平面 | 高维有效、鲁棒 | 参数敏感、可解释性弱 | 高维分类 |
| 随机森林 | Bagging+决策树 | 稳定、抗过拟合 | 模型较大、可解释性弱 | 通用首选 |
| AdaBoost | 串行提升错分样本权重 | 精度高 | 对噪声敏感 | 二分类问题 |
