阅读hg皇冠官网的文章

.

如何选择正确的可视化并在Streamlit中实现它们以更好地调试您的预测模型

TL; DR

在处理预测模型时, 最好的方法通常是持续迭代, 添加一些数据源, 改善工程特点, 大多数时候,数据科学家倾向于只固定一个KPI (i.e. RMSE,预测准确性…). 这些kpi背后通常有更多的信息需要分析,以改进预测. 构建一个合适的可视化工具是深入研究模型行为的重要手段, 快速找出模型的痛点, 从而有效地提高了精度.

本文将提出在评估预测模型时应该问自己的关键问题, 然后呈现必要的可视化来回答这些问题,最后提出一个在统一工具下的快速实现来使用Streamlit收集所有这些可视化.

上下文

本文总结了hg皇冠官网从构建统一的可视化工具来帮助数据科学家的经验, 软件工程师, 产品负责人 & 需求规划师(业务专家)为食品中10个以上的业务单位开发销售预测模型 & 饮料公司. hg皇冠官网的模型在未来14周内以每日x仓库x产品水平进行预测. 这些是使用助推方法开发的, 并考虑到产品特性, 历史销售, 活动及推广资料.

评估预测模型时要问的关键问题

1. 模型与基线相比是否良好?
在相同的范围内访问当前的预测(例如需求计划者预测)是非常有用的. 它可以很好地理解特定时期、产品或地点的业务行为. 你采访的企业越多, 你获得的见解越多, 你就越能实现正确的功能.

2. 超过或低于预测,导致预测准确度下降
我必须要问的问题是:我是否赶上了全球趋势? 该模型是否捕捉了已知的周期性事件,如假日、仓库关闭、学校假期? 我是否在特定时期有一些准确性下降?
为什么重要?

  • 如果模型过度预测,就会导致库存增加,从而导致库存成本增加.
  • 如果模型预测不足, 它诱发了缺货期, 因此失去了销售机会,降低了客户满意度.

发现这样的事件是实现更有效、更准确预测的好方法. 这些通常为需求规划者所熟知,并且当您拥有这些信息时,在您的模型中实现它们非常简单. 例如,在hg皇冠官网的许多业务部门,一些产品是作为学校午餐销售的. 引入和准备一个代表学校假期的特征,可以大大提高hg皇冠官网对这些特定时期的准确性.

3. 处理产品特性
我的产品、品牌/家庭的表现是否一致? 我的产品(只在促销期间销售的产品)有其他区别吗, 畅销书vs. 低量产品,产品)?
为什么重要 ?

  • 验证模型在整个范围内的良好性能根据业务需要,可以在整个范围内要求最小的精度.
  • 识别关键产品,可以更精确地分析,从而获得准确性.

这些问题可以帮助您更准确地理解业务. 例如, 根据产品在体积上的重要性来划分型号,往往会导致性能的提高. 事实上, 对普通产品的需求与促销产品或不太常见的产品的需求有很大的不同, 哪些与促销期高度相关,或者销售情况非常稀疏. 在hg皇冠官网的大多数情况下,hg皇冠官网训练不同的模型来处理那些不同类型的产品.

4. 是否正确地考虑了构成效应?
该模式是否正确捕捉促销效果? 是否存在同类相食的效应? 模型是否能很好地适应外生现象(例如:罢工)?
为什么重要?

  • 在大多数情况下, 促销是推动需求的一个重要部分,可以导致销售数据的巨大峰值.
  • 它会导致大量浪费/库存不足的现象.
  • 考虑到复杂效果的更现实的模型更有可能被你的未来用户采用.

请参考hg皇冠官网预测系列的前一篇文章来处理推广数据: 更好地考虑促销数据的5个建议

如何分析你的预测模型:从宏观kpi到具体范围的评估

什么是必须的可视化?
为了构建你的评估工具,你必须结合两个元素:

  • 用于评估特定范围的性能的筛选部分
  • 一组用于快速发现改进轴的可视化工具

过滤部分必须允许在几个轴上进行过滤:分析周期, 位置(零售商, 仓库…), 产品(一套产品), 最后是产品类别.
hg皇冠官网建议至少提供以下4种可视化效果:

  • 首先, 预测体积的演化,上面有真实销售的信息. 这是最容易理解的,也是最值得一看的. 它能帮助你理解你的模型:我的模型是否能抓住全球趋势? 是预测过度还是预测不足? 我能接住钉子吗?

  • 第二, 预测精度的演变. 这取决于预测精度的计算方式, 这个数字可能是完成第一个数字所必需的. 这个数字可以帮助您快速发现预测中的痛点期, 从而告诉你应该深入研究哪个时期.
  • 第三,一些有代表性的kpi 计算不同范围的预测精度. hg皇冠官网建议在不同的层次上划分您的准确性:仓库, 产品类别的水平, 产品, 甚至混合这些分析轴(例如,创建每个仓库x产品类别的预测精度热图). 它还能帮助你找到关键的本土化或产品.
  • 最后一个,是 贡献评价. 为了准确地理解您的模型是如何工作的,您需要评估最常用的特性. 经典TS模型(ARIMA & Co., Prophet,…)提出了特征分解. 对于增强方法(XGBoost, CatBoost, LightGBM…)框架,如 世鹏科技电子 精确地建模每个特性的行为是否非常有用. 代表这些对周期的贡献可以帮助您评估哪些现象在什么时刻驱动您的预测.

