
作者:韩信子@ShowMeAI
教程地址:https://www.showmeai.tech/tutorials/41
本文地址:https://www.showmeai.tech/article-detail/207
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容
引言
同样还是Rossmann这个场景问题,ShowMeAI在上一篇 机器学习实战 | Python机器学习综合项目-电商销量预估 里给大家讲解了基本的数据探索性分析、数据预处理和建模过程,本篇我们再来看看这些过程,对其中一些细节做一些优化。
1.项目概况介绍
1.1 背景介绍
Rossmann成立于1972年,是德国最大的日化用品超市,在7个欧洲国家有3000多家药店。商店不定时会举办短期的促销活动以及连续的促销活动以此来提高销售额。除此之外,商店的销售还受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和周期性。

可靠的销售预测使商店经理能够创建有效的员工时间表,从而提高生产力和动力,比如更好的调整供应链和合理的促销策略与竞争策略,具有重要的实用价值与战略意义。如果可以帮助Rossmann创建一个强大的预测模型,将帮助仓库管理人员专注于对他们最重要的内容:客户和团队。
本次的任务是希望建立机器学习模型,通过给出的数据来预测Rossmann德国各地1115家店铺的6周销量。
1.2 数据介绍
数据以1115家Rossmann连锁商店为研究对象,从2013年1月1日到2015年7月共计录1017209条销售数据(27个特征)。
数据集一共涵盖了四个文件:
train.csv:含有销量的历史数据。test.csv:未含销量的历史数据。sample_submission.csv:以正确格式提交的示例文件。store.csv:关于每个商店的一些补充信息。
其中,train.csv中的数据中一共含有9列信息:
store:为对应店铺的id序号。DayOfWeek:代表着每周开店的天数。Data:是对应销售额Sales产生的日期。Sales:就是销售额的历史数据。Customers:为进店的客人数量。Open:则表示这个店铺是否开门与否。Promo:表示商店是否在当天有促销活动。StateHoliday:与SchoolHoliday分别表示了是否是国定假日或是学校假日。
(1) 训练集
我们在kaggle的data页面下部的数据概览可以大致查看每个数据的分布情况(下为训练集train.csv情况)和部分数据样例如下:

(2) 测试集
test.csv中的数据列几乎和train.csv一样,但缺少了Sales(也就是销售数据)以及Customers(用户流量)这两列。而我们的最终目标就是利用test.csv以及store.csv中的补充信息预测出test.csv中缺失的Sales数据。
test.csv的数据分布情况,可以看到和上面相比缺少了Sales以及与Sales有强关联的Customer数据。
数据分布和部分示例数据如下:

(3) 结果文件
结果文件sample_submission.csv中仅有id与Sales这两列,这个文件是我们将我们的预测答案提交至Kaggle的判题器上的标准格式模板。
在Python中我们只需要打开此文件,并将预测数据按照顺序填入Sales这一列后,使用Dataframe.to_csv(‘sample_submission.csv‘)后就可以将带有预测数据的sample_submission.csv保存至本地并准备后续上传。

(4) 商店信息
大家可以看到,train.csv与test.csv中有对应的店铺id,这些店铺id的详细情况就对应在store.csv中,其中记录了一些店铺的地理位置信息以及营促销信息。
store.csv的数据分布情况,可以注意到这里有很多离散的类别标签。
数据分布和部分示例数据如下:

其中:
Store:对应表示了店铺的编号。StoreType:店铺的种类,一共有a、b、c、d四种不同种类的店铺。大家可以把它想象成快闪店,普通营业店,旗舰店,或mini店这样我们生活中的类型。Assortment:用a、b、c三种分类描述店铺内售卖产品的组合级别。例如旗舰店和mini店中组合的产品肯定是有很大不同的。Competition Distance、Competition Open Since Year、Competition Open Since Month:分别表示最近的竞争对手的店铺距离,开店时间(以年计算),开店时间(以月计算)。Promo2:描述该店铺是否有长期的促销活动。Promo2 Since Year于Promo2 Since Week:分别表示商店开始参与促销的年份和日历周。Promo Interval:描述promo2开始的连续间隔,以促销重新开始的月份命名。
1.3 项目目标
在了解了这些数据后我们就需要明确一下我们的项目目的,在Rossmanns销售预测中,我们需要利用历史数据,也就是train.csv中的数据进行监督学习。训练出的模型利用通test.csv中的数据进行模型推断(预测),将预测出的数据以sample_submission.csv的格式提交至Kaggle进行评分。在这过程中还可以结合store.csv中的补充信息加强我们模型获得数据的能力。
1.4 评估准则
模型所采纳的评估指标为Kaggle在竞赛中所推荐的 Root Mean Square Percentage Error (RMSPE)指标。
R M S P E = 1 n ∑ i = 1 n ( y i − y ^ i y i ) 2 = 1 n ∑ i = 1 n ( y ^ i y i − 1 ) 2 RMSPE = \sqrt{\frac{1}{n}\sum\limits_{i=1}^n\left(\frac{y_i-\hat{y}_i}{y_i}\right)^2} = \sqrt{\frac{1}{n}\sum\limits_{i=1}^n\left(\frac{\hat{y}_i}{ {y}_i}-1\right)^2} RMSPE=n1i=1∑n(yiyi−y^i)2=n1i=1∑n(yiy^i−1)2<



被折叠的 条评论
为什么被折叠?



