本章学习目标:
- 理解分类的本质:预测一个离散的类别
- 掌握逻辑回归、决策树分类、随机森林分类的基本思想
- 掌握分类模型的核心评估指标(准确率、精确率、召回率、F1、混淆矩阵、ROC-AUC)
- 核心能力:知道什么时候用分类、如何评估分类模型好坏
一、分类是什么?
1.1 分类的定义
分类 是一种监督学习算法,用于预测数据属于哪个类别。
| 对比维度 | 回归 | 分类 |
|---|---|---|
| 预测输出 | 数字(连续) | 标签(离散) |
| 输出形式 | "65000元" | "会流失/不会流失" |
| 问题类型 | "是多少?" | "是哪一类?" |
1.2 分类能解决什么问题?
| 业务场景 | 分类应用 | 输出 |
|---|---|---|
| 银行 | 判断是否批准贷款 | 批准 / 拒绝 |
| 营销 | 预测用户是否会响应活动 | 会响应 / 不会响应 |
| 风控 | 识别欺诈交易 | 欺诈 / 正常 |
| 客服 | 工单自动分类 | 投诉 / 咨询 / 售后 |
| 医疗 | 辅助诊断 | 患病 / 健康 |
1.3 分类的类型
| 类型 | 定义 | 例子 |
|---|---|---|
| 二分类 | 只有两个类别 | 流失/不流失、垃圾邮件/正常邮件 |
| 多分类 | 三个及以上类别 | 手写数字识别(0-9)、新闻分类 |
本章聚焦最常用的二分类问题。
1.4 一个生活化的例子:邮件分类
输入(特征) 输出(类别)
发件人:unknown@xxx.com →
邮件中包含"中奖"一词 → 模型 → 垃圾邮件
邮件中包含"免费"一词 →
有可疑链接 →
这就是一个二分类问题:垃圾邮件 vs 正常邮件。
二、逻辑回归
2.1 为什么叫"逻辑回归"?
这个名字容易让人困惑------它叫"回归",但做的是分类。
关键理解:逻辑回归先计算一个"可能性分数"(0到1之间的连续值),然后根据这个分数决定类别。
2.2 逻辑回归的核心思想
一句话概括:计算一个"是"的概率(0到1之间),概率大于0.5就归为正类,小于0.5归为负类。
工作原理(三步走):
| 步骤 | 说明 | 二手车例子的类比 |
|---|---|---|
| 1. 线性组合 | 把特征加权求和 | 分数 = 1.2×车龄 + 0.8×里程 + ... |
| 2. 转换为概率 | 用Sigmoid函数压缩到0-1之间 | 分数100 → 概率0.95 |
| 3. 分类决策 | 概率大于0.5 → 正类 | 概率0.95 > 0.5 → "会流失" |
2.3 逻辑回归的输出解读
输出形式:概率值(0到1之间)。
| 输出概率 | 含义 |
|---|---|
| 0.95 | 95%的把握是正类 |
| 0.60 | 60%的把握是正类 |
| 0.30 | 30%的把握是正类(即70%把握是负类) |
业务价值:概率比单纯的"是/否"更有价值------你可以排序、设置不同阈值。
2.4 逻辑回归的优缺点
| 优点 | 缺点 |
|---|---|
| 输出概率,可解释性强 | 只能学习线性决策边界 |
| 简单快速,不易过拟合 | 对非线性关系效果差 |
| 特征重要性可解释 | 需要特征独立 |
| 工业界应用广泛 | --- |
2.5 什么时候用逻辑回归?
| 适合 | 不适合 |
|---|---|
| 需要解释"为什么" | 存在明显的非线性关系 |
| 二分类基线模型 | 特征高度相关 |
| 快速验证 | 类别极度不平衡 |
三、决策树分类
3.1 核心思想
和回归树一样,只是叶子节点输出类别(而不是数值)。
分类示例:
所有用户
│
┌───────────┴───────────┐
│ 活跃天数 > 5天? │
│ │
是 ↓ ↓ 否
┌─────┐ ┌─────┐
│活跃用户│ │不活跃用户│
└──┬──┘ └──┬──┘
│ │
┌────┴────┐ ┌────┴────┐
│消费>100元?│ │注册>30天?│
│ │ │ │
是 ↓ ↓ 否 是 ↓ ↓ 否
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│高价值│ │中价值│ │潜在 │ │流失 │
│ 用户│ │ 用户│ │ 用户│ │ 用户│
└─────┘ └─────┘ └─────┘ └─────┘
流失预测 激活策略
3.2 决策树分类的优缺点
| 优点 | 缺点 |
|---|---|
| 规则清晰,业务可理解 | 容易过拟合 |
| 可处理非线性关系 | 对数据微小变化敏感 |
| 无需特征缩放 | 类别不平衡时表现差 |
四、随机森林分类
4.1 核心思想
和回归森林一样:多棵决策树投票决定类别。
┌─────┐
树1 ───→│ 流失 │
├─────┤
树2 ───→│ 正常 │ ──→ 投票 ──→ 最终结果:流失(3票对2票)
├─────┤
树3 ───→│ 流失 │
├─────┤
树4 ───→│ 正常 │
├─────┤
树5 ───→│ 流失 │
└─────┘
4.2 随机森林分类的优缺点
| 优点 | 缺点 |
|---|---|
| 预测精度高 | 可解释性差 |
| 不容易过拟合 | 训练慢 |
| 输出特征重要性 | 内存占用大 |
| 处理非线性 | 类别不平衡需特殊处理 |
五、分类模型评估指标
5.1 核心问题:准确率够用吗?
准确率不一定是好的评估指标,尤其是在不平衡数据下。
一个极端例子:
- 1000个用户,20个流失(2%流失率)
- 一个"傻瓜模型"把所有用户都预测为"不流失"
- 准确率 = 980/1000 = 98%!
结论:准确率98%看起来很厉害,但这个模型完全没有识别出任何一个流失用户。我们需要更全面的评估指标。
5.2 混淆矩阵 ------ 所有指标的基础
真实情况
正类 负类
┌─────┬─────┐
预测正类 │ TP │ FP │
├─────┼─────┤
预测负类 │ FN │ TN │
└─────┴─────┘
| 缩写 | 全称 | 含义 | 流失预测例子 |
|---|---|---|---|
| TP | True Positive | 预测正确------正类 | 预测会流失,真的流失了 ✅ |
| TN | True Negative | 预测正确------负类 | 预测不会流失,真的没流失 ✅ |
| FP | False Positive | 预测错误------误报 | 预测会流失,实际没流失 ❌ |
| FN | False Negative | 预测错误------漏报 | 预测不会流失,实际流失了 ❌ |
5.3 四个核心指标
| 指标 | 公式 | 问的问题 | 流失预测例子 |
|---|---|---|---|
| 准确率 | (TP+TN)/(TP+TN+FP+FN) | 所有预测中,多少对了? | 98% |
| 精确率 | TP/(TP+FP) | 预测会流失的人中,多少真的流失了? | 80% |
| 召回率 | TP/(TP+FN) | 真正流失的人中,我抓住了多少? | 60% |
| F1分数 | 2×P×R/(P+R) | 精确率和召回率的调和平均 | 68% |
5.4 精确率 vs 召回率 ------ 业务视角
这是一个权衡(Trade-off)。
| 场景 | 更看重什么 | 为什么 |
|---|---|---|
| 欺诈检测 | 召回率 | 宁可误报几个正常交易,也不能漏掉欺诈 |
| 垃圾邮件过滤 | 精确率 | 宁可漏掉几封垃圾邮件,也不能把正常邮件归为垃圾 |
| 流失预警 | 召回率 | 宁可误报,也要抓住真正要流失的用户 |
| 疾病筛查 | 召回率 | 宁可误诊,也不能漏掉患者 |
5.5 ROC曲线和AUC
混淆矩阵和上面的指标依赖一个"阈值"选择。不同阈值会得到不同的精确率/召回率。
ROC曲线:展示模型在所有阈值下的表现------真正率(TPR) vs 假正率(FPR)。
| 曲线特征 | 含义 |
|---|---|
| 曲线下的面积(AUC) | 数值越大(越接近1),模型越好 |
| AUC = 0.5 | 跟瞎猜没区别 |
| AUC > 0.7 | 一般可用 |
| AUC > 0.8 | 良好 |
| AUC > 0.9 | 优秀 |
业务价值 :AUC不依赖阈值选择,是衡量模型排序能力的综合指标。
六、分类算法对比总结
| 对比维度 | 逻辑回归 | 决策树 | 随机森林 |
|---|---|---|---|
| 核心思想 | 计算概率 | 层层切分 | 多棵树投票 |
| 可解释性 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| 预测精度 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 过拟合风险 | 低 | 高 | 低 |
| 非线性处理 | 否 | 是 | 是 |
| 类别不平衡 | 一般 | 差 | 一般(可用class_weight) |
如何选择?
| 你的需求 | 推荐算法 |
|---|---|
| 快速基线,需要可解释 | 逻辑回归 |
| 业务需要清晰规则 | 决策树 |
| 追求最高精度 | 随机森林 |
七、实战案例:客户流失预测预览
7.1 问题定义
电信运营商希望预测哪些客户可能会流失,以便提前干预。
| 项目 | 内容 |
|---|---|
| 问题类型 | 二分类 |
| 标签 | 是否流失(是/否) |
| 特征 | 使用时长、月费、套餐类型、投诉次数等 |
7.2 模型训练与评估
| 模型 | 准确率 | 精确率 | 召回率 | AUC |
|---|---|---|---|---|
| 逻辑回归 | 0.82 | 0.65 | 0.55 | 0.78 |
| 随机森林 | 0.85 | 0.72 | 0.62 | 0.84 |
7.3 业务应用
输出:每个用户的流失概率,例如:
| 用户 | 流失概率 | 干预策略 |
|---|---|---|
| 用户A | 0.92 | 赠送优惠券,专属客服回访 |
| 用户B | 0.65 | 推送满意度调查,了解问题 |
| 用户C | 0.18 | 暂不干预 |
八、如何向AI描述分类建模需求
| 你的需求 | 你应该这样告诉AI |
|---|---|
| 训练模型 | "用随机森林训练一个客户流失预测分类模型" |
| 评估模型 | "输出混淆矩阵、精确率、召回率、F1、AUC" |
| 不平衡处理 | "数据中流失用户只占5%,用class_weight处理不平衡" |
| 输出概率 | "输出每个用户的流失概率,按概率从高到低排序" |
| 对比模型 | "同时训练逻辑回归和随机森林,对比它们的AUC" |
九、本章总结
分类核心概念速记
| 概念 | 一句话 |
|---|---|
| 分类 | 预测"是哪一类" |
| 逻辑回归 | 先算概率,再定类别 |
| 混淆矩阵 | 评估的基础 |
| 精确率 | 预测为正的里面,有多少是对的 |
| 召回率 | 真正的正例里面,抓到了多少 |
| F1 | 精确率和召回率的调和平均 |
| AUC | 模型排序能力(不依赖阈值) |
评估指标选择速记
| 场景 | 看什么 |
|---|---|
| 快速汇报 | 准确率(如果数据平衡) |
| 欺诈/流失预警 | 召回率 |
| 垃圾邮件过滤 | 精确率 |
| 模型综合比较 | AUC |
核心心法
"分类问题中,准确率往往是最具欺骗性的指标。在不平衡数据上,一定要看精确率、召回率和AUC。"
十、思考题
-
一个刷脸门禁系统,目标是"只有本人才能进入"。你希望这个系统精确率高还是召回率高?为什么?
-
一个罕见病筛查模型,发病率仅为0.1%。如果模型准确率达到99.9%,你觉得这个模型好吗?为什么?
-
流失预测模型中,召回率=80%,精确率=30%。如果成本允许,你会把这个模型用于实际营销吗?为什么?
-
逻辑回归和决策树,哪个更可能捕捉到"青年用户+高消费+低活跃度"这种组合规则?为什么?
-
某模型AUC=0.95,另一个模型AUC=0.85。你能说第一个模型一定比第二个好吗?还需要考虑什么?
下一节预告:7.4 聚类 ------ 发现自然分组 ------ 当没有"正确答案"时,如何让数据自己说话,发现隐藏的用户群体?