利用SSAS 2005进行数据挖掘

利用SSAS 2005进行数据挖掘

  SSAS是SQL SERVER 2005中用于BI的组件之一。通过SSAS可以创建多维数据库,并在之上进行数据挖掘操作。本文中要讲的就是利用SSAS进行数据挖掘的方法。在SSAS中进行数据挖掘可以有两种方式,一种是利用数据挖掘向导一步一步地创建挖掘结构和挖掘模型并进行模型的训练和预测。另一种方式就是使用DMX脚本的方式进行挖掘结构、挖掘模型的创建、模型训练以及模型预测。

    DMX是数据挖掘扩展,英文全称是Data Mining eXtension。 DMX的语法结构和SQL类似。DMX的操作对象是挖掘模型或挖掘结构,用于创建挖掘模型或挖掘结构、训练模型、应用挖掘模型。一个DMX语句同样包含SELECT, FROM, WHERE等子句。有了SQL的基础,可以很快上手DMX。 要注意不要和MDX混淆,MDX操作对象是多维数据集,而DMX是数据挖掘模型。相比之下DMX要比MDX简单(个人观点)。

    在SSAS中进行数据挖掘一般有三个过程:

  1. 创建挖掘结构或挖掘模型
  2. 训练挖掘模型
  3. 应用挖掘模型

 

    在SSAS中一个挖掘结构可以包含多个挖掘模型,如果只有一个挖掘模型,那么SSAS会自动创建一个相应的挖掘结构。挖掘结构和挖掘模型的区别就在于挖掘结构中包含多个将要用于挖掘的属性列,这些列中有的是作为预测列,有的作为输入列,有的既是输入又是可预测列。我们可以利用挖掘结构中的若干列构造属于同一个挖掘结构的不同挖掘模型,这些挖掘模型可能使用了不同的数据挖掘算法。也就是说挖掘模型就是在挖掘结构中选择若干列并使用各种算法构造而成。

    在挖掘模型建立成功以后,下一步就是要为这个模型定型。也就是通过大量的数据去训练这个模型。定型的过程与使用向导创建挖掘模型后进行处理的过程是一样的。都是为模型定型的过程。定型的过程就像是求数学公式的参数一样,在这里我们是要确定数据挖掘模型的参数。有了这些参数以后,就可以反过来利用这个定好参数的模型进行预测了。

    为模型定型以后,这个模型就可以使用了。接下来就可以通过DMX语句来进行基于模型的挖掘查询了。可以直接在SSAS中进行查询。当然,更加有用的是通过客户端程序来访问创建好的挖掘模型。

    下面通过代码来说明这三个过程:

创建挖掘结构:   


//创建挖掘结构,一个挖掘结构包含多个挖掘模型
Create Mining Structure CustomerDecisionTreeStructure
(
CustomerID
Long Key,
  Gender
Text Discrete,
  Income
Text Discrete,
  Occupation
Text Discrete,
  MemberCard
Text Discrete,
  Education
Text Discrete,
City
Text Discrete,
TotalChildren
Text Discrete
)

  这段代码创建了一个名为CustomerStructure的挖掘结构。其中包含我将会用于创建挖掘模型的所有列的集合。并且指定了对应的数据类型,以及数据的连续性。下一步就要创建指定算法的挖掘模型。    

创建挖掘模型:


//创建挖掘模型
Alter Mining Structure CustomerDecisionTreeStructure
Add Mining Model MemberCard_Prediction
(
CustomerID,
Occupation,
Income Predict_Only,
Education,
MemberCard Predict_Only
) Using Microsoft_Decision_Trees

 

    上面的代码在挖掘结构CustomerStructure中创建了一个名为MemberCard_Prediction的挖掘模型。这个模型中包含来自CustomerStructure的若干列,并且指定使用Microsoft_Decision_Trees决策树算法。Predict_Only意思是当前列只用于预测。如果不指定Predict_Only,则被定义为Predict。接下来要进行模型的训练。模型的训练通过DMX语句来完成。

 

训练挖掘模型:

上面的代码实现了模型的训练功能。通过将名为[Foodmart数据源]的数据源对象将数据源中的数据灌入挖掘模型实现模型的训练。这里是通过OPENQUERY函数来获取训练数据的。这个函数是SSAS 2005新增的一个功能。另外还可以用OPENROWSET函数来获取训练数据,通过这个函数可以获取带有嵌套表的数据。下面是一个包含嵌套表的训练语句:  

使用数据训练挖掘模型

    

在这个查询中Order是一个嵌套表。在SSAS中使用OPENROWSET函数先将其打开,因为在SSAS中默认是关闭的。打开OPENROWSET函数的方法是:打开AS项目的属性窗口,将AllowAdhocOpenRowsetQueries设置为True。  

带嵌套表的模型训练

    

    训练成功后这个挖掘模型就可以正式使用了。可以使用DMX进行各种预测查询。下面是一个基本的使用模型的方法:  

模型应用(预测)

 

    上面这段代码用于查询挖掘模型并进行预测。这个查询对应的模型是通过[Units Ordered]的值来预测[Units Shipped]的值。查询中JOIN后面的部分作为输入,这里的输入是[Units Ordered]=300, SELECT子句中第二列输出了在[Units Ordered]=300的前提下[Units Shipped]的预测值;第一列输出了[Units Shipped]预测值发生的概率。这个查询的结果如下

    

  以上就是在SSAS中进行数据挖掘的整个过程。在本文中我使用的是决策树算法。数据挖掘有很多算法可能使用,在SSAS中提供了九种算法。除了这九种算法也可以自行扩展算法。在实际开发应用中,如果只是基本的开发使用,可以不必了解算法的内部原理,只要知道算法的输入是什么意思输出是什么意思即可。不过,了解算法的原理肯定是很有价值的,因为只有在了解算法原理的前提下才能更有效地设置算法参数,提高算法的确定性。在了解现有算法原理的前提下可以对现有的算法进行扩展,开发自己的算法。

posted @ 2009-02-17 15:46  杨子宜  阅读(641)  评论(0编辑  收藏  举报