随着数据挖掘与人工智能技术的发展,越来越多的企业将大数据运用到生产实践与决策指导中。其中,构建合适的模型对未来的趋势进行预测,是数据挖掘中十分重要的一部分。
本文将通过一个小案例教会你如何利用数据挖掘技术实现预测未来不是梦。
【工具】R语言
【算法】多元线性回归模型
【目标】预测2018年第一季度小卖部的周均客流量
数据准备
线性回归是指利用数理统计中回归分析原理,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛,其表达形式为y = w'x+e。多元线性回归预测,则是指利用两个或两个以上自变量的最优组合对因变量进行预测。
看不懂?没关系,我举个栗子你就明白了——在本文案例“预测2018年第一季度小卖部的周均客流量”的课题中,因变量就是我们需要预测的内容,即客流量;自变量则指的是可能对小卖部客流量产生影响的若干个因素。
自变量的选择尤为重要,一个优秀的数据分析师应该运用其严密的逻辑、熟练的业务和天马行空的想象力,尽可能地将所有的相关因素一列俱全!手机前的你也可以暂停几秒,看看自己脑海中能想出什么样的自变量因素呢?
经过思考和讨论,分析师给出了以下一些自变量清单:
小卖部业务水平相关因素:商品种类、商品价格、商品缺货率、售货员人数、收银台数量、促销商品数量、促销折扣力度……
小卖部所在社区相关因素:社区占地面积、社区居住人口、社区人流量、社区房价、社区物业服务水平……
宏观经济因素:居民消费指数、恩格尔系数、定期存款利率、活期存款利率……
其他因素:政府政策、天气情况……
也许你会觉得这些变量——也太多了吧!怎么找啊!怎么处理啊!跟客流量有毛线关系啊!不用担心,一方面,比我们更加机智的模型算法会帮我们挑选出最合适、预测效果最佳的几个变量;另一方面,受现实因素的限制,许多的变量数据是我们无从搜集或无法获取的。
我们采用了实地考察、走访调查、蹲点采集、撒娇卖萌等各种手段,最终获取到了以下8个指标作为预测模型的自变量:
小卖部商品种类
小卖部商品均价
小卖部开启的收银台数量
小卖部的促销力度
小卖部的卫生情况
小卖部商品缺货率
小区客流量
当地气温
要注意,一家人呢,最重要的就是整整齐齐,数据也是。以上数据必须时间跨度统一(都是从2003年1月至2018年3月的数据)、粒度统一(都是周度数据),且获取的数据越多,模型预测的效果也就越好。
当然还少不了已知的小卖部客流量数据(2003年至2017年的周度数据)。
构建预测模型
接下来是高大上的代码实现阶段,不要紧张,请跟着我一步步走——
1、输入数据。
train为训练集数据,即2003年至2017年所有字段的周度数据。test为预测数据,需要预测2018年第一季度的客流量,则,test数据集包括了2018年1月至3月共13周的自变量数据。
2、拟合线性模型。
R中实现拟合线性模型的基本函数是lm(),客流量即为需要拟合得因变量,英文字符“.”代表数据框df_train中的全部变量。
用summary查看拟合结果,结果中有四个指标需要关注:
一是每个变量倒数第二列的t value,即T检验,是检验变量显著性的指标。
二是每个变量最后一列的P值,P值越小,回归效果越显著,后面星级越高。
三是倒数第二行拟合优度R-squared和修正拟合优度Adjusted R-squared,衡量回归方程对样本的拟合程度,值越接近于1,回归效果越好。
四是最后一行的F-statistic值,即我们常说的F统计量,是检验方程整体显著性的指标。
3、逐步回归,构建最优模型。
在step和drop过程中,模型会自动筛选出一些对于预测效果无影响或是起反作用的不好的自变量,也就是P值较大的变量。drop函数会给出下一步线性拟合的变量因素。有时也可以根据P值手动筛选掉效果不佳的变量因素。
在第2步summary(Lm)的结果中,“收银台数量”这一变量的P值约为0.08,其星级也小于其他变量,因此可以在下一步拟合中尝试去掉该变量。
查看step2的拟合结果:去掉“收银台数量”这一变量后,拟合优度R-squared和修正拟合优度Adjusted R-squared和上一步的值相差不多,说明提出的变量并没有对结果产生较大的影响。
在构建拟合模型过程中,可以不断地剔除P值较大、星级较小、拟合效果不好的变量,直到模型能够使用最少的因素达到最佳的预测效果。
预测结果
构建出最佳的拟合模型后,我们就可以用该模型来进行预测。predict函数的两个参数分别为“构建出的拟合模型”和“预测集的变量数据”,即调用step2模型对test数据集进行预测。输出predict结果,即得到了预测出的2018年第一季度共13周的小卖部客流量数据。
经过缜密的分析和精确的计算,我们最终得到了最终结果——2018年第一季度小卖部的周均客流量预计为:
同学们学会了吗?代码拿去,赶快练习练习,下一个数据分析高手就是你哦!