摘要:为了进一步挖掘隐藏在销售数据背后的销售知识,本文在sql server中建立了汽车销售数据立方体,利用微软决策树算法分别建立的三个决策树模型。开发了符合ole db for dm规范的应用程序,结果显示分类正确率在85%以上。
关键词: 数据挖掘;决策树;sql server;ole db for dm
中图分类号:tp311文献标识码:a 文章编号:1009-3044(2007)04-11045-02
1 引言
随着经济的发展,国内汽车工业的投资日趋增大,2005年全国汽车产销量一跃超过日本,成为全球第二大汽车消费市场。投资的加大必然导致市场竞争的激烈,汽车生产企业和汽车销售商的利润也逐步降低,库存和资金的压力变大。汽车销售积累了大量的历史数据,常规的统计手段已很难从中找出有价值的规律。数据库中知识发现(knowledge discovery in database,简称kdd),又称为数据挖掘(datamining),它是由数据库、机器学习、统计学等多门学科形成的一门新兴学科。其目标是从大量原始数据中挖掘出隐含的、有用的、未知的知识,所发现的知识可以是描述数据特性的规则、频繁出现的模式、数据集中目标的聚类、预测模型等[1]。目前数据挖掘技术被认为具有广阔的研究前景。本文运用微软决策树分别建立了以客户信息作为输入的车型、颜色和排量决策树模型,
开发的基于visual basic 6.0的应用程序可以创建和训练模型,同时可以根据用户的输入数据进行预测查询。
2 分类规则及相关算法
2.1 分类规则概述
分类是一种重要的数据挖掘技术。分类的目的是根据数据集的特点构造一个分类函数或分类模型(也常常称作分类器),该模型能把未知类别的样本映射到给定类别中的某一个。分类规则的使用一般分为构造模型和预测查询两个阶段。
构造模型的过程一般分为训练和测试两个阶段。在构造模型之前,要求将数据集随机地分为训练数据集和测试数据集。在训练阶段,使用训练数据集,通过分析由属性描述的数据库元组来构造模型,假定每个元组属于一个预定义的类,由一个称作类标号属性的属性来确定。训练数据集中的单个元组也称作训练样本,一个具体样本的形式可为:(u1,u2,…,un;c),其中ui表示属性值,c表示类别。由于提供了每个训练样本的类标号,该阶段也称为有指导的学习,通常,模型用分类规则、判定树或数学公式的形式提供。在测试阶段,使用测试数据集来评估模型的分类准确率,如果认为模型的准确率可以接受,就可以用该模型对其它数据元组进行分类。一般来说,测试阶段的代价远远低于训练阶段。
构造分类模型的目的是对类别未知的数据进行类别的预测,分类模型经过测试且达到一定的准确度后便可用来对未知类别的数据进行分类。
2.2 微软决策树算法
决策树(descision tree)学习是实例如为基础的归纳学习算法,它着眼于从一组无次序、无规则的事例中推理出决策树表示形成的分类规则,他它采用自顶向下的递归方式,在决策树的内部节点进行属性值的比较并根据不同的属性值判断从该节点向下的分支,在决策树的叶节点得到结论。所以从根到叶节点的一条路径就对应着一条合取规则,整棵决策树就对应着一组析取表达式规则,基于决策树的学习算法的一个最大的优点就是它在学习过程中不需要使用者了解很多的背景知识,只要训练例子能够用属性——结论的方式表达出来,就能使用该算法来学习。
决策树算法有很多,如id3、cart和c4.5等,这些算法对于能全部装入内存的数据集非常有效。在数据挖掘应用中,包含百万条记录的非常大的训练集是很普通的,此时,数据不能全部装入内存。决策树算法运行时,从硬盘上取数据要比内存中处理数据慢许多,构造决策树的过程会变得很漫长,为了提高由大型数据库构造决策树的效率,决策树算法必须有高度的伸缩性。算法的可伸缩性是指在内存一定的条件下,算法运行的时间随着训练集中记录数的增加而线性增加。
微软决策树算法是一种可伸缩性算法。微软决策树算法采用类记数表(class count table,cc table)以及深度优先的策略生成决策树。下面我们先来分析该算法的数据结构,在建树过程中,每个待分裂节点建立自己的类记数表。使用类记数表可直接计算各种属性的分裂指标(information gain 或gini index),选择属性对节点进行划分。类记数表相对于数据集很小,而且不会随着训练集中记录数的增加而增大。从而使算法具有可伸缩性。再分析微软决策树的算法结构,为了高效地建立待分裂节点的类记数表,微软决策树采用两层结构。在建树算法和数据库之间设立一个数据挖掘中间件。如图1所示。在图中数据挖掘客户向数据挖掘中间件提出需要类记数表的请求,中间件从数据库中提取相关的数据建立类记数表送往数据挖掘客户。数据挖掘客户与中间件之间通过两个队列建立联系。
图1 微软决策树的算法结构
3 实验
3.1 数据准备
本文研究对象已经建立部门级数据仓库,该数据仓库是基于sql server 2000的。销售数据集市中的汽车销售数据立方体carsales如图2所示。
图2 汽车销售数据立方体
carsales包括以下事实表和维表:
事实表:salefact,该事实表包含企业2003至2004年汽车销售的所有数据。
维表:cust,该维表包含顾客的详细信息如性别、年收入、学历等人口统计信息。
维表:time,该维表是将销售时间按年、月、日、季度进行的编码表。事实表中的每条记录都有一个时间代码对应该表中的一个时间记录。
维表:store,4s店信息表,包含汽车企业分布于全国各地4s服务店的详细信息。
维表:car,该维表包含本企业所生产汽车的详细信息如品牌、型号以及该型号汽车的相关指标如颜色、排量等。
维表:region,地区维表,该表将地区按照区、省、市的方式将销售地区进行编码。
3.2 数据挖掘
数据挖掘工具选择上选择了sql server 2000的analysi services组件。微软公司联合了几十家商业智能领域的开发商开发了ole db for data mining规范,并在sql server 2000中提供了数据挖掘功能[2]。微软公司推出的通用数据挖掘语言ole db for data mining(dm)规范为软件商和应用开发人员提供了一个开放的接口,同时ole db for dm与dmg发布的pmml标准结合,将数据挖掘应用带入了一个更加强大的开放规范[3]。
sql server 2000即可以在服务器端也可以在客户端创建和运行数据挖掘模型,本文开发了基于visual basic的客户端应用程序,下面介绍从客户端创建和运行数据挖掘模型的方法。
在客户端构建数据挖掘模型时,首先要使pivottable service连接到analysis services中的数据挖掘模型,这种连接可以通过本地的ole db provider实现,如ado。 在客户端应用程序中创建数据挖掘模型使用数据定义语言(ddl)。ddl是在ole db for dm里定义的,是sql语言的扩展,非常类似于sql,这也使得成千上万的sql程序员而不是数据挖掘专业人员,可以方便的利用他们的sql知识来建立数据挖掘模型。
ole db for dm引入一个新的虚拟对象,称为数据挖掘模型(dataminingmodel,简称dmm),dmm类似一个关系表, 它包含了一些特殊的列,分别为输入列和预测列,这些列被数据挖掘中的数据训练和预测制定使用。数据挖掘模型就是一个容器,但是不像关系表那样存储原始数据,而是存储数据挖掘算法在关系表中发现的模式。ole db for dm提供了与sql类似的语法来创建数据挖掘模型。数据挖掘模型对象创建之后,可以用语句 INSERT向其中装入训练数据,对模型进行训练。此时,数据挖掘模型算法通过分析输入事例,并将获取的模式存入挖掘模型中。ole db for dm的优点是可以接收任何ole db数据源的数据,不需要将数据从关系数据源转换成特殊的中间存储格式,大大简化了数据挖掘过程。预测是数据挖掘的一个重要阶段,它需要两个条件,即一个已经经过训练的数据挖掘模型和一组待预测的数据。预测是把从原有数据所获得的模式应用到一组待预测事例,预测的结果是一个包含预测事例列和预测列的记录集,这一过程与sql中的关联查询相类似,不同的是连接两个表,即数据挖掘模型和一组待测事例,所以在此我们提出一个新的概念叫预测连接。同时,ole db for dm还定义了一系列的预测功能可以包含在预测连接select子句中,如预测值的概率、支持度、直方图等信息。创建、训练模型以及预测查询的语法格式[4]如下:
在本文的客户端程序中,先通过ado连接到分析服务器,为便于执行创建和训练模型的ddl语句,我们在工程中创建一个标准模块,模块中包含下面的过程:
笔者创建了客户——车型、客户——颜色和客户——拍量三个决策树模型。图3中为创建和训练客户——车型模块,用户可以选择的输入变量,创建决策树代码如下:
图3 创建和训练模型
创建和训练决策树的目的是对未知类别的数据进行分类,在图4预测查询模块中用户可以根据用户输入的客户信息进行客户感兴趣车型预测查询。鉴于篇幅的关系,代码不在此一一列举,通过对1000组数据的分类统计,分类正确率在85%以上。
4 结束语
利用 microsoft analysis services,数据挖掘不再局限于统计学专家,ole db for dm隐藏了数据挖掘算法的复杂性。任何数据库开发者均可以创建和培训数据挖掘模型并且将这些特性加入到应用程序,所以必然会推动数据挖掘技术的快速发展和广泛应用,从而提高企业的信息化水平。
图4 预测查询
参考文献:
[1]jiawai han and micheline kamber.data mining:concepts and techniques[m].copyright 2001 by morgan kaufmann publishers,inc.
[2]microsoft ole db for data mining specifications[db/ol].http://www.microsoft.com/data/oledb/dm,2000-7-30.
[3]刘丽,孙燕.智能型元搜索引擎的设计与实现[j].计算机工程,2003,(4):118-120.
[4]陈文庆,朱伟忠.基于ole db for dm的文本分类系统的设计与实现[j].河南师范大学学报(自然科学版).2005(3):142-144.
本文中所涉及到的图表、注解、公式等内容请以pdf格式阅读原文。