如何开始使用Streamlit构建你的预测工作室仪表盘?

Streamlit是一个开源的python库,可以在几分钟内创建可共享的web应用程序,并且在数据科学社区仍然受到欢迎. 在这篇文章中, hg皇冠官网不会介绍这个工具,因为已经有很多文章介绍了这个主题, 但是hg皇冠官网将重点关注一个可视化的简单实现.
在这种类型的项目中选择使用Streamlit是基于以下几个先决条件:

  • Streamlit使MVP仪表盘非常容易设置.
  • 在数据科学项目中完全可集成. 因为您的流光页面将用Python编写, 您将能够使用核心项目的功能. 例如, 如果您已经开发了一个库来访问您的数据准备, 参考表, 和预测, 您可以直接在指示板代码中使用它们.
  • 可共享给许多用户, 将仪表盘暴露在远程机器的端口上,或者将其部署在App Engine等解决方案上, 云运行……

1. 预测仪表板的全局结构
在深入实现之前, 构建指示板的先决条件是绘制应用程序的各个部分.

为了在你的实现中保持整洁,你可以把你的代码分成几个部分:

  • 可以启动的核心仪表板 streamlit 为ecasting_studio_app运行.py
  • 不同的页面(训练数据集上的简单EDA、预测分析、特征贡献……)
  • 为每个页面收集数据准备/图形的Lib脚本

├──配置.py
├──为ecasting_studio
│├──为ecast_analysis
│├─fig_为ecast_analysis.py
│└──页面
│└──为ecast_analysis.py
└──为ecasting_studio_app.py

主页将设置你的应用程序的全局结构,i.e. 你的应用的全局布局:在hg皇冠官网的例子中, 一个宽的布局, 和一个侧边栏显示你的应用程序的名称和可用的页面.

进口 streamlit as st
为ecasting_studio.页面 进口 为ecast_analysis
页面 = {“预测分析”: 为ecast_analysis}
def 写_页面(页面):
页面.()
def main():
st.侧边栏.title(“预测工作室”)
选择 = st.侧边栏.选择框(“”, 列表(页面.()))
页面 = 页面[选择]
写_页面(页面)
if __的名字__ == “__main__”:
st.set_页面_配置(布局=“宽”)
main()

配置文件,hg皇冠官网收集所有Plotly图形的颜色和不同配置.

