现在的位置: 首页 > 综合 > 正文

[分享]微软BI专题-数据挖掘扩展插件语言:DMX

2013年12月07日 ⁄ 综合 ⁄ 共 2910字 ⁄ 字号 评论关闭
 我 们都比较熟悉SQL语言以及各种编程语言。在Microsoft SQL Server 2005 Analysis Services(SSAS)中,数据挖掘也有自己独特的语言,即:数据挖掘扩展插件DMX语言。用DMX语言进行数据挖掘的优势在于:数据挖掘功能可以 全部用语句来实现,我们可以将这些语句嵌入其它的MIS或ERP系统中,实现有机整合。本文将以某钢铁公司的炼钢抽测数据为例,为DMX语言实现数据挖掘 的全过程。

      本文以某钢铁公司的炼钢抽测数据为例,为DMX语言实现数据挖掘的全过程。数据源已经经过了ETL处理,其中包含终轧温度、卷取温度、粗轧出口厚度、在炉 时间、C、SI、MN成分含量七个输入属性,以及由屈服强度、抗拉强度、延伸率三个指标共同生成的“是否合格”预测属性。我们需要通过DMX语句找出七个 输入属性与预测属性的关联程度,并对预测属性未来趋势进行预测,最终,用户可以输入参数的特定特征来预测具备某些特征的产品成为合格产品的可能性。

一、建立挖掘结构和模型
在建立模型之前,首先用CREATE MINING STRUCTURE语句创建挖掘结构:

CREATE MINING STRUCTURE [STEEL DATA MINING]
 ( [取样ID] LONG KEY,
 [终轧温度] LONG DISCRETE,
[卷取温度] LONG DISCRETE,
[粗轧出口厚度] LONG DISCRETE,
[C] long continuous,
[SI] long continuous,
[在炉时间] LONG DISCRETE,
[MN]LONG continuous,
[是否合格] LONG DISCRETE

其 次,采用微软决策树算法和微软神经网络算法,向建好的挖掘结构中添加两个挖掘模型。用决策树算法找出七个输入属性与预测属性的关联程度,用神经网络算法来 实现预测属性未来趋势的预测。使用ALTER MINING STRUCTURE(DMX)语句。向挖掘结构中添加决策树算法挖掘模型(MD_TREE)和神经网络挖掘模型(MD_NET):

ALTER MINING STRUCTURE [STEEL DATA MINING] ADD MINING MODEL [MD_TREE] ([取样ID],[终轧温度], [卷取温度],
[粗轧出口厚度], [C], [SI], [在炉时间], [MN],
[是否合格] predict)
USING Microsoft_Decision_Trees
(Complexity_Penalty=0.1) WITH DRILLTHROUGH
ALTER MINING STRUCTURE [STEEL DATA MINING] ADD MINING MODEL  [MD_NET]
([取样ID], [终轧温度], [卷取温度],
[粗轧出口厚度], [C], [SI], [在炉时间], [MN],
[是否合格] predict)USING Microsoft_Neural_Network

二、处理挖掘结构和模型
      处理挖掘结构时,将读取源数据并生成支持挖掘模型的结构。处理挖掘模型时,挖掘结构定义的数据将通过所选择的数据挖掘算法进行传递。该算法将搜索趋势和模 式,然后在挖掘模型中存储此信息。因此,挖掘模型不包含实际源数据,而是包含由算法发现的信息。如果更改了结构列或源数据,则只需要重新处理挖掘结构。使 用__insert INTO(DMX)语句为挖掘结构及其关联的挖掘模型定型:

__insert INTO MINING STRUCTURE [STEEL DATA MINING]
( [取样ID], [终轧温度], [卷取温度],
[粗轧出口厚度], [C], [SI], [在炉时间], [MN],
[是否合格])
 OPENQUERY([Steel DW],
 '__select [取样ID], [精轧终轧温度], [卷取温度],
[粗轧出口厚度], [C], [SI], [在炉时间], [MN],
[是否合格] from [steel_dm]')

三、浏览挖掘模型 
 
图1:建好的结构和模型

在SQL Server Management Studio中,可以浏览我们建的模型(如图1),找出输入值与预测值之间的关联程度,也可以浏览其它各种图型界面,如果建好了多维数据集,还可以用以下语句查看和钻取模型:
__select FROM <模型>.CONTENT
__select DISTINCT FROM <模型>
__select FROM <模型>.DIMENSION_CONTENT
__select FROM <模型>.CASES
__select FROM <模型>.SAMPLE_CASES
 
图2:两个模型的浏览图

四、预测查询
使用SELECT语句的__select FROM PREDICTION JOIN(DMX)格式,用神经网络模型来创建两种不同类型的预测(如图2)。实现如下:
1、单独预测
使用单独查询,可确定单个测试产品是否合格。例如,可以使用单独查询确定此批产品是否合格:

__select [MD_NET].[是否合格] AS [是否合格],
 PredictHistogram([是否合格]) AS Statistics FROM [md_NET]
 NATURAL PREDICTION JOIN
 (__select 869 AS  [终轧温度],
 655 AS [卷取温度],
 35 AS [粗轧出口厚度],
 152 AS [在炉时间],
 0.08 AS [C],
 0.24 AS [SI],
 1.14 AS [MN]) AS t

2、批查询
使 用批查询可确定多个测试中哪些产品会合格。例如,生产部制定了一批生产方案,想要知道在这多个方案中哪些方案可行,生产的产品能符合要求。使用 SELECT语句的__select FROM PREDICTION JOIN(DMX)格式实现预测功能:

__select TOP 10
t.[取样ID],t.[是否合格],[MD_NET].[是否合格],
PredictProbability([是否合格]) From [MD_NET] 
PREDICTION JOIN OPENQUERY
([Steel DW], '__select [取样ID],[精轧终轧温度],
[卷取温度], [粗轧出口厚度], [在炉时间], [C],
 [SI], [MN],[是否合格] FROM [dbo].[Steel_dm] ') AS t
ON [MD_NET].[取样ID] = t.[取样ID]
AND [MD_NET]. [终轧温度] = t.[精轧终轧温度]
AND [MD_NET]. [卷取温度] = t.[卷取温度]
AND [MD_NET]. [粗轧出口厚度] = t.[粗轧出口厚度]
 AND [MD_NET]. [在炉时间] = t.[在炉时间]
 AND [MD_NET]. [C] = t.[C]
 AND [MD_NET]. [SI] = t.[SI]
 AND [MD_NET].[MN] = t.[MN] 
 WHERE [MD_NET].[是否合格] =1
 ORDER BY PredictProbability([是否合格]) DESC


图3:单独预测和批预测图

图3显示了单独预测和批预测图。至此,我们用DMX语句实现了这一数据挖掘的全部需求,如果与其它高级语言相结合,作好界面和参数传递的部分,就完全实现了在管理系统中嵌入数据挖掘的功能。

 

抱歉!评论已关闭.