随机森林(Random Forest),这是一个非常强大的机器学习预测模型,在供应链的需求预测、库存预测、缺货预警等方面越来越常用。

🌳 一、随机森林是什么?

随机森林 = 很多决策树的组合

它不是单颗树,而是一片“森林” 🌲🌲🌲,每棵树都用来预测一部分信息,最后通过“多数投票”或“平均值”来给出最终预测结果。


🔧 二、随机森林的核心逻辑

📍1. 数据随机抽样(Bootstrap)

  • 从原始数据集中,随机有放回地抽出若干子样本,训练多棵“不同的树”。

📍2. 特征随机选择(Feature Bagging)

  • 每棵树在分裂节点时,只考虑部分随机特征,增强多样性。

📍3. 多树集成(Ensemble)

  • 所有决策树都独立建模,预测时:

    • 分类任务: 多数投票

    • 回归任务: 所有树预测值的平均值


🧮 三、随机森林预测算法流程(回归版)

我们希望利用输入特征 X 来预测目标变量 y的值。整个流程分为两大部分:

📦 第一部分:训练阶段(Train)

我们训练一个由 B 棵树组成的随机森林:

🔮 第二部分:预测阶段(Predict)

🎯 示例:预测门店销量

你收集了如下特征:

日期

是否周末

温度

是否促销

销量

1号

23

120

2号

29

190

3号

30

200

...

...

...

...

...

实操逻辑:

  • 每棵树可能这样分裂:

    • 如果温度 > 28 ➝ 看是否促销 ➝ ...

    • 如果是周末 ➝ 销量高 ➝ ...

  • 然后对某个新日期(温度=31,周末,有促销):

    • 各棵树可能预测值为 185、190、195...

    • 最终预测销量为平均值 ≈ 190 杯


⚙️ 模型评估指标(回归任务常用)

指标

含义

MAE(平均绝对误差)

平均预测值和真实值的差值

RMSE(均方根误差)

预测误差的方差平均,偏重大误差

R²(决定系数)

衡量模型对数据拟合程度,越接近 1 越好

📌 特别补充:特征重要性

训练完成后,随机森林可以输出每个特征对预测结果的影响程度(Feature Importance),非常适合用于业务解读,如:

特征

重要性

是否周末

0.35

温度

0.30

是否促销

0.20

门店类型

0.15

这在需求分析中非常实用。


🧠 小结

阶段

细节总结

训练阶段

有放回采样 + 多棵树 + 每棵树特征子集随机

预测阶段

所有树预测后取平均

优势

稳定、非线性建模能力强、抗过拟合

应用

销量预测、缺货预测、库存变化趋势预测等

整个逻辑其实很简单的,对于数学不好的我们来举个简单的例子再看下这个逻辑:

🎓 假设你是一个销售经理,要预测下个月的销量

你手上有过去 100 天的数据,每天的:

  • 是否周末

  • 是否促销

  • 气温

  • 实际销量

现在你打算训练一个**“预测模型”**,让它未来自动告诉你:“下周六,30℃,做促销,预计能卖多少杯奶茶?”


🌲 你不相信一棵树(模型),你要找一群顾问(很多树)

随机森林的理念是这样的:

“我不只听一个专家说(单棵决策树),我找 100 个顾问,每人从不同角度、不同数据来看问题,最后大家平均意见来预测销量。”

🧩 训练阶段拆解成 4 步(类比说明)

✅ 步骤1:从原始数据里抽样(100次)

你手头有100天的数据——

你不让每个顾问都看完整数据,而是各自随机抽一部分数据去看,有重复也可以。

比如:

  • 顾问1 看了:第2、3、3、7、9、12天的数据

  • 顾问2 看了:第1、4、4、8、9、10、18、22天的数据

这叫 Bootstrap 采样

✅ 步骤2:每个顾问构建自己的「决策树」

他们不是“拍脑袋”,而是“有逻辑地拆数据”:

顾问1可能说:

  • 如果温度 > 28℃

    • 且是周末 ➝ 预测销量 = 190

    • 否则 ➝ 预测销量 = 160

  • 如果温度 <= 28℃

    • 且有促销 ➝ 预测销量 = 150

    • 否则 ➝ 预测销量 = 130

每个人根据自己那份随机数据,长出不同的决策逻辑树


✅ 步骤3:每次分裂节点,只看部分变量(随机特征)

为了防止所有人都“看一样的因素”,你给他们规定:

“你在每个判断点,只能随机挑几个特征看,不能全都看。”

比如:

  • 顾问1 在某节点只在「促销」和「气温」中选一个来判断

  • 顾问2 在另一节点只看「是否周末」或「气温」

这一步增加了“多样性”,防止大家都建出一模一样的树。


✅ 步骤4:重复上面 100 次,得到 100 棵树(顾问)

每棵树都有自己的一套预测方式。

这就叫:训练阶段完成


🔮 最终预测

以后给一组新数据(比如明天周六、30℃、做促销),你会:

  • 把数据输入到所有 100 棵树

  • 每棵树给一个预测销量(比如:185、195、200……)

  • 然后平均这些结果,就是最终预测值


🧠 一句话总结训练逻辑

随机森林训练时,构建了很多“有自己观点”的顾问(树),每个都从不同的子数据 + 特征去建模,然后你靠“群体智慧”来预测未来。