2026/5/21 4:37:15
网站建设
项目流程
佛山骏域网站建设专家,网页图片设计,营销型网站建设主要教学内容,网站排名优化专业定制人工智能之核心基础 机器学习
第四章 决策树与集成学习基础 文章目录人工智能之核心基础 机器学习4.1 决策树原理#x1f333; 什么是决策树#xff1f;#x1f511; 核心组成部分#x1f50d; 如何选择“问什么问题”#xff1f;——特征选择标准1️⃣ 信息增益#xf…人工智能之核心基础 机器学习第四章 决策树与集成学习基础文章目录人工智能之核心基础 机器学习4.1 决策树原理 什么是决策树 核心组成部分 如何选择“问什么问题”——特征选择标准1️⃣ 信息增益ID3算法2️⃣ 信息增益比C4.5算法3️⃣ Gini系数CART算法最常用✂️ 剪枝策略防止过拟合▶ 预剪枝Pre-pruning▶ 后剪枝Post-pruning 决策树代码实现4.2 集成学习思想 什么是集成学习✅ 为什么有效4.3 随机森林Random Forest 原理Bagging 随机特征两大随机性✅ 优点 vs ❌ 缺点 随机森林代码4.4 梯度提升树入门XGBoost / LightGBM 原理Boosting —— 串行纠错 XGBoost vs LightGBM XGBoost 快速上手4.5 实战案例案例1客户流失预测电信行业案例2商品图像分类简化版 本章总结资料关注4.1 决策树原理 什么是决策树决策树就像“20个问题”游戏——通过一系列是/否问题一步步缩小范围最终做出判断。✅核心思想用树形结构对数据进行分而治之的划分。 核心组成部分节点类型作用举例根节点Root整棵树的起点第一个判断条件“月消费是否 500元”内部节点Internal中间判断节点“是否经常投诉”叶节点Leaf最终预测结果“会流失” / “不会流失”图一个简单的客户流失预测决策树 如何选择“问什么问题”——特征选择标准目标每次划分都让子集更“纯净”同一类样本尽量聚在一起。1️⃣ 信息增益ID3算法基于信息熵Entropy衡量混乱程度信息增益 划分前熵 - 划分后加权平均熵选信息增益最大的特征⚠️ 缺点偏向取值多的特征如“用户ID”永远能完美划分但无意义2️⃣ 信息增益比C4.5算法对信息增益做归一化避免偏向多值特征更公平地比较不同特征3️⃣ Gini系数CART算法最常用衡量“不纯度”Gini越小越纯净公式$ \text{Gini}(D) 1 - \sum_{k1}^K p_k^2 $选Gini下降最多的划分通俗理解熵/Gini 高 → 混乱比如一半人流失、一半人不流失熵/Gini 低 → 纯净比如90%都流失我们希望每次提问后两组人都变得更“整齐”✂️ 剪枝策略防止过拟合决策树容易“学得太细”把噪声也当规律 →过拟合▶ 预剪枝Pre-pruning在建树过程中提前停止停止条件树深度达到上限节点样本数太少信息增益/Gini下降小于阈值✅ 优点训练快❌ 缺点可能“早停”错过更好划分▶ 后剪枝Post-pruning先建完整树再自底向上合并叶子如果合并后验证集误差不增加则剪掉分支✅ 优点泛化更好❌ 缺点训练慢 Scikit-learn 默认使用预剪枝通过max_depth,min_samples_split等参数控制 决策树代码实现fromsklearn.treeimportDecisionTreeClassifier,plot_treefromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score,classification_reportimportmatplotlib.pyplotasplt# 示例鸢尾花分类fromsklearn.datasetsimportload_iris X,yload_iris(return_X_yTrue)X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42)# 创建决策树使用GiniclfDecisionTreeClassifier(criteriongini,# 或 entropymax_depth3,# 预剪枝最大深度min_samples_split10,# 内部节点至少10个样本才分裂random_state42)clf.fit(X_train,y_train)# 预测与评估y_predclf.predict(X_test)print(准确率:,accuracy_score(y_test,y_pred))print(classification_report(y_test,y_pred))# 可视化树简单版plt.figure(figsize(12,8))plot_tree(clf,feature_namesload_iris().feature_names,class_namesload_iris().target_names,filledTrue)plt.show()4.2 集成学习思想 什么是集成学习“三个臭皮匠顶个诸葛亮”集成学习组合多个弱学习器表现略好于随机猜测形成一个强学习器。✅ 为什么有效问题类型单一模型缺陷集成如何解决高方差过拟合对训练数据太敏感多模型平均 → 降低方差高偏差欠拟合模型太简单提升法Boosting逐步修正错误泛化能力差容易受噪声影响多样性 → 更稳健关键每个弱学习器要有一定准确性多样性不能都犯同样错误4.3 随机森林Random Forest 原理Bagging 随机特征随机森林 多棵决策树投票两大随机性样本随机Bootstrap采样每棵树从原始数据中有放回地抽取n nn个样本约63%不重复不同树看到不同数据 → 增加多样性特征随机每次分裂时只从部分特征中选最佳划分默认总特征数 \sqrt{\text{总特征数}}总特征数防止单一强特征主导所有树✅ 最终预测分类用多数投票回归用平均值✅ 优点 vs ❌ 缺点优点缺点几乎不用调参模型不可解释黑盒抗过拟合能力强训练内存和时间开销大能处理高维数据对噪声和异常值敏感但比单棵树好自动评估特征重要性无法外推如预测超出训练范围的值 随机森林代码fromsklearn.ensembleimportRandomForestClassifierfromsklearn.datasetsimportmake_classification# 生成模拟数据客户流失X,ymake_classification(n_samples1000,n_features10,n_informative5,n_redundant2,n_clusters_per_class1,random_state42)X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42)# 随机森林rfRandomForestClassifier(n_estimators100,# 树的数量max_depth5,random_state42,oob_scoreTrue# 使用袋外样本评估)rf.fit(X_train,y_train)print(测试集准确率:,rf.score(X_test,y_test))print(袋外误差估计:,1-rf.oob_score_)# 查看特征重要性importancesrf.feature_importances_print(前5重要特征:,importances.argsort()[-5:][::-1])4.4 梯度提升树入门XGBoost / LightGBM 原理Boosting —— 串行纠错Boosting一棵树接一棵树训练每棵专注于纠正前一棵的错误梯度提升用梯度下降思想优化损失函数 想象老师教学生第1次考试错题 → 第2次重点讲这些题 → 第3次再考… 直到全对 XGBoost vs LightGBM特性XGBoostLightGBM分裂方式Level-wise按层Leaf-wise按叶更快处理大特征较慢支持类别特征直方图优化内存占用中等更低精度极高略快精度相当✅共同优势自带正则化防过拟合支持缺失值提供特征重要性Kaggle竞赛常胜将军 XGBoost 快速上手fromxgboostimportXGBClassifierfromsklearn.metricsimportroc_auc_score# 使用上面的客户流失数据xgbXGBClassifier(n_estimators100,max_depth4,learning_rate0.1,random_state42)xgb.fit(X_train,y_train)y_pred_probaxgb.predict_proba(X_test)[:,1]print(AUC:,roc_auc_score(y_test,y_pred_proba))实操要点调参重点n_estimators,max_depth,learning_rate用early_stopping_rounds防止过拟合分类不平衡时设scale_pos_weight4.5 实战案例案例1客户流失预测电信行业目标预测用户是否会取消服务特征月费、通话时长、客服投诉次数、合约类型等模型选择决策树可解释性强业务人员易理解随机森林/XGBoost精度更高用于最终部署# 特征重要性分析业务价值feat_names[monthly_charges,tenure,complaints,contract_type]importancesrf.feature_importances_ plt.barh(feat_names,importances)plt.title(客户流失关键因素)plt.show()案例2商品图像分类简化版目标区分T恤、裤子、鞋子Fashion-MNIST方法将图像像素展平为特征向量用随机森林/XGBoost分类虽不如CNN但可作为基线fromtensorflow.keras.datasetsimportfashion_mnist(X_train_img,y_train),(X_test_img,y_test)fashion_mnist.load_data()X_train_flatX_train_img.reshape(X_train_img.shape[0],-1)/255.0X_test_flatX_test_img.reshape(X_test_img.shape[0],-1)/255.0rfRandomForestClassifier(n_estimators50,max_depth10,random_state42)rf.fit(X_train_flat[:5000],y_train[:5000])# 用部分数据加速print(准确率:,rf.score(X_test_flat[:1000],y_test[:1000])) 本章总结模型核心思想适用场景关键优势决策树if-else规则链需要可解释性直观、无需特征缩放随机森林多棵树投票Bagging通用分类/回归稳定、抗过拟合XGBoost/LightGBM串行纠错Boosting竞赛/高精度需求精度高、支持多种任务建议先用决策树理解逻辑再用随机森林获得稳定性能追求极致精度时尝试XGBoost/LightGBM资料关注公众号咚咚王giteehttps://gitee.com/wy18585051844/ai_learning《Python编程从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计第四版 (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《西瓜书周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别第四版》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习(迈克尔·尼尔森MichaelNielsen》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC智能创作时代》杜雨张孜铭《AIGC原理与实践零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型中文版》《实战AI大模型》《AI 3.0》