整体知识链路: 项目全流程 → 单模型(决策树)→ 无监督算法(PCA 降维、K-Means 聚类)→ 集成学习(多模型融合提升效果)→ 模型拟合与调优避坑,配套熵、迭代、拟合底层理论辅助理解。
一、标准化机器学习完整项目流程
5 大阶段
- 需求拆解
- 确定输入输出:原始数据无法直接使用则做特征工程(离散编码、连续特征标准化)
- 区分任务:输出连续值 = 回归;输出离散类别 = 分类
- 数据集搭建 制定数据规范、标准化采集、增加质量校验,保证数据可靠性
- 模型选择与训练 多类算法对比训练,完成特征 X 到标签 y 的映射
- 模型部署 两种方式:代码内直接调用、封装 HTTP API 对外提供服务
- 持续迭代优化 线上采集真实业务数据,定期重训更新模型适配数据分布变化
配套算法选择速查表
| 任务类型 | 首选算法 | 适用场景 |
|---|---|---|
| 分类 | 随机森林、XGBoost | 表格业务数据、需要输出特征重要性 |
| 回归 | 线性回归、随机森林回归 | 销量、房价等连续数值预测 |
| 无监督聚类 | K-Means | 用户分群、数据分组探索 |
| 高维降维 | PCA | 减少特征、数据可视化、加速训练 |
| 海量流式数据 | SGD 在线学习 | 实时持续流入数据场景 |
二、监督单模型:决策树(整合熵理论)
1. 核心结构与原理
树形白盒模型,由根节点、内部决策节点、叶子预测节点构成;递归分割数据集,目标是不断提升子集纯度。
- 分类任务:分割后子集类别更统一(纯度高)
- 回归任务:分割后子集数值方差更小
2. 3 种节点分裂评判标准
(1)信息熵(ID3):衡量系统混乱度
\(H(D)=-\sum_{i=1}^{N} p_{i} log_2\left(p_{i}\right)\)
- 逻辑:样本全部同一类→熵极低;各类均匀分布→熵极高;信息增益 = 原熵 - 分割后加权熵,选增益最大特征分裂
- 缺点:天然偏好取值多的特征
python
# 熵简易计算示例
import numpy as np
p = np.array([39, 37, 44]) / 120
entropy = -(p * np.log2(p)).sum()
(2)增益率(C4.5):修正 ID3 缺陷
在信息增益基础上除以特征自身熵,抑制多值特征偏好。
(3)基尼系数(CART):熵的工程简化,计算更快
\(Gini(D)=1-\sum_{i=1}^{N} p_{i}^{2}\) 把\(p\log\frac{1}{p}\)简化为\(p(1-p)\),无对数运算,工业优先使用;基尼值越高,数据越混乱。
3. 树终止与防过拟合方案
- 自动停止分裂条件
- 节点样本全为同一类别、样本数量低于阈值、特征耗尽、树深度达上限
- 两种剪枝策略
- 预剪枝:训练时直接限制
max_depth、min_samples_leaf,提前停止分裂(实操最常用) - 后剪枝:先生成完整大树,自底向上删除收益低的分支
- 预剪枝:训练时直接限制
python
# 预剪枝限制复杂度示例
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(max_depth=5, min_samples_leaf=5)
4. 决策树优缺点
✅ 优点:可视化可解释(白盒)、无需标准化、兼容离散 / 连续混合特征、对缺失值鲁棒
❌ 缺点:极易过拟合;数据微小变动会完全改变树结构;贪心算法只能找到局部最优
5. 实战案例(鸢尾花三分类)
使用鸢尾花 4 维特征预测花卉品种,以信息熵为分裂准则,训练后可绘图可视化完整决策分支。
三、无监督学习(无标签数据两大分支)
无监督统一特征:只有输入特征 X,无真实标签 y,分为降维、聚类两大方向
(一)PCA 主成分降维
- 核心作用:解决维度灾难 (高维数据样本稀疏、距离失效、训练慢)
- 将高维数据线性投影到方差最大的正交主成分方向,保留绝大部分有效信息
- 收益:加速模型、2/3 维可视化、剔除冗余噪声特征
- 实战流程(乳腺癌数据集示例) 原始 30 维特征 → PCA 降至 5 维 → 用降维后数据训练决策树;可遍历不同维度,对比维度与模型准确率的权衡关系
- 底层数学:依靠 SVD 奇异值分解,奇异值大小代表对应主成分携带信息量。
(二)K-Means 聚类算法
- 核心目标:簇内样本距离尽可能小、簇间差异尽可能大
- 迭代标准流程(迭代法典型代表,配套笔记 2)
- 随机初始化 K 个聚类中心点
- 分配每个样本到距离最近的中心
- 根据分配结果重新计算每个簇的中心点
- 重复 2、3 直到中心点不再变动(收敛)
- 优缺点 ✅ 优点:计算速度快,适合大规模数据 ❌ 缺点:必须提前指定 K 值;对异常值、初始中心点敏感
- 实战案例:生成二维模拟分簇数据,训练后绘制散点图,红色星号标记聚类中心
四、集成学习(多弱模型融合成强模型)
核心底层思想
单棵决策树性能有限,通过多样性基学习器组合提升精度;三大必要条件:基模型有差异、单个模型效果优于随机猜测、合理的结果融合策略。
四大主流实现策略(区分核心差异)
-
Voting 投票法
- 逻辑:同一套数据,训练不同类型模型(树、逻辑回归、SVM),投票输出结果
- 硬投票:少数服从多数;软投票:各模型预测概率加权求和
pythonVotingClassifier(estimators=[("dt",dt),("lr",lr),("svm",svm)], voting="soft") -
Bagging 并行自助采样
- 逻辑:同一模型,随机抽取不同数据子集并行训练,最终投票 / 平均
- 作用:降低模型方差,抑制过拟合
- 代表:随机森林(双重随机:数据采样 + 随机选取特征子集,进一步增加模型多样性)
pythonRandomForestClassifier(n_estimators=100, max_features="sqrt") -
Boosting 串行提升法
- 逻辑:串行依次训练模型,重点修正前一轮预测错误样本;降低模型偏差
- 代表:AdaBoost(调整样本权重)、梯度提升 GBDT/XGBoost/LightGBM/CatBoost(拟合残差梯度)
- 风险:迭代次数过多容易过拟合
-
Stacking 堆叠融合
- 二阶段架构:第一层多个基模型输出作为新特征,第二层训练元学习器做最终预测,效果上限更高,但训练复杂度大幅上升。
五、模型拟合理论(训练效果 4 种状态)
1. 四类拟合状态
- 欠拟合 Underfitting 模型复杂度不足,训练、测试集准确率都很低,没学到数据基础规律;解决:加深模型、增加特征。
- 充分拟合 Good Fitting 训练集与测试集效果接近,同时保持高精度,是训练最优目标。
- 过拟合 Overfitting 模型学进训练集噪声与误差,训练集分数极高、测试集分数暴跌;比喻:死记训练数据,无法泛化新样本。 通用解决方案:
- 约束模型复杂度(限制树深度、正则化)
- 5 折 / 10 折交叉验证评估泛化能力
- 扩充训练数据集
- 人为欠拟合 Intentional Underfitting 主动简化模型(如 30 层树压缩至 5 层),小幅牺牲精度换取推理速度,用于移动端、实时低延迟系统。
六、配套底层理论笔记补充
- 熵相关补充 信息熵描述无序程度;交叉熵专门用作分类任务损失函数;基尼系数是熵的轻量化工程替代方案。
- 迭代法通用框架(K-Means、SGD 梯度下降共用逻辑) 随机初始化起点 → 迭代优化更新参数 → 设置误差 / 收敛终止条件;SGD 是深度学习核心迭代算法。
- 训练通用三要素:初始化方案、遍历寻优逻辑、收敛终止判断。