论文原稿.docx
- 文档编号:3917133
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:19
- 大小:203.93KB
论文原稿.docx
《论文原稿.docx》由会员分享,可在线阅读,更多相关《论文原稿.docx(19页珍藏版)》请在冰豆网上搜索。
论文原稿
摘要
本文介绍了在超市中如何使用计算机对顾客购物品种的相关性进行分析,并对超市的管理者提供如何更好地摆放商品的决策支持。
我们使用SQLServer2000建立数据库并存储数据,用VC++6.0设计友好的界面,用MATLAB进行数据的分析处理得出柱状图、商品间的关联图和关联数据。
我们使用ODBC(开发数据库互连)技术实现SQLServer2000与VC++6.0的连接,使用MATLAB自带的MatlabCompiler将处理数据的函数解释成VC++6.0语言,再通过VC++6.0的调用实现数据的输出,图形的展现并得出相应的结论。
MATLAB在数值分析、绘制数学图形和自动控制模拟等方面有广泛的应用。
VC是目前综合性最高、最强大的软件开发工具之一,应用极为广泛。
我们通过MatlabCompiler将Matlab语言转换成C++语言,这样既保持了Matlab的优良算法,又利用了VC++6.0的高效率。
也就是说,开发人员可以在VC的编译环境下,建立友好的界面,而将一些底层的工作如数据的处理、图形的展现、仿真等原来用VC实现较复杂的工作,都较给Matlab来做。
所以,本系统采用VC与MATLAB一起开发是很有必要的。
关键词:
购物品种;决策支持;Matlab;VisualC++6.0;柱状图;关联图
ABSTRACT
Thisthesisintroduceshowtousecomputertoanalysethebehaviorofthecustomersinthesupermarketandoffersthedecisionsurportthathowtodisplaythecommoditiesbettertothemanagers.
WecreatedatabaseandstoragedatainSQLServer2000,designfriendlyinterfacewiththeVisualC++6.0andanalysedataforthehistogram,theassociateddataandgraphicsinMATLAB.WeusethetechnologyofODBC(OpenDatabaseConnected)toconnecttheVisualC++6.0andSQLServer2000,usetheMatlabCompilertodeciphertheMfunctiontotheC++functionwhichcanbecompiledandexecutedintheVisualC++6.0,andthencallthemintheVisualC++6.0togettheexporteddataandgraphicsfortherelevantconclusion.
TheMatlabhaveaextensiveapplicationsonnumericalvalue’sanalysis,drawingMathematicgraphicsandtheareaofautocontrolsimulationandsoon.VCisoneofthemostpowerfultoolsonsoftwaredevelopmentandalsousedextensively.WeusetheMatlabCompilertodeciphertheMfunctiontotheC++function.Inthisway,itcankeepthegoodarithmeticofMatlabandthehighefficiencyofVisualC++6.0.Inotherwords,thedevelopercanmakeafriendlyinterface,andthelowerworksuchasvalue’sanalysisandspecialfunctionandgraphicsandsoon,issubmittedtoMatlab,whichisdiffcultandhardtoimplementbyVisualC++.Soit’snecessarytodevelopthissysteminVCandMATLAB.
Keywords:
KindsofShopping;DecisionSurport;MatlabVisualC++6.0;Histogram;AssociatedGraphics
1概述
1.1问题的提出
随着计算机技术的快速发展,计算机的应用已深入到社会生活的各个方面。
在工业、农业、商业、文化教育、国防等领域和行业都已广泛地使用计算机。
运用计算机和数据挖掘技术,从大量数据中去发现事先未注意到的额外信息并运用计算机数据处理软件进行分析,为管理者提供决策支持。
本此分析就是通过营销方法学研究顾客的购物行为。
超市中消费者购物品种的相关性分析是通过研究顾客在超市的购买交易中,他们同时购买一类或一组商品的可能性(相互关联性)。
我们将从顾客购买商品的交易表出发,运用SQLServer2000建立数据库,VisualC++做界面,MATLAB数值分析软件进行数值处理得到每种商品卖出的总量和顾客同时购买两种商品组合的可能性的高低。
1.2开发工具
1.2.1SQLServer2000和VisualC++的介绍
MicrosoftSQLServer2000中文版,是基于客户端/服务器模式(Client/Server模式,简称C/S模式)的新一代大型关系数据库管理系统(DBMS)。
它在电子商务、数据仓库和数据库解决方案等应用中起着重要的核心作用,为企业的数据管理提供强大的支持,对数据库中的数据提供有效的管理,并采用有效的措施实现数据的完整性及数据安全。
购物商品相关性分析中的数据库将用此软件设计。
VisualC++也是由Microsoft公司推出的可视化编程语言,它是目前综合系最高、最强大、也是最难学的软件开发工具之一,应用极为广泛。
由于它极佳的用户可视化操作,就用它来进行可视化界面的设计。
1.2.2Matlab的简介
Matlab是MathWorks公司的产品。
它是一种交互式、面向对象的程序设计语言,广泛应用于工业界与学术界,主要用于矩阵运算,同时在数值分析、自动控制模拟、数字信号处理、动态分析和绘图等方面也具有强大的功能。
Matlab的突出特点是简洁,在数据处理方面有很高效率,它利用专家编写的丰富的函数资源,给用户带来最直观的开发环境。
Matlab的最新版本是MATLAB7.0。
购物商品相关性篮分析中就运用它进行数据的高效处理。
1.2.3Matlab与VisualC++6.0的连接
Matlab提供了MatlabCompliler将开发出来的M程序转换成C++源代码,然后可以供C++程序调用。
由于Matlab的版本不断更新,Matlab6.5已可以利用MatlabCompliler来实现其与C++的连接。
虽然编译处理的程序不能完全脱离Matlab的环境,但是Matlab6.5可以方便的将编译后与C++结合的应用程序移植到其他的没装Matlab的计算机上运行。
MATLAB是一套功能非常强大的商业数学软件,从信号处理,语音处理,数据采集,数值运算,图像处理,到电子仿真,金融分析等等,几乎在各个工业领域,它都已经得到了广泛应用,同时也取得了巨大的成功。
我的开发环境是:
WindowsXP(sp2),SQLServer2000,VisualC++6.0和Matlab6.5。
2模型的建立
2.1商品相关性分析的目的
超市中的分析决策系统分析的目标是在顾客的购买交易中分析出同时购买一类产品或一组产品的可能性(相互关联)[1]。
从商品相关性分析中获得的知识是很有价值的,例如,超级市场可以利用这些知识重新摆放商品,将可能同时卖出的商品摆放在一起。
商品相关性分析分析还可用以提高促销活动的效果,也就是关联的商品不应该在相同的时期进行促销。
通过促销关联商品中的一种,不仅可以提高这种商品的销售,而且可相应地提高与之关联的商品的销售[2]。
通常认为用于商品相关性分析的数据库应该包括某个特定的时期、特定销售地点的全部事务记录,顾客可以在数据库中多次出现。
事实上,只要顾客在一个购物点购买一次,他就会在数据库中出现。
商品相关性分析的目的就是区分出顾客最常购买的商品的组合。
关联规则阐述了这里要使用的基本方法。
实际上,这些规则就是为了这个目的而开发出来的。
通过分析顾客所购买商品的组合和这些组合的重复次数,可以得到形如“if条件then结果”的规则,用来描述对应兴趣度的测量。
这种类型的每个规则都可用来描述特定的局部模型。
2.2数据描述
数据集是某家大型连锁超市的顾客交易数据表(详见附录顾客交易表)。
这个数据集合只是一个大型数据库的一部分,这个大型数据库存放了该超市的多家连锁店的交易记录。
每家连锁店中的全部事务记录都是持有连锁优惠卡的人购买商品的事务记录。
每张优惠卡都有关于所有者身份特征的编码,包括重要的个人信息,例如性别、出生日期、配偶的出生日期、子女数量、教育程度和职业等。
优惠卡使得分析人员可以追踪卡持有者的购物行为:
在指定的时间内到超市购物次数,购买了什么,促销对他们购物是否有影响等等。
这里只考虑交易数据,以便挖掘商品间的联系,所以不考虑人数变化的影响和促销的效果。
一个记录统计(也就是数据库中的一行),对应一张优惠卡号和一个所购买的商品。
对于每张卡号可能存在多个商品,在文件中,同一张卡号可能会出现多次,每次对应于该顾客去了某家连锁店购物。
如果不考虑商标、规格和具体类型(如重量、颜色和尺寸)等因素,这个店的商品种类大约是5000类。
商品通常是分类的,这个店的商品种类大约是493类。
为了清楚起见,这里只分析20种商品,这些商品都是卖得最多的。
下表用于分析的20种商品:
表2-1商品种类表
Count
Item
1
4541
Egg鸡蛋
2
4428
Milk牛奶
3
3452
Water矿泉水
4
3371
Biscuits小点心
5
2703
Coffee咖啡
6
2680
Brioches奶油蛋卷
7
2493
Yoghurt酸乳酪
8
2484
Frozenvegetables冷冻蔬菜
9
2464
Tunny金枪鱼
10
1970
Beer啤酒
11
1958
Tomatosouce西红柿酱
12
1883
Coke可乐
13
1822
Rice大米
14
1681
Juices果酱
15
957
Crackers饼干
16
775
Oil食用油
17
759
Frozenfish冷冻鱼
18
445
Icecream冰淇淋
19
432
Bread面包
20
177
Tinnedmeat罐头肉
2.3局部模型中的关联规则
2.3.1关联规则
关联规则是在计算机科学领域中形成和发展的,通常用于重要的应用分析,如本此测量一个特定的顾客于所购买货物间的关联的市场购物分析,或用于测量网站访问者按时间顺序访问页面间的关联的Web点击流分析。
通常,目标是强调在一系列事件中同时发生的一组项目。
关联规则通常用于处理事务数据库中的数据。
对于每一个事件(数据库中的一行),数据库中包含了同时发生项目的列表。
注意每个事件在数据集中出现的次数可能不止一次。
在购物商品相关性分析中,一次事件是指单独一次访问超市的行为,其中购物列表已被记录。
行通常有一系列不同的项目,这和数据矩阵有显著的区别。
数据库可以转换成一个二值数据矩阵,事件作为行,项目作为列。
假定X1,…,Xp是一系列随机变量,通常这些变量的模式可以确定所有观测数据属于这个模式的一个子集。
描述模式的常用方法是通过一系列简单模式以及可以处理模式的逻辑连接[3]。
关联规则考虑特殊类型模式间的规则,称为项集。
在一个项集中,每个变量都是二值的,如果特定条件为真,取值为1,否则取值为0。
关联规则的阶(order)是所考虑项目的总个数。
假定超级市场总共有100000件货物,它们中的任一件对应于一个二值随机变量,取决于这件商品在一次事件中是否被购买。
一个简单的阶为3的关联规则为:
(MilkΛTea)→Biscuits。
简记为A→B,代表上面描述的关联规则,A是前件或规则体,B是后件或者规则头。
2.3.2绝对频率
关联规则建模的主要问题是从现有的数据库中找出感兴趣的关联规则子集。
对应一个给定规则,如A→B,假定NA→B是绝对频率(次数),即在至少一次观测中规则出现的次数。
2.3.3相对频率
规则的支持度是相对频率,代表观测到规则的事件比率。
规则A→B的支持度为满足规则的事件次数除以事件总数N。
2.3.4置信度
置信度表示一个相对频率(条件概率),即它表示如果规则包含规则体A,它也包含规则体B的次数的比例值,换句话说就是当A为真时,B发生的频率(概率)。
置信度是关联规则兴趣度测量的常用方法,用于测量两个项间关系的强度。
2.3.5优势率
优势率(oddsradio)是对关联的测量,关联构成了分析定性数据统计模型的基本指标。
设N(1|1)和N(0|1)表示在第1行中取值1(成功)和0(失败)的条件概率;N(1|0)和N(0|0)表示第0行中取值取值1(成功)和0(失败)的条件概率。
第1行成功的比值(odds)定义为:
odds1=N(1|1)/N(0|1);
第0行成功的比值(odds)定义为:
odds0=N(1|0)/N(0|0);
上面两个的比值就是优势率:
θ=odds1/odds0=N(1|1)*N(0|0)/(N(1|0)*N(0|1));
优势率有以下3个特性:
•优势率为非负数,即在[0,+∞〕区间上取值
•当X和Y互相独立时,N(1|1)=N(1|0),因此odds1=odds0且θ=1。
另一方面根据优势率是大于还是小于1,可以评价关联的程度:
当θ>1时是正关联,因为行1成功的比值大于行0成功的比值。
当0<θ<1时是负关联,因为行0成功的比值大于行1成功的比值。
•当行的顺序或列的顺序取反时,θ的新值与原始值互补。
当表转置时,使得行变成列,列变成行,优势率不会改变。
2.4探索性数据分析
为了认识20种选定商品间的关联这里使用了190(C220=20*19/(2*1))个二向关联表,每一个表对应一对商品。
下表就是其中的一张列联表,可以用来研究Icecream(冰淇淋)和Coke(可乐)之间的关联。
如果值1落在置信区间外,那么就认为关联是重要的。
可以说在这两种商品之间存在着强正关联。
例子空间是很大的,有46727个事务记录,所以即使很小的优势率也是很重要的[4]。
表2-2COKE与ICE_CREAM的关联表
0
1
Total
0
41179
4779
45958
88.13
10.23
89.60
10.40
98.35
98.57
96.56
1
599
170
769
1.28
0.36
77.89
22.11
1.65
1.43
3.44
Total
41778
4949
46727
89.41
10.59
100.0
该表的含义:
(cokeicecream)=(00,01,10,11);即它们没有被同时购买、coke被购买但icecream没有被购买、icecream被购买但coke没有被购买以及被同时购买。
41179+599+4779+170=46727为事务记录总和,分别表示(00,01,10,11)的绝对频率,即在总记录中出现的次数。
41179/46727=88.13%————————记录(00)在总记录中的相对频率
41179/45958=89.60%————————记录(00)在行记录中的相对频率
41179/41779=98.57%————————记录(00)在列记录中的相对频率
优势率为:
θ=N(1|1)*N(0|0)/(N(1|0)*N(0|1))=170*41179/(599*4779)=2.4455
通过对190个二向关联表的分析可以得出两种商品间的优势率序列,及商品间强正关联示意图:
14.YOGHURT
6.CRACKERS
图2-1强正关联示意图
2.5数据流程
图2-2数据流程图
2.6应用计算机分析应达目标
画出每种商品销售总量柱状图,商品间强正关联示意图,返回190对商品间的优势率,即关联程度的信息。
3SQLServer2000下数据库的建立
在SQLServer2000下,新建一个数据库bysj,然后新建一个表Cards,下表为Cards表的属性。
由于顾客会多次在大型超市购买商品,我们就没有设置Cards表的主键。
商品的数目是整数就使用int类型,用户的卡号我们使用int类型以便在VisualC++中容易操作。
然后表中加入记录集:
表3-1数据属性表
列名
数据类型
长度
允许空
COD_CART
int
4
TIN_MEAT
int
4
BREAD
int
4
…
…
…
…
RICE
int
4
FROZEN_FISH
int
4
ICE_CREAM
int
4
将建立一个卡用户数据库,此数据库中建立一个名为Cards的表,该表有21列,第1列代表用户的卡号,第2-21列是商品的种类。
我们记录的是用户购买的商品数量。
此表中的部分内容如下表(详见附录):
表3-2顾客交易表
COD_CARD
TIN_MEAT
BREAD
TUNNY
MILK
…
RICE
FROZ_FISH
ICE_CREAM
46020
1
0
0
2
…
0
0
1
14563
0
2
0
0
…
2
0
0
………………………………………………………………
51687
2
0
0
0
…
1
1
0
69854
1
0
1
1
…
0
0
2
4VC与SQL2000数据库的连接与管理
4.1ODBC技术简介
4.1.1ODBC
ODBC(OpenDataBaseConnectivity)是客户应用程序访问关系数据库是提供的一个统一的接口,对于不同的数据库,ODBC提供了一套统一的API,使应用程序可以应用所提高的API来访问任何提供了ODBC驱动程序的数据库,并且,ODBC以成为一种标准,目前所有的关系数据库都提供了ODBC驱动程序,着使得ODBC的应用非常广泛,基本上可用于所以的关系数据库。
但由于ODBC只支持关系数据库,使得利用ODBC很难访问对象数据库及其他非关系数据库。
由于ODBC是一种底层的访问技术,因此,ODBCAPI可以使客户应用程序能够从底层设置和控制数据库,完成一些高层数据库无法完成的功能[5]。
4.1.2MFCODBC
直接使用ODBCAPI编写应用程序需要编写大量代码,VisualC++提供了MFCODBC类,其中封装了ODBCAPI,因此,使用MFC来创建ODBC的应用程序非常简便。
MFC的ODBC类对较复杂的ODBCAPI进行了封装,提供了简化的调用接口,从而大大方便了数据库应用程序的开发。
程序员不必了解ODBCAPI和SQL的具体细节,利用ODBC类即可完成对数据库的大部分操作。
MFC的ODBC类主要包括如下5类:
CDatabase类:
主要功能是建立与数据库的连接
CRecordset类:
代表从数据源选择的一组记录(记录集)。
CRecordView类:
提供了一个表单视图与某个记录集直接相连,利用对话框数据交换机制(DDX)在记录集与表单的控件之间传输数据。
CFieldExchange类:
支持建立字段数据交换(DFX),即记录集字段数据成员与相应的数据库的表的字段之间的数据交换。
CDBException类:
代表ODBC类产生的异常。
4.2ODBC的配置
首先启动服务管理器
开始菜单->控制面板,管理工具,数据源(ODBC),在用户DSN下新建,选择SQLServer完成,命名数据源名称为:
Matlab,你想连接的SQLServer服务器为:
local,然后设置登陆方式,选择使用网络登陆ID的WindowsNT验证(W),再更改默认数据库为bysj,下一步后,再点击完成,最后再点击测试数据源,测试成功后,ODBC就配置好了[6]。
4.3VisualC++下友好界面的编写
4.3.1设计出的界面预览
图4-1界面预览
4.3.2工程的建立
(1)打开“MicrosoftVisualC++6.0”,选择“File|New”菜单命令,弹出“New”窗口,选择“Projects”选项卡后在列表中选择“MFCAppWizard(exe)”,确定工程名称为“Graphics”,并选择工程存放路径。
(2)在弹出的“”对话框中,选择程序类型为第一项“Singledocument”。
(3)在“Step2of6”窗口中选择“Databaseviewwithfilesupport”,在点击“Datasource”按钮,在弹出的对话框中选择一个已注册好的数据源,选择刚刚注册的数据源Matlab,使用Snapshot方式访问数据表,OK后,将会让你选择需要连接的数据表,我们选择dbo.Cards,然后Next。
(4)到“Step4of6”窗口时,将Dockingtoolbar和Printingandprintpreview复选框上的勾去掉。
一路Next下去,最后点击完成[7]。
4.3.3界面的实现
在IDD_GRAPHICS_FORM窗口中加入TreeControl和ListControl控件[8]。
TreeControl控件设置其属性,在Styles下勾上Hasbuttons、Haslines及Linesatroot选项框。
ListControl控件设置其属性,在Styles中的View下拉框中选择report。
在View->ClassWizard的MemberVariables页下,为IDC_LIST1添加变量m_List。
在IDR_MAIN_FRAME中只留下“文件->退出”和“帮助”其余的菜单项及子项都删除。
4.3.4功能的实现
运用View->ClassWizard下的MessageMaps页下为IDC_TREE1添加双击事件,选择NM_DBLCLK点击AddFunction,将添加名为OnDblclkTree1的函数[9]。
为实现IDC_TREE1中双击事件的准确定位,首先得给IDC_TREE1中各个节点进行标注。
在OnDblclkTree1下添加如下代码:
CTreeCtrl*pTree=(CTre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 原稿