核心数学基础:概率论与数理统计、时间序列分析、线性规划基础

说实话,很多同学一听到「数学基础」四个字就想关页面。我完全理解。当年我刚入行时也觉得,搞算法不就是调调包吗?直到我在一个削峰填谷项目里栽了跟头——数据跑出来全是负数,老板差点让我回炉重造。

那之后我才明白:数学不是用来背的,是用来救命的。这一章,我就带你过一遍真正用得上的三个数学工具。

概率论与数理统计:不确定性下的决策依据

削峰填谷的核心是什么?是预测。但现实世界没有100%准确的预测。概率论就是用来量化这种不确定性的。

核心概念速览:

  • 随机变量:比如明天某时段的用电量,就是一个随机变量
  • 概率分布:描述随机变量取值的可能性。削峰场景常用正态分布、泊松分布
  • 期望与方差:期望告诉你「平均会是多少」,方差告诉你「波动有多大」
  • 条件概率:给定某些条件(比如天气、节假日)下的概率,这是预测模型的基础

我习惯在项目初期先做一件事:画出所有历史数据的分布图。你想想看,如果数据本身是双峰分布,你用单峰模型去拟合,结果能对吗?

避坑指南:我曾经在一个电力负荷预测项目里,直接用均值填充缺失值。结果模型训练出来偏差巨大。后来才发现,缺失时段恰好是工厂停工时段,数据分布完全不同。正确的做法是用条件概率——给定「是否工作日」这个条件,分别计算期望。

时间序列分析:从历史中找规律

削峰填谷面对的数据,99%是时间序列。说白了,就是按时间顺序排列的一串数字。比如每小时的用电量、每分钟的流量。

时间序列分析的核心就三件事:

  1. 分解:把序列拆成趋势、季节性和残差三部分
  2. 平稳性检验:判断数据是否「稳定」。不平稳的数据直接建模,结果就是垃圾
  3. 预测:用ARIMA、指数平滑等模型做短期预测

一个真实案例:

我在做某城市供水调度项目时,发现每天早8点和晚6点有两个用水高峰。用时间序列分解后,趋势项显示每年用水量增长3%,季节性项显示周末比工作日低15%。有了这些信息,削峰策略就清晰了——在高峰前1小时开始蓄水,低谷时段加大泵站出力。

嗯,这里要注意:时间序列模型对异常值非常敏感。我建议你在建模前先用3σ原则或IQR方法做一次清洗。

线性规划基础:资源分配的最优解

削峰填谷的最终目的是什么?是资源调度。线性规划就是帮你找到「在约束条件下,怎么分配资源最划算」的数学工具。

一个标准的线性规划问题长这样:

目标函数:min (成本) 或 max (收益)
约束条件:
  - 资源上限(比如水库容量)
  - 需求下限(比如必须保证供水)
  - 变量非负(不能调度负数)

常见误区:很多人以为线性规划只能处理「线性」关系。其实不然。通过分段线性化,你可以近似处理很多非线性问题。我曾经在一个天然气调度项目里,把非线性管损曲线拆成3段线性函数,求解速度提升了10倍,精度损失不到2%。

三者的关系:一张图说清楚

这三个工具不是孤立的。我画了一张图,帮你理清它们如何协同工作:

概率论与数理统计 量化不确定性 估计参数与置信区间 异常检测与数据清洗 时间序列分析 趋势与季节性分解 平稳性检验与差分 短期预测(ARIMA等) 线性规划基础 目标函数与约束条件 资源分配优化 求解器(单纯形法等) 削峰填谷策略输出 预测结果 + 调度方案 + 风险评估 反馈优化 图:削峰填谷算法数学基础协同关系图

你看,概率论为时间序列分析提供数据清洗和参数估计的方法,时间序列分析输出预测值给线性规划作为输入,线性规划在约束条件下算出最优调度方案。最后,实际执行结果反馈回来,再优化概率模型和预测参数——形成一个闭环。

实战中我常用的工具

数学工具 Python库 我的使用场景
概率论与数理统计 scipy.stats, numpy 异常值检测、置信区间估计、假设检验
时间序列分析 statsmodels, pmdarima 趋势分解、季节性调整、ARIMA预测
线性规划 scipy.optimize, pulp, ortools 资源分配、成本最小化、约束求解

我的个人习惯:拿到一个新项目,我会先用概率论做数据探索(分布、异常值),然后用时间序列做预测,最后用线性规划做决策。三步走,基本不会跑偏。但如果你时间紧,至少把时间序列和线性规划搞扎实——这两个是削峰填谷的硬通货。

好了,数学基础就聊到这儿。记住:工具是死的,场景是活的。下一章我们开始动手,用Python实现一个完整的削峰填谷案例。


公众号:蓝海资料掘金营,微信deep3321