一、决策树基础
1.什么是决策树
决策树是一种树形结构,在机器学习中用于分类和回归任务。树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果。
生活中的决策树------女孩相亲:
想象一个女孩相亲时心里的小算盘:
是否公务员?
├── 是 → 见
└── 否 → 长相如何?
├── 帅 → 收入如何?
│ ├── 高 → 见
│ └── 低 → 不见
└── 丑 → 不见
机器学习要回答的也是类似问题:选择数据集中的哪些特征进行分裂,能让分类效果最好?
2.决策树的建立过程
- 特征选择:选取有较强分类能力的特征
- 决策树生成:根据选择的特征递归生成决策树
- 剪枝:决策树易过拟合,需要通过剪枝缓解
二、CART决策树
1.CART是什么?
CART(Classification and Regression Tree)是"分类与回归树"的缩写,是机器学习中重要的决策树算法之一。
| 类型 | 功能 | 例子 |
|---|---|---|
| 分类 | 判断类别(离散值) | 判断邮件是否为垃圾邮件、新闻属于体育还是财经 |
| 回归 | 预测具体数值(连续值) | 预测明天房价、学生期末分数、店铺营业额 |
CART vs 前辈算法(ID3/C4.5):
- ID3/C4.5功能单一,仅支持分类,无法处理回归问题
- CART打破限制,支持分类与回归任务。
- CART采用强制二分法,每次分类严格分成两组,逻辑清晰
- CART有剪枝能力,可以缓解过拟合
2.CART的应用场景
2.1 分类领域
- 电商推荐:判断用户是否会购买商品
- 金融风控:判断交易是否存在欺诈风险
2.2 回归领域
- 房价、股价预测
- 用电量预测、交通流量等
3.CART核心原理
3.1 核心原理1:每次只做二分
无论选择哪个特征进行划分,只将数据分成两组:
- 分类特征:比如西瓜好坏的分类,颜色分类只分为"青绿"vs"非青绿",而不是"青绿"、"乌黑"、"浅白"三组。
- 数值特征:在数轴上切一刀,"大于5斤" vs "小于5斤"
这种二分法保证了决策树结构清晰、规则统一,计算效率高。
3.2 核心原理2:寻找"最有用"的分割点
CART树的目标是让划分后的两组数据"纯度"最高------也就是一组里绝大多数是好瓜,另一组里绝大多数是坏瓜。
举个例子:
按"敲声"分(优秀分割点):
"浊响"组里大部分是好瓜,"非浊响"组里大部分是坏瓜 ← 纯度高
按"色泽"分(无效分割点):
"青绿"和"非青绿"两组里,好瓜坏瓜依然混杂 ← 纯度低
CART树会遍历所有特征与分割点,锁定让数据最纯净的作为决策依据。
3.3 核心原理3:一层一层往下分
递归过程:
- 第一层划分:选择最有效的特征,将所有样本一分为二
- 第二层细分:对子组再寻找局部最优特征,进行二次二分
- 持续递归
- 停止生长:
- 子组完全纯净(全为好瓜或坏瓜)
- 样本不足,继续划分无意义
3.4 核心原理4:回归问题的处理
与分类树逻辑几乎一样,唯一区别是"纯度"的定义变了:
- 不看类别一致性,而是让分割后的两组数据的数值差异尽可能小
- 每个叶子节点输出该组所有样本目标值的平均值,作为对新样本的预测结果
3.5 核心原理5:剪枝------防止想太多
过拟合问题 :决策树可能会学习到如瓜蒂上有个小黑点的才是好瓜之类的奇葩规则,在训练数据上碰巧表现好,但换一批数据就完全不使用。
CART的解决方案:自动识别并移除对整体预测贡献小的分支,让树变得更简单,更通用。
4.CART的优缺点
优点:
- 简单易懂:决策过程清晰可见,易于解释
- 功能强大:能处理分类与回归问题
- 规则简洁:强制二分法,训练与预测速度快
- 鲁棒性好:自带剪枝功能,缓解过拟合
缺点:
- 容易过拟合:当参数设置不当时,容易陷入过拟合,特别是数据噪声大时
- 结果不稳定:对训练数据的微小变化都非常敏感,可能导致分支结构剧烈变化。
- 非全局最优解:受贪心策略影响,只选择当前局部最优解,没有回溯机制,无法保证全局最优。
三、决策树剪枝
1.为什么要剪枝?
决策树剪枝是一种正则化方法,目的是提高泛化能力,防止过拟合。
剪枝:将子树的节点全部删掉,使用叶子节点来替换
2.预剪枝 vs 后剪枝
| 预剪枝 | 后剪枝 | |
|---|---|---|
| 时机 | 边生成边验证 | 先完整生成,再自底向上考察 |
| 思想 | 划分前先估计,若不能提升泛化性能则停止划分 | 生成完整树后,考察将子树替换为叶子节点是否能提升性能 |
| 优点 | 降低过拟合风险,显著减少训练测试时间 | 保留更多分支,欠拟合风险小,泛化性能通常更好 |
| 缺点 | 当前划分不能提升性能,但后续划分可能可以,存在欠拟合风险 | 训练时间开销比预剪枝更大 |
五、集成学习
1.什么是集成学习
集成学习是机器学习中的一种思想,通过多个模型的组合形成一个精度更高的模型。参与组合的模型成为弱学习器
2.集成学习分类
| 类别 | 代表算法 |
|---|---|
| Bagging | 随机森林(Random Forest) |
| Boosting | AdaBoost、GBDT、XGBoost、LightGBM |
3.Bagging思想
核心特点:
- 有放回的抽样,产生不同的训练集
- 每个训练集训练一个不同的学习器
- 平权投票、多数表决定预测结果
- 弱学习器可以并行训练
4.Boosting思想
核心特点:
- 每个训练器重点关注前一个训练器的不足进行训练
- 通过加权投票方式得出预测结果
- 串行训练
举个栗子:
滚球兽 -> 亚古兽 -> 暴龙兽 -> 机械暴龙兽 -> 战斗暴龙兽
随着学习的积累从弱到强,每加入一个弱学习器,整体能力得到提升。
5.Bagging vs Boosting
| Bagging | Boosting | |
|---|---|---|
| 抽样方式 | 有放回随机抽样 | 逐步关注错误样本 |
| 训练方式 | 并行 | 串行 |
| 投票方式 | 平权投票 | 加权投票 |
| 代表算法 | 随机森林 | AdaBoost、GBDT、XGBoost、LightGBM |
六、随机森林算法
1.什么是随机森林?
随机森林是基于Bagging思想实现的一种集成学习算法,采用决策树作为弱学习器。
训练过程:
1.有放回地产生训练样本
2.随机挑选n个特征
3.训练决策树
4.重复1-3步训练多棵树
5.平权投票,多数表决输出预测结果
2.随机抽样与有放回抽样
问题1:为什么要随机抽样数据集?
如果不进行随机抽样,每棵树的训练集都一样,训练处的树分类结果也一样,毫无意义。
问题2:为什么要有放回地抽样?
如果不是有放回的抽样,每棵树的训练样本没有交集,每棵树之间可能差异太大。而随机森林需要弱学习器之间既有交集也有差异,才能更好地发挥投票表决的效果。
七、总结
CART决策树
- CART就是不停做二分选择题,层层筛选数据,分得越纯越好。
- 是所有主流树模型(随机森林、XGBoost、LightGBM)的老祖宗
集成学习
- 集成学习 = 多个弱学习器组成一个更强的学习器
- Bagging:有放回抽样->并行训练->平权投票
- Boosting:关注前一个学习器的不足->串行训练->加权投票
关键API速查
| 任务 | API |
|---|---|
| 决策树分类 | sklearn.tree.DecisionTreeClassifier |
| 决策树回归 | sklearn.tree.DecisionTreeRegressor |
| 随机森林 | sklearn.ensemble.RandomForestClassifier |
| 网格搜索 | sklearn.model_selection.GridSearchCV |