1. 引言
本文是利用SQL Server数据挖掘对大规模数据集MovieClick进行挖掘,以便从大量繁杂的数据中获取隐含中其中的信息[1,2]。MovieClick数据库是通过收集客户喜欢的电影的相关内容以及客户自身数据的一个数据集,如Num bedrooms、Num cars、Marry Status、Age、Num bathrooms等信息。对影响用户的住房的状况的因素进行分析,得出影响因素的具体条件。
本文的主要流程如图1。
2.数据挖掘方法
数据挖掘(Data Mining)是通过分析每个数据,从大量数据中寻找其规律的技术,主要有数据准备、规律寻找和规律表示3个步骤。数据挖掘的任务有关联分析、聚类分析、分类分析、异常分析、特异群组分析和演变分析等。
3. 数据清洗
数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等[6-9]。数据清理是将数据库精简以除去重复记录,并使剩余部分转换成标准可接收格式的过程。数据清理标准模型是将数据输入到数据清理处理器,通过一系列步骤“清理”数据,然后以期望的格

Figure 1. Flow chart
图1. 流程图
式输出清理过的数据(如图1所示)。数据清理从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据等问题。
4. 决策树在预测中的应用
决策树是同时提供分类与预测的常用方法。决策树提供了一种展示类似在什么条件下会得到什么值这类规则的方法。比如,在贷款申请中,要对申请的风险大小做出判断,图是为了解决这个问题而建立的一棵决策树,从中我们可以看到决策树的基本组成部分:决策节点、分支和叶子[10]。每个分支要么是一个新的决策节点,要么是树的结尾,称为叶子。在沿着决策树从上到下遍历的过程中,在每个节点都会遇到一个问题,对每个节点上问题的不同回答导致不同的分支,最后会到达一个叶子节点。这个过程就是利用决策树进行分类的过程,利用几个变量(每个变量对应一个问题)来判断所属的类别(最后每个叶子会对应一个类别)。决策树技术是一种对海量数据集进行分类的非常有效方法。通过构造决策树模型,提取有价值的分类规则,帮助决策者做出准确的预测已经应用在很多领域。
4.1. 决策树算法具体分析
运行决策树算法之前,首先把输入的各项连续数据进行数据清洗,使其离散化[11]。决策树开始时,作为一个单个节点N(根节点)包含所有的训练样本集,N为图2“全部”节点;决策树模型的预测项为经济损失比,其属性可以取m个不同的值,本文对经济损失比进行离散化,对应于m个不同类别为Ci;设一个属性A取v个不同的值{a1, a2, …, av},若A取Num bedrooms,则A取4个不同的值{Num bedrooms < 2, Num bedrooms = 2, Num bedrooms = 3, Num bedrooms > = 4}。利用属性A可以将N划分为V个子集{S1, S2, …, Sv},其中Sj包含了S集合中属性A取aj值的数据样本。若属性A被选为测试属性,设sij为子集sj中属于Ci类别的样本数。那么利用属性A划分当前样本集合所需要的信息(熵)可以计算如下:

其中
项被当作为第j个子集的权值,它是由所有子集中属性A取aj值的样本数之和除以S集合中的样本总数。E(A)计算结果越小,就表示

Figure 2. The dependency network
图2. 依赖关系网络图
其子集划分结果越好。而对于一个给定子集sj,它的信息为:

其中
,即为子集sj中任一个数据样本属于类别Ci的概率。
这样利用属性A对当前分支节点进行相应样本集合划分所获得的信息增益就是:

