定性归纳(1)
从数据分析角度出发,数据挖掘可以分为两种类型:描述型数据挖掘和预测性数据挖掘。前者是以简洁概述的方式表达数据中的存在一些有意义的性质;而后者则通过对所提供数据集应用特定的方法分析所获得的一个或一组数据模型,并将该模型用于预测未来新数据的有关性质。
描述型数据挖掘又称为概念描述(concept description),它是数据挖掘中的一个重要组成部分。
一、概念描述的基础知识
一般情况下,会将描述性数据挖掘、定性归纳以及概念描述这三个概念一起看待。作为一种数据挖掘方法,概念描述并不是简单的进行数据的合计操作,而是生成对数据的定性描述和对比定性描述。定性概念描述提供了一个有关数据的整体性的简洁清晰的描述。对比定性描述则提供一个基于多组(不同类型)数据的对比概念描述。即概念描述一般包括两部分:概念描述和对比描述。
概念描述和数据泛化(data generalization)密切相关。在给定数据库的大量数据中,能够用简洁清晰的高层次抽象泛华名称来描述相应的定性概念是非常重要的,这样用户就可以利用基于多层次数据抽象的功能来对数据中所在的一般性规律进行探索。例如:商场数据库中,销售主管一般不用对每一个用户进行数据分析,只需要在高层次的更加抽象的数据上,进行数据研究即可。
二、数据泛化与概要描述
数据库中数据及对象在基本概念层次包含了许多细节性的数据信息,比如在商场的商品数据库中,就可能会包含一些诸如:商品编号、商品名称、品牌名称等低层次的信息,对这类大量的数据进行更高层次的抽象以提供一个概要性的描述是十分重要的。从而就需要一个非常实用的数据挖掘功能:数据泛化(data generaliaction)。
数据泛化是一个从相对低层次概念到更高层次概念且对数据库中与任务相关的大量数据进行抽象概述的一个分析过程。主要方法两种:(1)数据立方(data cube)方法;(2)基于属性的归纳方法(Attribute-Oriented Induction, 简称AOI)。
数据立方方法是一种离线的数据分析方法,通常被分析的数据存在一个多维数据库中,即数据立方。数据立方中的数据需要经过耗时复杂的运算操作,比如sum,count,avg等,而且不同层次都需要进行这些操作。比如日期(date)就会分成天(day)、周(week)、月(month)、季度(season)、年(year)等维度来分别计算。在进行OLAP或者数据挖掘查询之前,数据立方已经完成了离线计算,并将数据保存到一个多维的数据集中去了。
AOI是一种在线的数据分析技术方法。AOI的基本思想就是首先利用关系数据库查询来收集与任务相关的数据并通过对任务相关数据集中个属性不同值个数的检查完成数据泛化操作。数据泛化操作主要是通过属性消减和属性泛化(又称为概念层次提升)操作来完成的。通过合并(泛化后)相同行(tuples)并累计它们相应的个数,减少泛化后的数据集大小。所获取(泛化后)结果以图表和规则等各种不同形式提供给用户。
属性消减的规则是:若有一个属性(在初始数据集中)有许多不同的值,且(a)该属性无法泛化(如没有对应的概率层次树)或(b)它更高层次概念是用其他属性描述的,这个时候就可以去掉这个属性。实质是:一对属性-值代表了泛化后一个规则中的合取项,消去(规则)一个合取项相当于消除了一个约束,因此泛化了相应的规则。
属性泛化的规则是:若有一个属性(在初始数据集中)有许多不同的值,且该属性存在一组泛化操作,则可以选择一个泛化操作对该属性进行处理。实质是:在一个数据集中对一个属性的一个值(一行)进行泛化操作后,将会使得相应规则覆盖更多的行,从而泛化了所表示的概念。
一般采用两种方式来控制泛化的层次,因为如果泛化”过高“,将会导致过分泛化所获得的结果规则失去意义。如果属性泛化没有达到”足够高的层次“,即亚泛化,同样会使结果失去意义。
a)属性泛化阈值控制
该技术就是对所有属性统一设置一个泛化阈值,或者每个属性分别设置一个阈值;若一个属性不同取值个数大于阈值,那么久需要对相应属性进行进一步的属性消减处理或属性泛化处理。缺省值一般是2~8。
b)泛化关系阈值控制
若一个泛化关系中内容不相同的行数(元组数)大于泛化关系阈值,这就需要进行进一步的相关属性的泛化操作。如果不是,那就不用了。缺省值一般为10~30。
一般使用规则是,先采用属性泛化阈值控制办法来控制泛化每个属性,然后通过泛化关系阈值控制办法来进一步减少泛化关系的数据规则大小。一般我们会见归纳统计中,增加一个新的字段count来统计相同行信息的个数,下面给定一个数据泛化操作的实例:
name | gender | major | birth_place | birth_date | residence | phone# | Gpa |
Jim Woodman | M | CS | Vancouver,BC,Canada | 8-12-76 | 35111 Main St. Richmond | 687-4598 | 3.67 |
Scott lachance | F | CS | Montreal,Qec,Canada | 23-2-75 | 345 1 Ave, richmond | 786-3423 | 3.70 |
... | ... | ... | ... | ... | ... | ... | ... |
1)name,由于name属性拥有许多不同的取值,而且对它也没有定义合适的泛化操作,所以该属性应该被消减。
2)gender,由于gender属性仅包含两种不同的取值M/F,所以该属性应该被保留,而且不用进行泛化操作。
3)major,假设对major已经定义了一个概念层次树,从而可以对major属性进行泛化,又假设泛化阈值是5,在初始数据集中的25个不同的取值中,通过属性泛化和属性泛化控制,major被泛化到指定的概念上。
4)birth_place,该属性拥有许多不同的取值,所以需要泛化。假设该属性也存在一个概念层次:city<province<country,同时假设在初始数据表中,country的取值超出阈值,那么该属性应该被消减掉,哪怕可以进行泛化操作。又若country没有超过阈值,那么该属性应该被泛化成为birth_country。
5)birth_date,假设该属性有一个概念层次树存在,那么可以将birth_date泛化成为age,然后将age泛化成为age_range。由于age范围/间隔数目要小于属性泛化阈值,故应该进行泛化操作。
6)residence,假设该属性由number, street, residence_city, residence_province, residence_country来加以具体描述。由于概念层次较低,number和street都会有许多不同的值,故应该被消减掉。而residence应该被泛化成为residence_city/province/country。
7)phone,该属性和name一样,应该被消减掉。
8)Gpa,假设该属性存在一个概念层次树,它可以将成绩划分为若干个间隔/组,比如{excellent, very good,.....},所以该属性应该被泛化操作。
泛化的过程中可能会有相同行的合并,相同内容的数据行的合并可以累积获取相对应的count值,即泛化结果如下:
gender | major | birth_country | age_range | resudebce_city | gps | count |
M | Science | Canada | 20-16 | Richmond | very good | 16 |
F | Science | Foreign | 25-30 | Buurnday | excellent | 22 |
... | ... | ... | ... | ... | ... | ... |