day28_决策树与集成学习

day28_决策树与集成学习 一、决策树基础1.什么是决策树决策树是一种树形结构在机器学习中用于分类和回归任务。树中每个内部节点表示一个特征上的判断每个分支代表一个判断结果的输出每个叶子节点代表一种分类结果。生活中的决策树——女孩相亲想象一个女孩相亲时心里的小算盘是否公务员 ├── 是 → 见 └── 否 → 长相如何 ├── 帅 → 收入如何 │ ├── 高 → 见 │ └── 低 → 不见 └── 丑 → 不见机器学习要回答的也是类似问题选择数据集中的哪些特征进行分裂能让分类效果最好2.决策树的建立过程特征选择选取有较强分类能力的特征决策树生成根据选择的特征递归生成决策树剪枝决策树易过拟合需要通过剪枝缓解二、CART决策树1.CART是什么CARTClassification and Regression Tree是“分类与回归树”的缩写是机器学习中重要的决策树算法之一。类型功能例子分类判断类别离散值判断邮件是否为垃圾邮件、新闻属于体育还是财经回归预测具体数值连续值预测明天房价、学生期末分数、店铺营业额CART vs 前辈算法ID3/C4.5ID3/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 ForestBoostingAdaBoost、GBDT、XGBoost、LightGBM3.Bagging思想核心特点有放回的抽样产生不同的训练集每个训练集训练一个不同的学习器平权投票、多数表决定预测结果弱学习器可以并行训练4.Boosting思想核心特点每个训练器重点关注前一个训练器的不足进行训练通过加权投票方式得出预测结果串行训练举个栗子滚球兽 - 亚古兽 - 暴龙兽 - 机械暴龙兽 - 战斗暴龙兽随着学习的积累从弱到强每加入一个弱学习器整体能力得到提升。5.Bagging vs BoostingBaggingBoosting抽样方式有放回随机抽样逐步关注错误样本训练方式并行串行投票方式平权投票加权投票代表算法随机森林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