简介
公司数据库积累了大量的客流数据; 不管是门店寻址还是对已有店进行复盘;客流都是最重要的指标;公司已有"客流量--营业额"模型;为了与客户沟通时候更快的提供解决方案;故需要在现有数据上构建客流预测模型;数据以90家门店为研究对象,从2019年1月到2019年12月的3万多条数据(14个特征)
内容:
- 业务理解: 考察了促销活动、竞争、节假日、季节等因素对客流的影响, 目标交付物是 客流预测模型及各家门店校正系数
- 数据理解: 旨在分析影响门店客流的相关因素,并预测未来周-月门店的客流。
框架
客流预测.png客流变化
image.png三.构建客流预测模型
1. 业务理解:
- 确定目标: 客流量
模型的目标是根据2019年的数据,预测客流量。该问题为回归类有监督学习模型。模型可选择;(LR; RF,xgboost等)
2.数据获取及预处理
- 对数据中出现的空值和异常值,我们使用众数、中位数进行插补、删除等多种方法处理数据;
数据经过清洗,经过特征选择后,再拆分出70%训练数据集和30%测试数据集。
3.特征工程
- 提取门店、店铺类型、促销、日期、法定假期、面积、同类竞争店铺相隔距离等特征。同时对特征进行进一步拆分组合:处理时间戳,通过将日期(DATE)字段拆分成年、月、日,周几字段;分解分类变量,将所有字符型转换成独热(One-hot)编码。
4.多模型拟合;确定评价函数
- 选择了均方根百分比误差(RMSPE)作为评价函数
- 选用Random Forest和xgboost模型进行预测。最后根据评估的结果,选择最佳模型进行进一步的调参优化
5.根据评价函数;调整模型及修改权重
W=[(0.990+(i/1000)) for i in range(20)] # 校正系数
result = []
for w in W:
error = rmspe(np.expm1(y_test), np.expm1(y_pre*w)) #rmspe: 均方根百分比误差;预测结果精度
print('RMSPE for 当校正系数:{}; 预测结果精度:{}'.format(w,error))
result.append(error)
score=pd.Series(result ,index=W) # 预测精度变化结果
'''
best_score=score[score.values==Score.values.min()] # 预测结果精度: 最优点
6.评估结果;选出最优模型;预测客流
- xgboost模型表现较好,RMSPE最优达到0.1525
网友评论