首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 为何选择机器学习
1.1.1 机器学习能够解决的问题
1.1.2 熟悉任务和数据
1.2 为何选择Python
1.3 scikit-learn
1.4 必要的库和工具
1.4.1 Jupyter Notebook
1.4.2 NumPy
1.4.3 SciPy
1.4.4 matplotlib
1.4.5 pandas
1.4.6 mglearn
1.5 Python 2 与Python 3 的对比
1.7 第 一个应用:鸢尾花分类
1.7.1 初识数据
1.7.2 衡量模型是否成功:训练数据与测试数据
1.7.3 要事第 一:观察数据
1.7.4 构建第 一个模型:k 近邻算法
1.7.5 做出预测
1.7.6 评估模型
2.1 分类与回归
2.2 泛化、过拟合与欠拟合
2.3 监督学习算法
2.3.1 一些样本数据集
2.3.2 k 近邻
2.3.3 线性模型
2.3.4 朴素贝叶斯分类器
2.3.5 决策树
2.3.6 决策树集成
2.3.7 核支持向量机
2.3.8 神经网络(深度学习)
2.4 分类器的不确定度估计
2.4.1 决策函数
2.4.2 预测概率
2.4.3 多分类问题的不确定度
3.1 无监督学习的类型
3.2 无监督学习的挑战
3.3 预处理与缩放
3.3.1 不同类型的预处理
3.3.2 应用数据变换
3.3.3 对训练数据和测试数据进行相同的缩放
3.3.4 预处理对监督学习的作用
3.4 降维、特征提取与流形学习
3.4.1 主成分分析
3.4.2 非负矩阵分解
3.4.3 用t-SNE 进行流形学习
3.5 聚类
3.5.1 k 均值聚类
3.5.2 凝聚聚类
3.5.3 DBSCAN
3.5.4 聚类算法的对比与评估
3.5.5 聚类方法小结
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(上)
小册名称:Python机器学习基础教程(上)
### 2.3.6 决策树集成 在Python机器学习的基础探索中,决策树(Decision Tree)作为一种直观且强大的分类与回归方法,已广泛应用于各种领域。然而,单一决策树模型往往面临过拟合、泛化能力有限等问题。为了克服这些局限,科学家们提出了决策树集成的策略,通过构建多个决策树并将它们的结果以某种方式结合起来,以提高模型的预测性能和稳定性。本章将深入探讨决策树集成的几种主要方法:随机森林(Random Forest)、梯度提升树(Gradient Boosting Trees, 如XGBoost、LightGBM)和AdaBoost。 #### 2.3.6.1 随机森林 **概念与原理** 随机森林(Random Forest)是一种集成学习方法,它通过在数据集的多个子样本上构建多个决策树,并输出这些树的分类(或回归)结果的平均值(或多数投票结果)来进行预测。随机森林的“随机”体现在两个方面:一是数据的随机采样(通常使用bootstrap采样),二是特征的随机选择。这种双重随机性有助于增加模型的多样性,减少过拟合风险,提高模型的泛化能力。 **Python实现** 在Python中,我们可以使用`scikit-learn`库来方便地实现随机森林。以下是一个简单的示例,展示如何使用随机森林进行二分类任务: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # 加载数据 data = load_iris() X = data.data y = data.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier(n_estimators=100, random_state=42) # 训练模型 rf.fit(X_train, y_train) # 预测测试集 y_pred = rf.predict(X_test) # 评估模型 print("Accuracy:", accuracy_score(y_test, y_pred)) ``` **参数调优** 随机森林的性能受多个参数影响,如树的数量(`n_estimators`)、树的最大深度(`max_depth`)、分裂节点时考虑的最大特征数(`max_features`)等。通过交叉验证等方法可以对这些参数进行调优,以获取最优模型。 #### 2.3.6.2 梯度提升树 **概念与原理** 梯度提升树(Gradient Boosting Trees)是另一种强大的集成学习方法,它通过顺序地构建多个弱学习器(通常是决策树),每个学习器都尝试纠正前一个学习器的预测错误,以达到逐步优化模型的目的。梯度提升树的核心在于梯度下降算法与决策树的结合,通过最小化损失函数的梯度来构建新的树。 **Python实现** 在Python中,`scikit-learn`提供了`GradientBoostingClassifier`和`GradientBoostingRegressor`类用于分类和回归任务。此外,`XGBoost`和`LightGBM`作为梯度提升算法的进一步优化版本,因其高效性和准确性而在工业界和学术界广泛应用。 以XGBoost为例,以下是一个使用XGBoost进行分类的示例: ```python import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 数据准备同上 # 转换为DMatrix格式,XGBoost内部使用的优化数据结构 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) # 设置参数 params = { 'max_depth': 3, 'eta': 0.1, 'objective': 'multi:softmax', 'num_class': 3 # Iris数据集有三类 } # 训练模型 num_round = 100 bst = xgb.train(params, dtrain, num_round) # 预测测试集 preds = bst.predict(dtest) # 评估模型 print("Accuracy:", accuracy_score(y_test, preds)) ``` **参数调优** XGBoost和LightGBM提供了丰富的参数供用户调整,如学习率(`eta`/`learning_rate`)、树的最大深度(`max_depth`)、最小叶子节点样本权重和(`min_child_weight`)、列抽样比例(`colsample_bytree`)等。通过合理的参数调优,可以显著提升模型的性能。 #### 2.3.6.3 AdaBoost **概念与原理** AdaBoost(Adaptive Boosting)是一种自适应的集成学习方法,它通过迭代地训练弱学习器(如决策树),并根据每个弱学习器的表现赋予不同的权重,最后将这些弱学习器加权组合成一个强学习器。AdaBoost在每次迭代中,都会增加对之前被错误分类样本的关注度,即提高这些样本的权重,使得后续的学习器能够更加关注这些难以分类的样本。 **Python实现** 在`scikit-learn`中,`AdaBoostClassifier`和`AdaBoostRegressor`分别用于分类和回归任务。以下是一个使用AdaBoost进行分类的示例: ```python from sklearn.ensemble import AdaBoostClassifier # 数据准备同上 # 创建AdaBoost分类器 ada = AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, random_state=42) # 训练模型 ada.fit(X_train, y_train) # 预测测试集 y_pred = ada.predict(X_test) # 评估模型 print("Accuracy:", accuracy_score(y_test, y_pred)) ``` **参数调优** AdaBoost的性能主要受学习率(`learning_rate`)、弱学习器的数量(`n_estimators`)以及弱学习器本身的参数影响。适当的学习率可以平衡模型的训练速度和最终性能,而弱学习器的数量则决定了模型的复杂度。 #### 总结 决策树集成方法通过构建多个决策树并将它们的结果以某种方式结合,显著提高了模型的预测性能和稳定性。随机森林、梯度提升树(如XGBoost、LightGBM)和AdaBoost是三种常用的决策树集成技术,它们各有特点,适用于不同的场景和需求。在实际应用中,选择合适的集成方法并对其进行合理的参数调优,是构建高性能机器学习模型的关键步骤。
上一篇:
2.3.5 决策树
下一篇:
2.3.7 核支持向量机
该分类下的相关小册推荐:
Python甚础Django与爬虫
Python合辑13-面向对象编程案例(上)
Python合辑14-面向对象编程案例(下)
Python面试指南
剑指Python(磨刀不误砍柴工)
Python编程轻松进阶(三)
Python与办公-玩转Excel
Python编程轻松进阶(五)
Python合辑5-格式化字符串
Python合辑9-判断和循环
Python与办公-玩转PDF
机器学习算法原理与实战