基于asp.net的商品推荐系统
一、系统规格说明
(一)系统功能和目标:
本决策系统用于购物网站的物品推荐,通过参考一系列相关系数,对选购用户提供一些相关联的货物推荐,以提高销售量。
(二)本系统要实现的主要功能有:
1、列出货物清单。
把所有的货物清楚的列出来,并附有商品的图片及名称,能点击看各商品的详细信息。
2、能对货物详细信息进行查看。
其中要包括货物的名称,图片,简介。
3、用户能把需要购买的货物放入购物车
方便用户继续选购其他货物。
4、系统能自动对相关货物进行推荐
根据已选的货物,对用户进行其他货物的推荐。
5、系统能根据用户所填写的查询资料进行该货物是否购买的选择
对于某件货物,系统会根据用户所填写的年龄、性别、收入进行判断大部分用户是否购买了该货物。
二、可行性分析
(一)技术可行性
软件方面,我们拟采用以下几种软件:
1、操作系统用windows xp或windows 7。
Windows XP 64 位版本提供了一个可伸缩的高性能平台,用于运行基于 Windows 的新一代强大应用程序。这种平台的体系结构可以更有效地处理海量数据,最高可支持 16 TB 的虚拟内存。使用 64 位的 Windows,应用程序可以将足够多的数据预加载到虚拟内存中,以便 Itanium 处理器快速访问这些数据。这种特性减少了将数据载入虚拟内存,以及查找读取数据并将数据写入数据存储设备所花费的时间,因此可使应用程序运行地更快、更高效。
Windows 7做了许多方便用户的设计,如快速最大化,窗口半屏显示,跳转列表,系统故障快速修复等。Windows 7大幅缩减了Windows 的启动时间,据实测,在2008年的中低端配置下运行,系统加载时间一般不超过20秒,这比Windows Vista的40余秒相比,是一个很大的进步。Windows 7将会让搜索和使用信息更加简单,包括本地、网络和互联网搜索功能,直观的用户体验将更加高级,还会整合自动化应用程序提交和交叉程序数据透明性。 Windows 7包括了改进了的安全和功能合法性,还会把数据保护和管理扩展到外围设备。Windows 7改进了基于角色的计算方案和用户账户管理,在数据保护和坚固协作的固有冲突之间搭建沟通桥梁,同时也会开启企业级的数据保护和权限许可。Windows 7 的 Aero 效果华丽,有碰撞效果,水滴效果,还有丰富的桌面小工具。这些都比Vista增色不少。但是,Windows 7的资源消耗却是最低的。不仅执行效率快人一筹,笔记本的电池续航能力也大幅增加。Windows 7 的小工具更加丰富,并没有了像Windows Vista的侧边栏,这样,小工具可以放在桌面的任何位置,而不只是固定在侧边栏。
2、Asp.net工具。
ASP.NET 是 Microsoft .NET Framework 的一部分,是一种可以在高度分布的 Internet 环境中简化应用程序开发的计算环境。.NET Framework 包含公共语言运行库,它提供了各种核心服务,如内存管理、线程管理和代码安全。它也包含 .NET Framework 类库,这是一个开发人员用于创建应用程序的综合的、面向对象的类型集合。
3、文件系统软件用sql server2005。
SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序 。SQL Server 2005不仅可以有效地执行大规模联机事务处理,而且可以完成数据仓库和电子商务应用等许多具有挑战性的工作。
以上软件的组合绝对保证了整个系统的安全性、稳定性、可靠性和可扩展性。
(二)经济可行性
目前只是一个初步的开发,对于一些小网站来说可用性较高,而且成本低。
(三)社会可行性
本系统的社会可行性主要体现在以下几方面:
1、自由软件的使用使得在软件方面避免了任何版权、专利权等法律问题的纠缠。
2、本系统软件硬件一体化解决了当前自由软件安装配置难的问题,满足了用户的需要。
3、由于开发成本的降低使得产品价格也会在市场上占据绝对优势。
三、需求规格说明
(一)任务概述
需求分析工作是软件生存期中重要的一步,也是起决定性的一步。我们试图通过它来全面了解整个系统的软件功能和性能方面的要求,为软件设计打下坚实的基础。该部分的目标主要有:获得当前系统的物理模型,了解当前系统是如何运行的;抽象出当前系统的逻辑模型,对物理模型进行筛选,得到与软件系统有关的部分;建立电子邮件系统的逻辑模型,得出数据流图和数据字典;补充目标系统的逻辑模型,对目标系统的用户界面,至今尚未考虑的细节进行说明。
(二)数据描述
1、数据库描述
虽说本系统是以决策为中心,但是需要建立在大量的数据上。因此对于这一大堆数据的存储跟提取最有效的方法就是数据库。
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。数据一致性和可维护性,以确保数据的安全性和可靠性。由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
2、数据流图
本系统的主要流程是是在用户和系统之间交互进行。
系统的一级流图如下所示:
(三)功能需求
1、功能划分
A、列出商品清单
B、能对货物详细信息进行查看
C、用户能把需要购买的货物放入购物车
D、系统能自动对相关货物进行推荐
E、系统能根据客户所填写的查询资料进行该货物是否购买的选择
2、功能描述
A、列出商品清单
能让用户在一个页面看到所有的商品及该商品的基本信息,包括一副图片及名字
B、能对商品详细信息进行查看
商品的各项信息能进行较为详细的查看,并附有简单的说明
C、用户能把需要购买的商品放入购物车
方便用户继续进行选购,也可以把用户所选购的物品列出一个清单
D、系统能自动对相关货物进行推荐
在购物车中,系统能根据用户已经选购的商品及其他用户选购的相关性对用户提供相关物品的推荐。
E、系统能根据客户所填写的查询资料进行该商品是否购买的选择
用户能够按照自己的年龄、性别、收入查看大部分相似的人是否购买了该商品
(四)运行需求
1、用户接口
购物推荐系统作为一个面向大众的应用系统,对人机界面要求很高。网页格式必须大众化,争取和一般的购物推荐系统(如淘宝,凡客等)的格式大致不变,以便于用户能马上掌握系统的操作方法。当然风格上可以有自己的特色。
2、硬件接口
本系统也可采用分布式处理的方式,故要求到多台服务器的并行连接。
3、软件接口
本系统所用到的软件产品列出如下:
A、操作系统:windows xp,windows 7
B、asp.net工具
C、文件系统软件:sql server2005
(五)属性需求
在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,重启动速度快,以确保软件可使用性好。
在安全保密性方面,系统需设置防火墙。另外,还要求系统的可扩展性、可维护性、可移植性良好。
四、概要设计说明
(一)任务概述
本阶段的主要任务是根据需求规格说明确定设计目标,以及它们的优先顺序,并根据目标确定最适合的设计方法,制定各种规范。将系统按功能划分成模块的层次结构。确定每个模块的功能,建立与已确定的软件需求的对应关系。确定模块之间的调用关系,确定模块之间的接口,即模块之间传递的消息。设计好接口的信息结构,评估模块划分的质量及导出模块结构的规则。完成数据库设计,避免数据大量冗余。
(二)总体设计
1、处理流程
作为运行的前奏,要先让用户能对各个商品进行浏览,并能进入各自页面了解商品的详细信息。用户所选择的商品能放入购物车的同时系统会自己对用户进行相关商品的推荐。用户还能根据自己的信息查看其它用户是否购买了该商品。
2、软件结构
本系统的模块设计在考虑具体情况的前提下,整个系统一共分四个模块。
商品清单
商品详细介绍
购物车(包括相关商品的推荐)
购买查询(即相关人士购买查询)
(三)运行模块
1、运行模块的组合
由上面的模块结构图可以看出有“商品清单”,“商品详细介绍”和“购物车”三个模块处对外界的不同控制行为会引起不同的模块进行反映:
商品清单模块设置两个连接“商品详细介绍”和“购物车”,用户单击“测试主题X 购买”(X为数字1,2,3……)之后就进入了商品详细介绍模块;用户单击“查看您的购物车”会直接进入购物车模块。
商品详细介绍模块设置了三个连接。可以通过点击“取消返回”返回到商品清单模块,通过点击“看看与您相似的人的决定”可以进入购买咨询模块,点击“查看您的购物车”会直接进入购物车模块。
购物车模块设置连接调用数据库管理。
2.运行控制方式采用超级连接触发的方式。
(四)数据库设计
本系统中主要涉及用户,商品两个实体。它们之间的联系主要是用户购买商品,商品提供介绍给用户。它们用E——R图表示如下:
根据E——R图我们设置表buy_list描述用户到商品的联系。表dbo.Buy_list描述用户信息。表product描述商品的详细信息。
各个表的字段名和定义如下所示:
(五)决策方法设计
1、购物车中商品推荐的决策方法:
因为需要由相关其他用户的购买数据及该用户购买数据来进行推荐,所以采用朴素贝叶斯算法。
朴素贝叶斯分类的工作过程如下:
(1) 每个数据样本用一个n维特征向量X= {x1,x2,……,xn}表示,分别描述对n个属性A1,A2,……,An样本的n个度量。
(2) 假定有m个类C1,C2,…,Cm,给定一个未知的数据样本X(即没有类标号),分类器将预测X属于具有最高后验概率(条件X下)的类。也就是说,朴素贝叶斯分类将未知的样本分配给类Ci(1≤i≤m)当且仅当P(Ci|X)> P(Cj|X),对任意的j=1,2,…,m,j≠i。这样,最大化P(Ci|X)。其P(Ci|X)最大的类Ci称为最大后验假定。根据贝叶斯定理
(3) 由于P(X)对于所有类为常数,只需要P(X|Ci)*P(Ci)最大即可。如果Ci类的先验概率未知,则通常假定这些类是等概率的,即P(C1)=P(C2)=…=P(Cm),因此问题就转换为对P(X|Ci)的最大化(P(X|Ci)常被称为给定Ci时数据X的似然度,而使P(X|Ci)最大的假设Ci称为最大似然假设)。
否则,需要最大化P(X|Ci)*P(Ci)。注意,类的先验概率可以用P(Ci)=si/s计算,其中si是类Ci中的训练样本数,而s是训练样本总数。
(4) 给定具有许多属性的数据集,计算P(X|Ci)的开销可能非常大。为降低计算P(X|Ci)的开销,可以做类条件独立的朴素假定。
给定样本的类标号,假定属性值相互条件独立,即在属性间,不存在依赖关系。这样可由训练元组估计概率P(X1|Ci),P(X2|Ci),...P(Xn|Ci),Xk表示元组X的属性Ak的值
(5) 对未知样本X分类,也就是对每个类Ci,计算P(X|Ci)*P(Ci)。
样本X被指派到类Ci,当且仅当P(Ci|X)> P(Cj|X),1≤j≤m,j≠i,换言之,X被指派到其P(X|Ci)*P(Ci)最大的类。
2、相似人群咨询决策方法:
经过详细的考虑Apriori 算法是比较符合该决策咨询。
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法。
L1 = find_frequent_1-itemsets(D);
for (k=2;Lk-1 ≠Φ ;k++)
{
Ck = apriori_gen(Lk-1 ,min_sup);
for each transaction t ∈ D//scan D for counts
{
Ct = subset(Ck,t);//get the subsets of t that are candidates
for each candidate c ∈ Ct
c.count++;
}
Lk ={c ∈ Ck|c.count≥min_sup}
}
return L= ∪k Lk;
可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点。
流程图如下:
(六)运行结果
商品清单:
商品详细信息:
购物车:
相似人群购买参考:
(七)系统出错处理
1、出错信息:
本系统中可能出错的情况:
2、出错处理方法及补救措施 :
五、个人小结
参考文献:
[1]高洪深.决策支持系统(DSS):理论与方法(第4版) [k].北京:清华大学出版社,2009
[2]谭贞军.深入体验ASP.NET项目开发[k].北京:清华大学出版社,2011