首页 › 机器学习 › 机器学习基础 › 第五章 随机森林算法

第五章 随机森林算法

想象一下,你正在参加一个重要的知识竞赛,面对一个难题,你是更相信一位顶尖专家的判断,还是更相信由 100 位水平不错的选手投票得出的结果?在大多数情况下,集体的智慧往往能弥补个人的偏见和局限,从而做出更稳定、更准确的决策。​

​

📌

在机器学习的世界里,随机森林(Random Forest) 正是这种集体智慧思想的杰出代表。它通过构建大量的决策树,并让它们共同投票来做出预测,从而成为最强大、最受欢迎的机器学习算法之一。​

​

​

飞书文档 - 图片

​

什么是随机森林?​

​

🎹

随机森林 是一种基于集成学习(Ensemble Learning)的机器学习算法。它的核心思想非常简单:三个臭皮匠,顶个诸葛亮。​

​

​

•

森林: 指的是由多棵 决策树(Decision Tree) 组成的集合。​

•

随机: 指的是在构建每一棵决策树时,算法会引入两种随机性,确保每棵树都与众不同。​

​

最终,对于分类任务,森林通过 投票(多数决) 给出结果;对于回归任务,则通过 取平均值 给出结果。​

核心思想:Bagging 与随机性​

随机森林的成功建立在两大基石之上:​

Bagging(Bootstrap Aggregating):​

•

Bootstrap(自助采样): 从原始训练数据集中有放回地随机抽取样本,生成多个不同的子训练集。这意味着同一个样本可能在一个子集中出现多次,而另一个样本可能一次都不出现。​

•

Aggregating(聚合): 用每个子训练集独立训练一棵决策树,最后将所有树的结果聚合起来(投票或平均)。​

​

飞书文档 - 图片

​

特征随机性:​

•

在构建每棵树的每个节点进行分裂时,算法不会考虑所有的特征,而是从全部特征中随机选取一个子集,然后从这个子集中选择最优分裂特征。​

•

这进一步增强了树与树之间的差异性,让森林看到问题的不同侧面。​

简单来说,随机森林通过让每棵树在略有不同的数据和特征视角下进行训练,创造了一个多样化的专家委员会。 即使其中一些树犯了错误,其他正确的树也能通过投票将其纠正,从而获得比单棵决策树更稳定、更强大的性能。​

​

​

算法流程与关键参数​

随机森林的工作步骤​

让我们通过一个流程图来清晰地看透它的工作过程:​

​

飞书文档 - 图片

​

关键超参数详解​

在使用 scikit-learn 库时,理解以下几个核心参数至关重要:​

​

​

​

​

实战演练 - 代码示例​

让我们用一个经典的鸢尾花(Iris)分类数据集来实战一下。​

示例 1:基础分类任务​

实例​

​

​

代码解析:​

导入库: RandomForestClassifier 是随机森林分类器。​

加载数据: 鸢尾花数据集有 150 个样本,4 个特征,3 个类别。​

数据划分: 将 70% 的数据用于训练,30% 用于测试,验证模型对新数据的泛化能力。​

实例化模型: random_state=42 确保每次运行结果可复现。​

训练模型: fit 方法会构建 100 棵决策树。​

预测与评估: 用训练好的森林对测试集预测,并计算准确率等指标。​

输出:​

​

代码块​

Plain Text

setosa 1.00 1.00 1.00 19​

versicolor 1.00 1.00 1.00 13​

virginica 1.00 1.00 1.00 13​

​

accuracy 1.00 45​

macro avg 1.00 1.00 1.00 45​

weighted avg 1.00 1.00 1.00 45​

​

示例 2:查看特征重要性​

随机森林还有一个强大功能:评估每个特征对预测的贡献程度。​

实例​

​

代码块​

Python

​

​

​

输出分析: 你可能会发现花瓣长度和花瓣宽度的重要性远高于花萼的尺寸。这非常符合植物学常识,花瓣特征确实是区分不同鸢尾花的关键。这个功能对于特征筛选和数据理解极具价值。​

​

​

第四部分:优点、缺点与应用场景​

优点​

高准确率: 集成学习通常能取得当前数据下顶尖的性能。​

抗过拟合能力强: 得益于 Bagging 和随机特征选择,即使不剪枝,也不容易过拟合。​

对数据要求友好: 能处理数值型和类别型特征,不需要特征缩放(如归一化)。​

提供特征重要性: 内置的特征评估是宝贵的副产品。​

并行化容易: 每棵树的训练是独立的,可以轻松并行加速。​

缺点​

模型可解释性差: 成百上千棵树组成的"黑箱",比单棵决策树难解释得多。​

训练和预测速度较慢: 树的数量多时,需要更多的计算资源和时间。​

内存占用大: 需要存储整个森林的所有树结构。​

典型应用场景​

•

分类问题: 如垃圾邮件识别、疾病诊断、图像分类。​

•

回归问题: 如房价预测、销售额预测。​

•

特征选择: 利用其输出的特征重要性进行特征筛选。​

•

缺失值处理: 随机森林有较好的处理缺失值的天然能力。​