使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢?这个功能在很多电商类网站都有,那么,通过SQL Server Analysis Services的数据挖掘功能,你也可以轻松的来构建类似的功能。
将分为三个部分来演示如何实现这个功能。
1.构建挖掘模型
2.为挖掘模型编写服务接口
3.开发简单的前端应用
第一篇介绍如何使用SQL Server Analysis Services基于此问题来构建简单的挖掘模型。
关于数据挖掘,简单的就是说从海量数据中发现信息的一个过程。如果说商业智能分为三个层次:告诉你发生了什么,为什么会发生,将来会发生什么。那么,数据挖掘绝对算是商业智能中最高的一个层次,告诉你将来会发生什么,也就是预测。而预测的基础就是根据海量的历史数据,结合一定的算法,以概率为基础,告诉你一条新数据某条属性的趋势。
数据挖掘的模型很多,贝叶斯,时间序列,关联规则等都是常用的模型,根据不同的问题特征可以套用不同的模型算法。比如此篇提到的商品推荐,就是典型的适合用关联规则来解决。在数据挖掘中典型的啤酒和尿布的问题,大体上就是基于这个方法。
通过第一篇的内容,你可以基本掌握如何构建一个基于关联规则的数据挖掘模型。
第二篇在上一篇已经构建好挖掘模型的基础之上,介绍如何构建服务接口。
编写服务接口的方法很多,比如使用WCF。为了简便,这里直接使用ASP.NET Web Services。
将挖掘模型的具体查询的实现部分写到Web服务代码中,主要是考虑到代码分层降低耦合性。另外这部分逻辑通过服务的方式来暴露接口,可以方便其它任何平台来进行调用,比如ASP.NET, Winform, WPF或者其它基于java的技术框架等。Web服务最主要的部分是XML,一个服务接口往往就是一个URL地址,客户端程序通过向这个地址发送xml请求的方式,来获取服务端代码的响应,结果再以xml的方式返回回来。那么既然来回通信的都是xml数据,是否意味这还要手动写代码来序列化和反序列化xml数据呢?这里面又涉及到一个SOAP的概念,这是一个在10年前很火的概念,简单对象访问协议。通过这个SOAP协议,客户端程序可以知道要访问一个Web服务,应该发送什么样的xml数据,以及收到服务端xml的数据之后,本地再如何解析这些数据。基于这样一个方式,Visual Studio中,当你引用一个服务的时候,它就会根据这个协议,在你本地生成若干代理类,这样在你调用远程的一个Web服务的时候,你就会感觉像是在调用本地里的一个类的方法一样方便。
通过第二篇的内容,你可以基本掌握做数据挖掘查询的基本方法,以及如何使用数据挖掘模型。
第三篇在上两篇已经构建好挖掘模型和服务层的基础之上,介绍如何构构建简单的前端应用来做商品推荐功能。
由于我们用的是Web服务的方法来封装挖掘模型的查询,所以理论上这个服务可以被很多客户端应用程序访问,比如ASP.NET, winform和WPF等,这里我们选择Silverlight 5。
Silverlight 5是跟FLASH差不多的东西,是微软平台下的RIA方案。在这个平台下我们可以通过XAML开发出绚丽的应用程序。
虽然它的光辉已经快被HTML5所掩盖,而且微软也停止了后续版本的更新,全力的投入到HTML5中,但是HTML5成型还尚早,在企业开发中,Silverlight还是有十足的魅力和足够的优势以及强大的开发工具支持。
当然,如果你得项目是ASP.NET或者其它类型的项目,那么也可以参考此篇来进行操作。实际上此篇对于一个有经验的前端开发人员意义不大,因为这里主要讲的是如何调用一个Web服务。但作为一个系列考虑到每个人的侧重点都不同,为了做一个整体的介绍,所以这里还将细致到每一步的操作。
通过第三篇的内容,你可以看到如何通过一个客户端程序访问服务接口然后做挖掘预测查询从而实现商品推荐功能。
示例项目的结构:
希望这个小系列能在项目中帮到大家。
文章相关文件下载
分析服务项目下载
分析服务数据库备份下载
服务及前端程序下载
用到的资源:
如何获取官方的示例库并且部署它们
微软官方的数据挖掘教程