核心数学基础:概率论与数理统计、时间序列分析、线性规划基础
说实话,很多同学一听到「数学基础」四个字就想关页面。我完全理解。当年我刚入行时也觉得,搞算法不就是调调包吗?直到我在一个削峰填谷项目里栽了跟头——数据跑出来全是负数,老板差点让我回炉重造。
那之后我才明白:数学不是用来背的,是用来救命的。这一章,我就带你过一遍真正用得上的三个数学工具。
概率论与数理统计:不确定性下的决策依据
削峰填谷的核心是什么?是预测。但现实世界没有100%准确的预测。概率论就是用来量化这种不确定性的。
核心概念速览:
- 随机变量:比如明天某时段的用电量,就是一个随机变量
- 概率分布:描述随机变量取值的可能性。削峰场景常用正态分布、泊松分布
- 期望与方差:期望告诉你「平均会是多少」,方差告诉你「波动有多大」
- 条件概率:给定某些条件(比如天气、节假日)下的概率,这是预测模型的基础
我习惯在项目初期先做一件事:画出所有历史数据的分布图。你想想看,如果数据本身是双峰分布,你用单峰模型去拟合,结果能对吗?
避坑指南:我曾经在一个电力负荷预测项目里,直接用均值填充缺失值。结果模型训练出来偏差巨大。后来才发现,缺失时段恰好是工厂停工时段,数据分布完全不同。正确的做法是用条件概率——给定「是否工作日」这个条件,分别计算期望。
时间序列分析:从历史中找规律
削峰填谷面对的数据,99%是时间序列。说白了,就是按时间顺序排列的一串数字。比如每小时的用电量、每分钟的流量。
时间序列分析的核心就三件事:
- 分解:把序列拆成趋势、季节性和残差三部分
- 平稳性检验:判断数据是否「稳定」。不平稳的数据直接建模,结果就是垃圾
- 预测:用ARIMA、指数平滑等模型做短期预测
一个真实案例:
我在做某城市供水调度项目时,发现每天早8点和晚6点有两个用水高峰。用时间序列分解后,趋势项显示每年用水量增长3%,季节性项显示周末比工作日低15%。有了这些信息,削峰策略就清晰了——在高峰前1小时开始蓄水,低谷时段加大泵站出力。
嗯,这里要注意:时间序列模型对异常值非常敏感。我建议你在建模前先用3σ原则或IQR方法做一次清洗。
线性规划基础:资源分配的最优解
削峰填谷的最终目的是什么?是资源调度。线性规划就是帮你找到「在约束条件下,怎么分配资源最划算」的数学工具。
一个标准的线性规划问题长这样:
目标函数:min (成本) 或 max (收益)
约束条件:
- 资源上限(比如水库容量)
- 需求下限(比如必须保证供水)
- 变量非负(不能调度负数)
常见误区:很多人以为线性规划只能处理「线性」关系。其实不然。通过分段线性化,你可以近似处理很多非线性问题。我曾经在一个天然气调度项目里,把非线性管损曲线拆成3段线性函数,求解速度提升了10倍,精度损失不到2%。
三者的关系:一张图说清楚
这三个工具不是孤立的。我画了一张图,帮你理清它们如何协同工作:
你看,概率论为时间序列分析提供数据清洗和参数估计的方法,时间序列分析输出预测值给线性规划作为输入,线性规划在约束条件下算出最优调度方案。最后,实际执行结果反馈回来,再优化概率模型和预测参数——形成一个闭环。
实战中我常用的工具
| 数学工具 | Python库 | 我的使用场景 |
|---|---|---|
| 概率论与数理统计 | scipy.stats, numpy | 异常值检测、置信区间估计、假设检验 |
| 时间序列分析 | statsmodels, pmdarima | 趋势分解、季节性调整、ARIMA预测 |
| 线性规划 | scipy.optimize, pulp, ortools | 资源分配、成本最小化、约束求解 |
我的个人习惯:拿到一个新项目,我会先用概率论做数据探索(分布、异常值),然后用时间序列做预测,最后用线性规划做决策。三步走,基本不会跑偏。但如果你时间紧,至少把时间序列和线性规划搞扎实——这两个是削峰填谷的硬通货。
好了,数学基础就聊到这儿。记住:工具是死的,场景是活的。下一章我们开始动手,用Python实现一个完整的削峰填谷案例。
公众号:蓝海资料掘金营,微信deep3321