摘要:TFI拥有全球超过1200家快餐店,是世界知名品牌之一的公司,分别是汉堡王,Sbarro,Popeyes,Usta Donerci和Arby。他们在欧洲和亚洲雇用了2万多人,并在开发新的餐馆方面进行了大量的日常投资。现在,决定何时何地开设新餐馆,主要是基于开发团队的个人判断和经验的主观过程。这个主观数据难以准确地推断出地域和文化。新的餐厅需要大量的时间和资金投入才能开始运作。如果选择餐厅的位置错误,将会导致营业亏损,并在18个月内关闭。现在TFI公布了其在土耳其地区所经营的137家餐厅开张一年以来的销量情况和餐厅的地理位置,所处地区的人口等等一系列进过隐藏处理过后的特征,通过学习这137家餐厅的数据来预测另外100000家餐厅的年度销量情况。
数据信息:
利用所提供的数据,建立机器学习的模型,对每一家餐厅未来的年度销量情况进行预测。
一、销量预测架构
1.数据源:数据包括TFI集团旗下的餐厅数据构成的137条训练集和100000条测试集;
2.数据同步至阿里云:使用DataX工具将数据导入到在ODPS建立的表中;
3.流程计算:阿里云建立算法分析流程;
4.分析结果:对三个模型预测结果以及blending后的结果存储于表;
5.数据可视化展示:从数据库中读取结果数据进行可视化展示。
二、分析方法
1.本文中的137条训练集和100000测试集来源于真实的TFI集团旗下的餐厅历年的经营情况的数据。
2.获得的数据导入阿里云数加平台,数据表包含有餐厅开张日期、餐厅坐落城市、坐落城市的类型、所在城市的人口统计数据、房产数据、商业数据、收入数据等字段。
3.在数加的算法平台上建立回归预测的算法流程如上图所示。
4.采用数加组件中的缺失值统计,对每条数据缺失比例进行统计,缺失比例离群的判断为离群点,将0值视为缺失值,并将缺失值使用分别用训练集和测试集各字段的均值人工合成填充。
5.将餐厅所在城市按经济层度标准合并为不同层级;餐厅的已经开张时间与销量并没有太大的关系,反而是餐厅开张的时间点很重要,所以这里提取开张的月份,哪一天,哪一个星期来作为特征;将坐落城市类型进行独热向量编码编码处理;对销量进行平衡处理,使用log(x+1)处理,将其数据分布变为近视的正态分布;最后将数值型的特征进行标准化既能加快模型的学习速度,也能将数据放入一个标准分布内,使得数据之间差距尽可能小。
6.将处理完毕的数据分别放入随机森林、L2正则的线性回归、xgboost中进行回归学习,并用网格搜索的方法调整各个模型的超参数使其达到最佳状态。
7.可视化展示,将流程计算的结果,进行可视化展示。
三、年度销量预测结果展示
将预处理后的数据分别放入随机森林、L2正则的线性回归、xgboost中进行回归学习,并用网格搜索的方法调整各个模型的超参数使其达到最佳状态。
调节L2正则的线性回归中惩罚项参数‘alpha’。
当alpha取值范围在0.001到100时,模型在验证集上的最小均方误差不断减小,在40以后基本维持不变;
当alpha取值范围在20到60范围时,模型的最小均方误差持续减小,在60时达到最小,故L2正则的线性回归的正则化惩罚项的取值设置为60;
2.调节随机森林的的‘决策树’颗数,‘决策树’最大深度,‘叶子节点’最小个数等参数。
决策树的颗数范围在10到70时,模型在验证集上的最小均方误差变化如上图;
决策树的颗数范围在1到20时,模型在验证集上最小均方模型变化如上图,在取值为10时,模型有最小均方误差,故将随机森林的决策树颗数设置为10颗;
决策树的最大深度在3-13时时,最小均方误差均维持不变,由此将决策树最大深度设置为3;
决策树的叶子节点最小个数取值范围在20到200时,随机森林的最小均方误差变化如上图所示
决策树的叶子节点最小个数取值范围在2到40时,随机森林的最小均方误差维持不变,故将决策树的叶子节点最小个数取值设置为2;
经过类似的调参过程,分别找到各模型的最优超参数,让其达到最好状态,并用其在测试集进行预测,预测结果可视化如下:
L2正则的线性回归在验证集上年度销量的预测结果
MaxCompute最佳实践