场景:预测建模------CLV与营收趋势预测
1. 业务背景
-
CLV(用户生命周期价值):预测单个用户未来6个月的消费金额;
-
营收趋势:预测未来3个月的整体营收,指导库存/预算规划。
2. 建模代码(对应仓库notebooks/forecasting)
运用机器学习技术,基于电商客户的行为与交易数据开展客户分群分析,核心目标是识别出特征鲜明的客户群体,为精准营销、产品推荐及客户留存策略的制定提供决策依据。
1.加载和准备数据
-
加载数据集
-
解析日期字段并核查时间粒度
-
将销售数据聚合至日度或周度维度
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as pltLoad data
sales_df = pd.read_csv('../../data/ecommerce_transactions.csv', parse_dates=['purchase_date'])
Extract date only (if datetime includes time)
sales_df['event_date'] = sales_df['purchase_date'].dt.date
Aggregate daily sales
daily_sales = sales_df.groupby('event_date')['purchase_amount'].sum().reset_index(name='total_sales')
daily_sales['event_date'] = pd.to_datetime(daily_sales['event_date'])
daily_sales.set_index('event_date', inplace=True)Preview
daily_sales.head()

2.可视化时间序列
-
绘制销售趋势图,识别潜在的业务规律
plt.figure(figsize=(12,6))
daily_sales['total_sales'].plot(label='Daily Sales', alpha=0.5)
daily_sales['total_sales'].rolling(window=7).mean().plot(label='7-Day Moving Avg', linewidth=2)
plt.title('Daily Total Sales with 7-Day Moving Average')
plt.xlabel('Date')
plt.ylabel('Total Sales')
plt.grid(True)
plt.legend()
plt.savefig('../../assets/forecasting/daily_total_sales_time_series.png', bbox_inches='tight', dpi=300)
plt.show()

解释:
日度销售额走势图显示数据波动性较强,涨跌波动频繁,反映出客户消费行为的不稳定性。
叠加 7 日移动平均线后可呈现出更为平缓的趋势曲线,便于识别出持续性增长、阶段性回落或季节性周期等特征。这种平滑后的趋势视图,能够为更精准的销售预测和促销节点规划提供有力支撑。
3.时间序列分解
-
运用 STL 分解法识别趋势、季节性特征及残差项
from statsmodels.tsa.seasonal import STL
stl = STL(daily_sales['total_sales'], period=7)
result = stl.fit()
result.plot()
plt.savefig('../../assets/forecasting/daily_total_sales_decomposition.png', bbox_inches='tight', dpi=300)
plt.show()

解释:
STL 分解法将销售数据信号拆解为三个核心构成部分:
-
趋势项:近月呈现出温和的下行走势,表明整体需求存在潜在走弱的迹象
-
季节性项:可观测到周度周期性规律,这一特征大概率由工作日 / 周末的消费行为差异,或周期性促销活动驱动
-
残差项:残差噪声呈现随机分布状态,无明显规律可循,说明模型已有效捕捉到核心的趋势特征与季节性波动
4.训练/测试划分
-
预留最后 30 天的数据作为验证集
train = daily_sales.iloc[:-30]
test = daily_sales.iloc[-30:]
5.预测模型
-
基于训练集数据拟合 Prophet 模型
-
预测未来 30 天的业务数据
from prophet import Prophet
import matplotlib.pyplot as pltdf_prophet = daily_sales.reset_index().rename(columns={'event_date': 'ds', 'total_sales': 'y'})
Fit Prophet model
prophet = Prophet(daily_seasonality=True)
prophet.fit(df_prophet)Create future dataframe
future = prophet.make_future_dataframe(periods=30)
forecast = prophet.predict(future)Plot forecast
plt.figure(figsize=(12, 6))
fig = prophet.plot(forecast)
plt.title("Sales Forecast (Prophet)")
plt.xlabel("Date") # replaces 'ds'
plt.ylabel("Total Sales") # replaces 'y'
plt.grid(True)
plt.savefig('../../assets/forecasting/daily_sales_forecast_prophet.png', bbox_inches='tight', dpi=300)
plt.show()


解释
-
趋势项:预测结果整体保持平稳,表明预期销量不存在显著的上升或下降趋势
-
季节性项:模型捕捉到了规律性的周度波动特征,这一结果反映出稳定的需求周期(例如工作日与周末的消费行为差异)
-
不确定性:部分区间的预测范围较宽,表明对应时间段的销量波动较大或近期可用数据有限,这可能会对预测结果的可信度造成影响
6.预测准确性
-
对比测试集上的预测值与实际值
-
计算平均绝对误差(MAE)和均方根误差(RMSE)
from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as npExtract forecasted values for test period
forecast_test = forecast.set_index('ds').loc[test.index]['yhat']
mae = mean_absolute_error(test['total_sales'], forecast_test)
rmse = np.sqrt(mean_squared_error(test['total_sales'], forecast_test))print(f'MAE: {mae:.2f}')
print(f'RMSE: {rmse:.2f}')

-
该模型能够捕捉整体趋势与季节性特征,但日度数据中的随机噪声导致了中度预测误差。
-
均方根误差(RMSE)略高于平均绝对误差(MAE),这一结果表明预测过程中存在偶发性的大幅偏差,而这类偏差大概率与促销活动或异常订单相关。
7.商业解读
销售额呈现显著的周度季节性特征且长期趋势保持稳定,预测模型能提供低偏差的可靠短期预测,可有效支撑需求规划、库存管理及预算分配等业务决策;从模型表现来看,Prophet 模型较好地拟合了销售数据的趋势与季节性特征,RMSE 约为 540,这一数值虽反映出日度销售额存在波动性,但模型整体预测跟踪效果良好,而纳入节假日效应或营销活动因素则能进一步提升预测准确性;基于上述业务解读与核心结论,建议每周开展滚动预测以支撑库存决策、构建品类级预测模型助力精细化规划、将预测模型与营销日历联动以实现营销活动增量的动态调整。
数字化时代,数据分析能力是职场的刚需技能,如果你想提升工作效率,强烈建议可以考个CDA证书,对于数据分析来说,业务分析是最重要的,所以是CDA数据分析师一级把业务分析模型作为重要考点,CDA一级从怎么采数据、清数据,到用 Excel、SQL、Python 做分析,都能学明白。学会了这些,不管是换工作做数据分析,还是在现在的岗位上帮公司做决策,都能用得上。
CDA数据分析师证书,与CPA注会、CFA特许金融师并驾齐驱,其权威性与实用性不言而喻。在互联网行业中,应用数据分析是非常适配的,该行业数据量庞大、发展快。CDA数据分析师在互联网行业的数据岗中认可度非常高,一般都要求考过CDA数据分析师二级,CDA二级中包含了模型搭建的详细内容,对于数据岗的工作来说特别有帮助。
CDA数据分析师之所以备受青睐,离不开它广泛的企业认可度。众多知名企业在招聘数据分析师时,都会明确标注CDA持证人优先考虑。像是中国联通、德勤、苏宁等大型企业,更是将CDA持证人列为重点招募对象,甚至为员工的CDA考试提供补贴,鼓励他们提升数据处理与分析能力。这足以证明,CDA证书在求职过程中,能为你增添强大的竞争力,使你从众多求职者中脱颖而出。
CDA数据分析师在银行业的数据岗中认可度非常高,一般都要求考过CDA数据分析师二级,CDA二级中包含了模型搭建的详细内容,对于数据岗的工作来说特别有帮助,一些企业可以给报销考试费。