也就是说,Gain (A)被认为是根据属性A取值进行样本集合划分所获得的(信息)熵的减少。本文中Gain (Num bedrooms)、Gain (Num cars)、Gain (Marry Status)、Gain (Age)、Gain (Num bathrooms)等信息增长中,Gain (Num bedrooms)值最大,因此被作为测试属性用于产生当前分支节点,test_attribute = Num bedrooms。同时根据“Num bedrooms”取不同的值,把全部的输入分为4部分:Num bedrooms < 2, Num bedrooms = 2, Num bedrooms = 3, Num bedrooms ≥ 4,若设符合此条件的集合:Num bedrooms < 2集合为s1,返回值为Generate_decision_tree (s1, Num bedrooms)。Num bedrooms = 2集合为s2,返回值为Generate_decision_tree (s2, Num bedrooms)。Num bedrooms = 3集合为s3,返回值为Generate_decision_tree (s3, Num bedrooms)。Num bedrooms > = 4集合为s4,返回值为Generate_decision_tree (s4, Num bedrooms)。以此类推,继续递归调用决策树算法。
根据图2所示的训练样本集合,递归的使用上述各个处理过程;针对所获得的每个划分均又获得一个决策(子)树。一个属性一旦在某个节点出现,那么它就不能再出现在该节点之后所产生的子树节点中。
递归的按照上述步骤构造决策树,最终产生一个如图3所示的决策树。
4.2. 挖掘结果分析
如图3所示,每个矩形方框中不同颜色的直方图分别表示经济损失的不同损失程度的等级:蓝色直方图表示owner用户自己拥有住房,红色直方图表示rent用户自己租房子住。
八个叶子节点其中之一的叶子节点的具体挖掘图例如表1所示。
根据图的结果展示,当卧室数量 < 2或是卧室数量 = 2同时卫生间的数量 < 2.300时,用户是租房子的概率比较大。反之,卧室数量 = 3或是卧室数量 ≥ 4时,用户是自己拥有房子的概率比较大,这点也

Figure 3. The result of decision tree
图3. 决策树结果

Table 1. Num bedrooms < 2
表1. 用户卧室的数量 < 2
比较符合常识,通常卧室的数量比较多,比较容易推测出来家庭成员比较多,所以比较倾向于自己拥有住房而不是租房。当卧室数量 ≥ 4时,是否已婚对用户是否拥有自己的住房的影响比较大,为婚姻状况是未婚时,租房的概率会比拥有住房的概率有所增加。
依赖关系网络显示了模型中的输入属性和可预测属性之间的依赖关系。通过决策树算法分析依赖关系强度不同,可以得出对用户是否拥有自己的住房影响因素从弱到强依次为Age (用户年龄)、Num cars (用户私家车的数量)、Num bathrooms (用户卫生间的数据)、Marital status (用户是否已婚)、Num bedrooms (用户卧室的数量)。这也与我们的基本认识相符合,一般情况下,年龄越大的人拥有房子的概率也会越大,拥有私家车数量比较多的人,说明家里人口比较多,经济情况比较好,所以越有可能有自己的住房等等。
5. 模型评估
本文研究中,挖掘结果的评价采用了微软的Microsoft SQL Server 2008模型评估评估模块,将挖掘结果导入到模型评估系统中,随机抽取了样本作为模型评估测试数据,对本研究结果做了准确性评估测试。其评估原理为从原数据里随即抽取5%~33%测试,对其进行测试并且保持随机性。出现错误的预测与预测总数之间的比成为错误率。
如图4所示蓝色线代表理想模型的提升结果,表示在总体达到100%时,总体的正确率也达到100%,红色线代表决策树实际的提升结果(评估结果)。一般认为准确率砸60%以上的模型都是具有一定的准确度,因此通过该模型得到的规则信息都能够帮助研究人员和采集者做出正确的决策。从图5中可以看出,决策树的分数为0.89,预测的准确率达到91.36%。其整体趋势还是跟理想模型的趋势比较相同,在预测评估住房情况方面,决策树模型的预测的效果比较好。

Figure 4. Model lift chart
图4. 模型提升图

Figure 5. The model lift chart’s mining legend
图5. 模型提升图挖掘图例
6. 致谢
首先要感谢我的导师,给予我莫大的支持,在此深表感谢。然后,感谢平时帮助我的同学们,和你们的讨论中,我得到了成长,知识得到了巩固。最后,感谢本文引用文献、著作的作者,有了你们的无私奉献,才使得我们能站在巨人的肩膀上继续的探索。