题 目 大型超市“购物篮”分析摘 要本文根据顾客购买记录,通过“购物篮”分析,运用多种模型得出结果,并给出促销方案。
问题一要求构建能表达多种商品关联程度的数学模型。
根据4717个顾客对999中商品的购买记录,先用Matlab 对数据进行预处理,将其转化为0-1模型,然后求出购买j 商品的集合j s 和购买k 商品的集合k s ,考虑到同时购买两种商品占购买人数的频率,即相关性,存在购买人数少但相关性大的缺陷。
在改进的模型中,因为存在购买商品数少但也会使相关性大的情况,所以对两种情况进行综合考虑,得出最优模型:j k i k i k s s s s p n s s ⋂⋂=⨯⋃用Matlab 求解0-1矩阵,求出两商品间关联系数较大的前八位,有相关系数的值在0-1围之,与所得模型函数的围一致,可知,该模型是准确可靠的。
问题二要求出有效方法来找出最频繁被购买的商品记录,且越多越好。
根据问题一所得0-1矩阵,将其代入Excel 运用Aprior 模型,先算出单项商品的频繁项集,将支持度较小的数据剔除后,最后选取被购买次数最多的前18个商品,其中最畅销的为368号商品。
根据这18个畅销品,运用同样方法将其转化为两两商品的组合,得到被同时购买次数200次以上的商品;根据此算法依次迭代,得到同时购买3种商品和同时购买4种商品的数据,更多商品被同时购买次数较少因此不予考虑,最后得出:两件商品被同时购买次数最高的是368和529号;三件商品被同时购买次数最高的是368、489和682;四件商品被同时购买次数最高的是68、937、895和413。
问题三要求给出方案使效益最大。
根据问题一中0-1模型和问题二中Aprior 模型,将得到的购买次数最多的商品信息和题中所给利润表相比较,将利润小数量多的商品作为赠品和利润大数量多的商品一同销售;将共同购买次数多且利润大的两商品组合作为促销品进行销售,以进一步提高超市的综合效益。
关键词 0-1模型 Aprior 模型 数据预处理 相关系数一、问题背景和重述1.1问题背景随着信息技术的发展,通过分析大量历史数据来发现模式和利用规律的数据挖掘技术应运而生,然而大多数商家并不是数据挖掘技术领域的专家,如何使数据挖掘技术平民化,成为当代很多学者研究的热点之一。
购物篮分析是数据挖掘技术应用在零售业中的一种有效方式,其目的就是在顾客的购买交易中分析能够同时购买一类产品或一组产品的可能性,利于商品的摆放,也利于提高促销活动的效果。
随着人们生活水平的提高,特别是城市,基本物质生活已满足,人们有更高的追求并呈现多样性,从企业角度看,了解和掌握顾客消费的特征和规律,有利于提高企业利润,同时也能提高消费者的满意度。
本文以一个面向大型超市的购物篮问题,构建数学模型。
1.2问题重述作为超市的经理,经常关心的问题是顾客的购物习惯。
他们想知道:“什么商品组或集合顾客多半会在一次购物时同时购买?”。
现在假设我们是某超市的市场分析员,已经掌握了该超市近一个星期的所有顾客购买物品的清单和相应商品的价格,需要给超市经理一个合理的“购物篮”分析报告,并提供一个促销计划的初步方案。
问题1:题目中表格数据显示了该超市在一个星期的 4717 个顾客对 999 种商品的购买记录,表格中每一行代表一个顾客的购买记录,数字代表了其购买商品的超市部编号。
建立一种数学模型,该模型能定量表达超市中多种商品间的关联关系的密切程度。
问题2:根据在问题1中建立的模型,寻找一种快速有效的方法能从表格的购买记录中分析出哪些商品是最频繁被同时购买的。
超市经理希望得到尽可能多的商品被频繁同时购买的信息,所以找到的最频繁被同时购买的商品数量越多越好。
例如:如果商品1、商品2、商品3在 4717 个购物记录中同时出现了200次,则可以认为这三个商品同时频繁出现了200次,商品数量是3。
问题3:题目给出了这999中商品的对应的利润,根据在问题1、问题2中建立的模型,给出一种初步的促销方案,使超市的效益进一步增大。
二、问题分析2.1问题一的分析要求构建模型定量表达超市多种商品间的关联关系的密切程度,根据4717个顾客对999种商品的购买记录,令i x 表示第i 个顾客的购买情况,当第i 个顾客购物篮里有第j 个商品,1ij x =;没有购买,则0ij x =。
这就把复杂繁多的数据化为了简单易求的0-1模型。
根据购买记录,求出购买j 商品的顾客集合和购买k 商品的顾客集合,两集合的交集(同时购买)所代表的人数与购买人数的比值即为频率,此频率表示两商品的相关程度,考虑到购买人数较少也会造成频率较大的情况,对模型进行改进,将同时购买的人数与至少买一种商品的人数的比值作为相关系数,转化后的模型仍存在缺陷,购买次数较少时也会造成系数较大但不能反映商品相关性的问题。
综上两种考虑,将两个模型结合起来,得到最优模型,用此模型来定量表达商品间的关联关系的密切程度。
由题目可知,此模型所得结果必定大于0小于1,为验证模型的可靠性,本文运用Matlab 对数据进行预处理,将数据转化为0-1矩阵后,再根据公式编程筛选出两商品相关系数较大的前八位,由所得系数与函数大于0小于1的性质相比,若符合,则模型是可靠的;若不符合,则再求新的定量模型。
2.2问题二的分析要求我们寻找一种快速有效的方法从购买记录中找出被最频繁购买的商品,并且被同时购买的数量越多越好。
根据问题一Matlab对数据进行的0-1矩阵处理,并在Excel 中对数据进行求和以及排序处理,得到一次购买一次商品的次数最多的前18个商品。
由于数量的繁多,我们将从这18种商品中求出两件被同时购买以及三件、四件商品被同时购买的信息。
因此我们调出这18种商品的0-1矩阵,并用Matlab编程得到两件商品同时被购买的频数,并用Apriori算法的原理提出支持度s,用其来筛选得到的众多数据,修改程序以得到三件商品、四件商品被同时购买的数据。
2.3问题三的分析对于问题三,要求根据问题一和问题的模型给出一种促销的方案,促使效益进一步增大。
首先我们定义f为超市的收益,商品的数量为n,商品的利润为w。
则f w n=⋅。
我们考虑将数据中卖出数量多的商品且利润大的商品附赠以卖出商品数量多但是收益较小的商品来进一步提高它们卖出的数量以获得更大的利润。
而对于那些卖出数量以及能够获得的利润都适中的商品,根据问题二求得的两件商品被同时购买的数量将它们放在一起促销,这样也会获得较高利润。
三、模型假设1、超市货源充足最大限度满足顾客需求;2、短时期,商品的销售情况保持不变;3、每位顾客的购物行为都是理性的,真实反映当地的消费情况;4、假设两商品同时被购买次数大于200的为高销量商品;5、假设商品收益只考虑销售所得收入,不考虑商品成本;四、符号说明和名词解释4.1符号说明4.2名词解释1、布尔量:本题中所指的是购买或未购买,购买时布尔量=1,未购买布尔量=0;五、模型建立与求解5.1模型的准备5.1.1问题一模型的准备由于本题是针对大型超市购物篮的问题,数据繁多,且只考虑顾客的购买记录,即买或不买,并以此研究商品间的关联程度,因此本题先对所给数据进行预处理,将4717位顾客对999种商品的购买转化为0-1模型,方便问题的求解。
首先以i x 表示第i 个消费者的某次购物行为,如果在消费者的购物篮中发现了第j 种商品,则有1ij x =,否则0ij x =(同时ik x 表示第i 个消费者购买第k 种商品)。
5.2问题一模型的建立与求解 5.2.1模型的建立本题消费者购买只有两种情况,即购买或不购买,因此可以用到0-1模型。
为表达超市中多种商品间的密切关联程度,本题建立了定量模型。
首先,用i x 来描述第i 个消费者的购物情况,1ij x =表示第i 个消费者购买了第j 个商品,反之,0ij x =表示未购买。
因为是根据顾客对商品的购买记录来求解,因此本文对购买某种商品的顾客进行分类,设购买j 的人的集合为j s ,购买k 的人的集合为k s ,则j k s s ⋂表示同时购买j 商品和k 商品的顾客。
由此可将两种商品的相关联程度表示为:1j ks s p n⋂=此公式表示同时购买两种商品的频率,频率越高,相关性越大,但若购买人数少,也会导致频率值较大,显然这样的表达不能准确反映两商品间的关联程度,因此对此模型还应进一步改进。
对购买人数n 进行改进,考虑到有顾客在两种商品中至少购买一种的情况,将n 化为k j s s ⋃,则两种商品的相关联程度转化为:2i ki ks s p s s ⋂=⋃ 此公式表示两种商品都买的情况占至少购买一种情况的比值,即频率,也能反映两商品间的关联程度,但其同第一个公式类似,存在购买商品次数少但导致频率较大,而不能反映两商品相关性的缺陷,因此,综合两种情况,得到最优模型:j ki k i ks s s s p ns s ⋂⋂=⨯⋃p 表示两商品的相关性,若p 较大,剔除购买次数较小的情况,即可反映当消费者购买一种商品时,对另一种商品的购买可能性很大,两种商品的关联相关性密切。
5.2.2模型的求解对上述模型进行具体求解,其中i k s s ⋂表示同时购买j 商品和k 商品的人数,公式为:1*nj k ij ik i s s x x =⋂=∑i k s s ⋃表示两种商品中至少购买一种商品的人数,其具体公式为:111=*nnnj k ij ik ij ik i i i s s x x x x ===⋃+-∑∑∑j k s s ⋂小于购买人数n ,同时小于至少购买一种商品的人数,所以p 小与1。
将题目中所给数据运用Matlab 进行预处理,将其转化为0-1矩阵,由于数据过多,则将所得矩阵放在附录中,详见附录1。
根据所得关联函数公式,用Matlab 编程求出两商品间关联系数较大的前八位,如下图所示:围之,与所得模型函数的围一致,可知,该模型是准确可靠的。
5.3问题二模型的建立与求解分析最频繁被同时购买的商品,且越多越好。
首先我们要找出单独一项商品被购买的频数,根据频数较高的单项商品集,通过筛选得出两种商品被同时购买的频数,以此类推,层层迭代,找出多种商品被同时购买的频数。
Aprior 算法使用频繁项集的先验性质,通过逐层搜索的迭代方法,先扫描数据库,再累积每个项的计数,并收集满足最小支持度的项,找出频繁项集的集合,直到所求条件。
因此本文运用Aprior 算法,对此题作出分析并求出最佳结果。
其具体算法过程如下:此算法体现出若A 是一个频繁项集,则A 的每一个子集都是一个频繁项集。
首先我们提出支持度s 的概念,支持度是D 中包含A 和B 的事务数与总的事务数的比值。
可以利用支持度的大小来筛选数据。