机器学习实操 第一部分 机器学习基础 第7章 集成学习与随机森林
内容概要
第7章深入探讨了集成学习方法,这是一种结合多个预测模型(如分类器或回归器)以提高预测性能的技术。这些方法通过利用群体的智慧,可以比单个模型获得更好的结果。本章详细介绍了多种集成方法,包括投票分类器、Bagging和Pasting集成、随机森林、Boosting以及Stacking集成。通过这些方法,读者将了解如何利用集成学习来提升模型的准确性和泛化能力。
主要内容
-
集成学习的概念
- 群体智慧:通过聚合多个预测器的预测,集成学习通常能获得比单个预测器更好的结果。
- 应用场景:在机器学习项目中,集成方法常用于项目后期,结合多个优秀预测器以进一步提升性能。
-
投票分类器
- 硬投票:选择获得最多票数的类别作为最终预测。
- 软投票:计算每个类别的平均预测概率,选择概率最高的类别作为最终预测。软投票通常比硬投票表现更好,因为它考虑了预测器的置信度。
-
Bagging和Pasting
- Bagging:通过有放回的采样生成训练子集,每个子集用于训练一个预测器。
- Pasting:通过无放回的采样生成训练子集,每个子集用于训练一个预测器。
- 优势:降低模型方差,提高泛化能力。
-
随机森林
- 定义:由多个决策树组成的集成,通常通过Bagging方法训练。
- 优化:通过限制每个节点分割时考虑的特征数量来增加树的多样性,减少相关性,从而降低方差。
-
特征重要性
- 测量方法:通过评估每个特征在树节点中减少不纯度的平均贡献来衡量特征的重要性。
- 应用场景:帮助理解哪些特征对预测最为重要,便于特征选择和工程。
-
Boosting
- AdaBoost:通过依次训练预测器,每个新预测器专注于前一个预测器错误分类的实例。
- 梯度提升:通过依次训练预测器,每个新预测器专注于前一个预测器的残差。
- 优化技术:如学习率调整和早期停止,以防止过拟合。
-
Stacking
- 概念:训练一个模型(称为混合器或元学习器)来聚合多个预测器的预测。
- 实现:通过交叉验证生成混合训练集,使用这些预测作为输入特征来训练混合器。
关键代码和算法
####7.1 随机森林分类器
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练随机森林分类器
rnd_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rnd_clf.fit(X_train, y_train)# 评估模型
print("Accuracy:", rnd_clf.score(X_test, y_test))
7.2 基于AdaBoost的集成分类器
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier# 定义基分类器
base_clf = DecisionTreeClassifier(max_depth=1)# 训练AdaBoost分类器
ada_clf = AdaBoostClassifier(base_clf, n_estimators=30, learning_rate=0.5, random_state=42)
ada_clf.fit(X_train, y_train)# 评估模型
print("Accuracy:", ada_clf.score(X_test, y_test))
7.3 基于梯度提升的回归模型
from sklearn.ensemble import GradientBoostingRegressor# 训练梯度提升回归器
gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=100, learning_rate=0.1, random_state=42)
gbrt.fit(X_train, y_train)# 评估模型
print("R-squared:", gbrt.score(X_test, y_test))
精彩语录
-
中文:集成方法的强大之处在于它们能够将多个弱学习器组合成一个强学习器。
英文原文:Ensemble methods can combine several weak learners into a strong learner.
解释:强调了集成学习的核心思想。 -
中文:随机森林的一个重要特点是它能够轻松地衡量每个特征的重要性。
英文原文:Another great quality of random forests is that they make it easy to measure the relative importance of each feature.
解释:指出了随机森林的一个优势,即特征重要性评估。 -
中文:AdaBoost通过依次训练预测器,每个新预测器专注于前一个预测器错误分类的实例。
英文原文:AdaBoost trains predictors sequentially, each trying to correct its predecessor.
解释:介绍了AdaBoost的基本原理。 -
中文:梯度提升通过依次训练预测器,每个新预测器专注于前一个预测器的残差。
英文原文:Gradient boosting works by sequentially adding predictors to an ensemble, each one correcting its predecessor.
解释:描述了梯度提升的核心思想。 -
中文:Stacking通过训练一个模型来聚合多个预测器的预测,从而进一步提升性能。
英文原文:Stacking trains a model to perform the aggregation of multiple predictors’ predictions.
解释:介绍了Stacking的基本概念。
总结
通过本章的学习,读者将掌握集成学习的核心概念和应用方法。这些内容包括投票分类器、Bagging和Pasting集成、随机森林、Boosting以及Stacking集成。这些方法能够有效提升模型的性能,降低过拟合风险,提高泛化能力。集成学习方法的多样性和灵活性使其成为许多机器学习任务中的首选方案。