X_AXIS_TEMPLATE = dict(showline=真正的,
showgrid=,
showticklabels=真正的,
linecolor=“灰色”,
线宽=2,
蜱虫=“外”,
tickfont=dict(家庭=“天线”, 大小=12, color=“rgb(82、82、82)”))
Y_AXIS_TEMPLATE = dict(showline=真正的,
showgrid=真正的,
linecolor=“灰色”,
gridcolor=“lightgrey”)
LEGEND = dict(取向=“h”, yanchor=“底”, y=1.02, xanchor=“正确”, x=1)
COLORDISCRETE = [“#002244”, “#ff0066”, “# 66预备”, “#ff9933”, “#337788”,
“#429e79”, “#474747”, “#f7d126”, “# ee5eab”, “# b8b8b8”]

2.构建“预测精度可视化的演进”
首先,hg皇冠官网将在一个脚本中收集hg皇冠官网的情节人物:

进口 熊猫 as pd
打字 进口 列表
进口 情节.graph_objects as go
配置 进口 COLORDISCRETE, LEGEND, X_AXIS_TEMPLATE, Y_AXIS_TEMPLATE
def fig_evolution_of_fa(为ecasts_per_target_date: pd.DataFrame,
事件: 列表 = 没有一个) -> go.Figure:
" " "代表预测精度演变的数字
关于回测期
参数
———-
为ecasts_per_target_date: pd.DataFrame
包含至少3列的预测数据集:
—' target_date ':您预测的日期
- ' 为ecast_accuracy ':您的准确性KPI
—“week_nb”:周ID(从0到52)
-(可选)' demand_planner_为ecast_accuracy ':您的基线预测
主键:' target_date '
事件:列表,可选
两个日期的列表,表示周期,默认为没有一个
“””
fig_fa_score = go.Figure()
fig_fa_score.add_trace(
go.散射(
的名字=“模型预测准确性”,
x=为ecasts_per_target_date[“target_date”],
y=为ecasts_per_target_date[“为ecast_accuracy”],
hovertext=为ecasts_per_target_date[“week_nb”],
marker_color=COLORDISCRETE[0]))
#如果你有一个基线,你可以添加额外的列到你的
# dataset显示在线图上
if “demand_planner_为ecast_accuracy” in 为ecasts_per_target_date.:
fig_fa_score.add_trace(
go.散射(
的名字=“需求规划者预测的准确性”,
x=为ecasts_per_target_date[“target_date”],
y=为ecasts_per_target_date[“demand_planner_为ecast_accuracy”],
hovertext=为ecasts_per_target_date[“week_nb”],
marker_color=COLORDISCRETE[2]))
fig_fa_score.update_xaxes(范围=(最小值(为ecasts_per_target_date[“target_date”]),
马克斯(为ecasts_per_target_date[“target_date”])))
fig_fa_score.update_traces(模式=“行+标记”, line_shape=样条的)
fig_fa_score.update_布局(
xaxis_title=“日期”,
桠溪_title=“足总得分”,
plot_bgcolor=“白色”,
leg结束=LEGEND,
xaxis=X_AXIS_TEMPLATE,
桠溪=Y_AXIS_TEMPLATE)
if 事件:
fig_fa_score.update_布局(
形状=[get_vertical_filled_area([0], [1], “rgb(102、204、204)”)
in 事件])
返回 fig_fa_score
def get_vertical_filled_area(开始: 浮动, 结束: 浮动, color: str = “蓝色”) -> dict:
" " "返回一个有情节的垂直形状字典,用于突出显示数字上的事件" " "
返回 dict(类型=“矩形”,
xref=“x”,
yref=“纸”,
x0=开始,
y0=0,
x1=结束,
y1=1,
fillcolor=color,
=“下面”,
line_width=0,
不透明度=0.5)

hg皇冠官网将最终实现hg皇冠官网的预测分析页面, 这将加载hg皇冠官网的数据集, 把hg皇冠官网的数据分布在不同的栏上, …

进口 熊猫 as pd
进口 streamlit as st
为ecasting_studio.为ecast_analysis.fig_为ecast_analysis 进口 fig_evolution_of_fa
def () -> 没有一个:
st.title(的预测分析)
df = pd.read_csv(“your_dataset.csv”)
#你可以在这里加载一些自定义事件来显示
#交货:事件= [(' 2019-07-01 ',' 2019-09-01 '),(' 2020-07-01 ',' 2020-09-01 '))
事件 = 没有一个
evo_cont1, evo_cont2 = st.beta_列(2)
evo_cont1.小标题(“预测精度的演变”)
fig_evo_fa = fig_evolution_of_fa(df, 事件)
evo_cont1.plolty_fig(fig_evo_fa)
if __的名字__ == “__main__”:
()

Tadam ! 这是hg皇冠官网的应用程序:

让hg皇冠官网看一看所呈现的数字. 关于之前hg皇冠官网讨论的几点,hg皇冠官网的图表的关键点如下:

  • 第一个, 它可以让hg皇冠官网快速发现hg皇冠官网的模型不准确的几周:12月似乎是一个复杂的月来预测. 对hg皇冠官网的模型来说,回测期的结束也是一个问题. hg皇冠官网需要与企业进行讨论,以了解哪些影响是支配这几周的, 从而适应模型.
  • 图中还有一个参数叫做“事件”, 一对日期的列表, 代表全球事件, 让hg皇冠官网突出一些活动,比如学校假期. hg皇冠官网可以很快发现最糟糕的一周是假日周. 也许这段时间有些仓库关闭了, 或者客户订购了比平时更多的东西来准备新年的开始, 企业主们当然可以在这几周增加一些外部关注.
  • 如您所见,将显示两个系列. 在hg皇冠官网的例子中,它代表了hg皇冠官网的模型和需求规划者的模型在同一时期的准确性. 从图中可以看出,对于需求规划者来说,最糟糕的几周也是最复杂的几周. hg皇冠官网的模型已经很好地预测到了四月份的最大降幅. 对hg皇冠官网的模型来说,回测期的结束似乎更加复杂, 而需求规划者的准确性似乎很稳定.

结论:

  • EDA是评估预测模型的关键
  • 将所有图形分组到一个独特的仪表板中,使您可以专注于迭代, 从而提高效率
  • 仪表板允许您关注关键范围,快速发现改进的轴心.
  • 您已经实现了仪表板的核心结构,请继续添加新图形 !

一旦构建了可视化工具,就该部署它了. 这里有一个很好的资源来分享你的应用: 如何在GCP中部署和保护您的Streamlit应用程序?

感谢阅读到现在,如果你有任何问题,请不要犹豫联系我. 您可以通过访问hg皇冠官网的 博客.

Artefact的媒体博客.

本文最初发表于 媒介.com.
请关注hg皇冠官网的媒体博客 !

阅读hg皇冠官网的文章
人工制品的时事通讯

对数据咨询|数据营销|数字激活感兴趣?
阅读hg皇冠官网的每月通讯,以获得可行的建议, 的见解, 业务案例, 来自世界各地的数据专家!

通讯报名