假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢?这个功能在很多电商类网站都有,那么,通过SQL Server Analysis Services的数据挖掘功能,你也可以轻松的来构建类似的功能。
将分为三个部分来演示如何实现这个功能。
第一篇介绍如何使用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服务。但作为一个系列考虑到每个人的侧重点都不同,为了做一个整体的介绍,所以这里还将细致到每一步的操作。
通过第三篇的内容,你可以看到如何通过一个客户端程序访问服务接口然后做挖掘预测查询从而实现商品推荐功能。
第四篇独立于前三篇,主要介绍如何通过Excel的数据挖掘来独立的实现商品推荐功能,将通过微软提供的示例数据来进行演示。
Excel是大家再熟悉不过的工具,它是微软Office里的组件之一。在baidu百科中你可以找到如下的描述:
Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
数据处理,统计分析是我们经常用Excel来做的事,而辅助决策对应商业智能中的最高的一个层次,也就是微软提供的Excel数据挖掘功能。
在Excel中进行数据挖掘,需要安装一个插件:SQL Server Data Mining Tools Add-ins for Office。
通过第四篇的内容,你可以看到如何通过Excel实现商品推荐功能。
第五篇承接上一篇,主要介绍如何组织数据然后通过Excel的数据挖掘来独立的实现商品推荐功能。
上一篇中我们演示了如何用微软提供的Data Mining for Add-ins里的示例数据来实现挖掘预测分析的功能,此篇我们用Adventure Works来演示如何来组织数据在Excel中进行挖掘预测。
微软提供的Adventure Works示例库分为OLTP库和OLAP库,前者记录业务数据,在一个系统中的业务数据通常都是操作在这一层,业务数据层经过ETL的清洗加载和转换进入到数据仓库,供分析系统做统计分析。
关于如何获取并且安装这些示例库,可以参考我的这篇随笔。
通过第五篇的内容,你可以简单的了解如何组织数据挖掘的样本数据,并且在Excel中导入。
前几篇中,简要的介绍如何建立挖掘模型并且编写程序用简单的DMX查询挖掘模型从而实现预测,然后简要介绍如何在Excel中独立地进行预测分析。此篇讲简单介绍如何通过DMX语句创建挖掘结构和挖掘模型,并且训练模型,然后进行预测查询。
在分析服务中涉及到很多门查询语言,首先,SQL语言是我们最熟悉不过的了。在分析服务中,可以通过 SQL来为多维数据集建立分区,或者在数据挖掘中指定训练数据或者预测数据。其次,MDX,可以用它来查询多维数据集。然后就是本文所介绍的DMX,它主要面向分析服务中的数据挖掘部分,通过它可以建立挖掘结构和挖掘模型,以及训练数据和做预测查询。
在微软的文档及示例还有很多图书著作中,通过DMX的方式通常被分为三个步骤: 1.建立挖掘结构 2.建立挖掘模型 3.训练数据 4.预测查询
通过第六篇的内容,你可以简单的了解如何组织数据挖掘的样本数据,并且在Excel中导入。
上一篇中介绍的是如何通过DMX来创建挖掘模型,这一篇讲简单介绍如何通过编程的方式来创建挖掘模型。
通过编程的方式主要通过AMO来实现,分析服务的所有跟架构相关的实现,包括多维数据集和数据挖掘,都通过这个接口实现。
AMO对象树包含了支持多维数据集和数据挖掘所有的对象模型,在我这篇随笔中可以详细看到它的结构。
通过第七篇一段完整的演示,你可以了解到使用AMO创建模型的具体细节变成方法。
第八篇继承前几篇,主要演示在分析服务下创建CLR存储过程的完整过程
在SQLServer数据引擎服务中,编写存储过程,我们可以通过SQL语句以及CLR的方式进行编写。那么在分析服务下能否写存储过程呢?答案是可以的,只不过是只能通过CLR的方式来实现。以下记录实现过程及要点。
通过第八篇一段完整的演示,你可以了解到创建CLR存储过程的步骤。
希望这个小系列能在项目中帮到大家。
文章相关文件下载:
用到的资源:
相关插件下载:
Microsoft SQL Server 2012 Data Mining Add-ins for Microsoft Office 2010