数据仓库数据挖掘课程.docx
《数据仓库数据挖掘课程.docx》由会员分享,可在线阅读,更多相关《数据仓库数据挖掘课程.docx(25页珍藏版)》请在冰豆网上搜索。
数据仓库数据挖掘课程
对数据挖掘过程的智能协助:
基于本体的方法对费用敏感的分类
AbrahamBernstein,fosterProvost,andShawndraHill
摘要——数据挖掘(DM)过程包括多个阶段。
一个简单且经典的过程可能包括数据的预处理,应用数据挖掘算法和挖掘结果的后续处理。
每个阶段都有许多可能的选择,只有一些组合都是有效的。
由于大空间和异常的相互作用,无论初学者还是数据挖掘专家在构建与选择DM过程中都需要帮助。
为延长统计专家系统的概念开发,我们提出了原型智能发现助理(IDA),它可以给用户提供:
1)系统的枚举有效的数据挖掘进程,以便重要的,有效的选项不被
忽略;2)根据不同的标准,对这些有效的进程进行有效的排列,以
促进DM进程执行的选择。
我们使用原型法证明IDA确实可以在简
单分类过程中提供有用的枚举和有效的排列。
我们讨论IDA如何成
为数据挖掘团队中知识共享的重要工具。
最后,我们对敏感消
费分类论证说明要求,从1998KDDCUP竞争使用一个更加复杂的过
程和数据。
关键词——消费敏感学习,数据挖掘,数据挖掘过程,智能支持,
知识发现,知识发现过程,机器学习,元学习
1.引言
数据知识发现是一个探索过程的结果,这个探索过程包括各种算
法程序用于操作数据、建立数据模型、操纵模型的应用。
知识发现(KD)过程[1]是数据库知识发现(KDD)领域中心概念之一。
KD过程值得得到研究领域的更多的关注:
这些进程包括多个算法组件,这些组件间以不同的方式相互影响。
甚至数据挖掘专家不熟悉全方位的组成部分,更不用说庞大的可能的过程设计空间。
因此,初学者和数据挖掘专家容易忽视KD过程的有用实例。
我们认为工具将帮助数据挖掘者系统的,更有效的引导KD进程空间。
特别是,本文的重点是对KD进程的阶段的子集——这些阶段可以使用多个算法组件;我们称之为数据挖掘(DM)过程(以区别于更大的知识发现过程)。
本文的大部分在考虑原型DM过程模板,和Fayyad等人[1]和Chapman等人[2]描述的相似,如图1所示。
我们把工作集中在三个DM过程阶段:
数据的自动预处理,归纳算法的应用和模型的自动后续处理。
我们选择了这组步骤,因为个别,他们充分理解——并且它们可以被应用在各种基准数据集。
在最后的范例研究中,我们扩展我们的观点更多的涉及DM过程。
图2显示了三个简单的、作为DM过程的例子。
过程1包括简单的判断树传感器的应用。
进程2由离散化数字属性对数据进行预处理,然后建立一个朴素贝叶斯(naïveBayesian)分类器。
进程3首先通过采取随机子样本预处理数据,然后应用离散化,最后建立一个朴素贝叶斯分类器。
在数据挖掘教材[5]中可以发现所有技术的描述。
考虑到智能支持(一个智能发现助手或者IDA)可以帮助数据挖掘系统对有效的DM进程空间进行研究。
一个合理的DM进程符合构成技术的基本约束。
例如,考虑到一个朴素贝叶斯分类器的使用仅仅于某些属性。
如果输入的数据集包含数字属性,应用这个分类器不是一个合法的DM过程。
然而,过程2是合法的,因为通过离散化数据、转变数值属性使其成为符合范畴的一类对数据进行预处理。
图1KD过程(选自Fayad等人[1]
图2三个合法的DM过程
图3简化的DM本体成分
一个自动化的系统可以利用数据挖掘技术的一个明确的本体,
它定义了各种技术和技术的特性。
IDA决定了数据和想要的挖掘结果
的特点,并且使用本体来搜索和例举DM过程在给定数据中生成所需
结果的有效性。
每个搜索算子与DM过程中不同的数据挖掘技术、限
制其使用的前提条件和应用结果想类似。
图3显示了精简了的本体条
目。
IDA还协助用户选择执行程序,比如,根据什么对用户重要来
对程序(启发式)进行排列。
图2中显示的排列(基于源于计划的技
术数目)将是非常有用的,如果用户对减少麻烦感兴趣的话。
其他的
用户则可能希望减少运行时间。
在这种情况下,图2中的反向排列将
会更好。
其他排列标准是由精确度、费用灵敏度、综合性等等组合而
成。
我们声称此系统可以给用户提供两个主要利益:
1.系统的枚举有效的DM过程,因此,用户不会错过重要的,潜在的卓有成效的选项。
2.根据不同的标准对这些合法的过程进行有效的排列,以帮助用户在这些选项之间进行选择。
我们还可以肯定的说,一个基于本体的IDA可以提供一个关
于数据挖掘过程知识共享的基础设施,从而引发经济学家呼吁网络外
部性。
我们不为第三个假说提供实验支持,但是关于在知识共享领域
行为研究的争论已经在类似的应用中表现出很大的影响。
我们支持第一个声明,通过对有效的IDA费用敏感分类的设计
进行详细的介绍,包括工作原型、描述如何列举有效的计划对基于本
体的各种组成技术的特性进行分类。
我们展示了原型生产的计划,并
认为这些计划不仅对初学者有帮助,尤其是数据挖掘专家更有帮助。
我们利用实验性研究、使用启发式排列对第二个声明进行支持。
虽然
我们不主张给出一个彻底的处理排名的方法,在分类任务的情况下,
我们利用速度、精确度(每个都可客观的评价)还有两者的结合证明
了IDA原型法排列潜在的过程的能力。
最后,我们利用经验证明对
所有的声明提供了附加支持,使用KDDCUP1998年的数据挖掘问题,
展示了IDA如何利用DM过程特定问题的知识。
图4IDA的整个流程
2.目的和一般程序
当专注于设计活动时,人们很少探究整个设计空间[6]。
当遇到
一个新的问题时,数据挖掘者,甚至是数据挖掘专家,常常不会彻底
的探究DM过程的设计空间。
比如,ACMSIGKDD会议举行一年
一度的比赛,在该比赛中将向社会发布一个以前从未见过的数据集,
研究小组和参与者比赛从给定数据中发现知识。
KDDCUP-2000接收
了30个参赛者(团队)试图从电子商务数据中挖掘知识。
正如Kohavi
等人[7]所报道的,大部分数据挖掘算法的类型被一小部分参与者审
理。
专家数据挖掘可能会忽略很多数据挖掘方法,,因为他们没有办
法得到工具;然而,备用的且免费的数据挖掘工具使这个理由遭到怀
疑。
更有可能的是,专家根本不需要使用多种数据挖掘工具——尤其
是需要额外预先和后续处理或这些需求复杂的程序的安装和执行的
工具(比如,复杂的参数调整)。
事实上,只有算法被KDDCUP-2000
超过20%的参赛者所整理为决策树归纳法,这些算法执行合理且不用
调整和做预先或后续处理。
图4显示了整个元流程的IDA,用户提供了数据、元数据、目
标和需求。
然后,IDA组成了一系列有效的DM过程,根据用户输入、
数据和/或者本体组成的约束。
该组成包括选择归纳算法(s)和适当
的预先或后续处理模块(以及进程的其他方面,在本文中不予考虑)。
其次,基于用户的需求,IDA将合适的进程排列成所建议的顺序。
用户可以借助排列顺序从建议列表中选择计划。
最后,IDA根据所选
定的数据将生成代码并执行(自动)所建议的程序。
3列举有效的数据挖掘程序
我们的第一个声明是基于本体的IDA可以列举对数据挖掘过
程有用的DM进程。
我们用两种方式支持我们的说法。
首先,我们
描述本体如何合理计划的组成成为可能。
其次,我们通过原型法
(称为IDEA)描述生成进程实例,为他们的重要性提供证据。
然后,我们将描述如何将特定问题成分归入到IDA;为了清楚且具有
一般性,首先,我们关心的是和DM过程无关的成分。
例如,当有一
个数据集去挖掘,知识发现工作者(研究人员或参与者)一般面对一
个令人困惑的选择阵列[5]:
我该使用C4.5还是朴素贝叶斯还是神经网
络?
我该用离散化?
如果使用,用哪种方法?
我应该重采样?
我应该
修整?
我如何考虑成本的误判?
3.1基于本体的智能挖掘支持
考虑一个例子:
用户提供一个庞大的数据集,包括数字和分类
数据和学习任务的详细分类,已经相应的因变量。
IDA要求用户具体
指定他/她在精确性和学习速度之间的需求。
接着,IDA决定哪一个
DM过程是合适的。
对于我们的示例任务,决策树学习仅仅可能是
合适的。
或者,决策树学习加上抽样作为预处理,或者加上修整作为
后续处理,或者两者兼备。
对于该例朴素贝叶斯或者神经网络是否合
适?
或许这不由他们自己。
如果朴素贝叶斯装置只接受类别属性。
神
经网络通常只接受数字属性。
然而,预先处理改变属性的类别可以使
它们能够被使用。
IDA使用本体来协助用户构成有效的且有用的DM进程。
●在一个规范条件下可以应用算子,包括DM进程状态的前提条件,与之前的算子的兼容性,还有算法执行的必要输入,
●算子的规范说明对DM进程的状态和数据有影响,
●评估算子对属性的影响,比如对速度、精度、模块的综合性等(如图3所示的启发式指标)的影响,
●一个有用的函数来获得关于每个算子的可理解的信息。
图5数据挖掘本体(局部视图,斜体字叶节点在排列实验中使用)
另外,本体包括一般问题的图式,比如目标集市问题。
图式作为综合体、分解算子的内部表示,作为简单副本有相同的参数。
唯一不同的是在复算子里一些步骤可能没有被完全列出,开创了设计空间的下界(第五节提供了一个样例)。
所有图式集合是过程思想有用性的证明的范例库的集合。
图5显示了原型法本体结构示意图,其中,在最高水平,将DM
算子划分为:
预处理,归纳法和后续处理。
每一个小组再进行细分。
该树的叶子实际上是算子(从Weka[5]中选择例子斜体显示)。
我们
构建该原型本体首先考虑由数据挖掘工具提供的算子类型,如
Weka[5]。
我们选择已经获得了最自动化的数据挖掘过程的3个阶段
——导致算子的重要选择。
然后,我们将这些分为子类,同时关注算
子将对费用敏感分类有用。
最后,我们选择在Weka中可得到的装置。
当本体结构放好后,我们利用自己的知识提供算子细节(如上所讨论
的前提条件、后续条件等等)。
显然,由于我们知识有限,即使是对
于费用敏感的学习该本体是不完整的。
在进行下面的实验之前,所有
这一切都被处理完,除了没有被提及到的。
基于原型本体,我们创建了一个原型IDA,我们称为IDEA(智
能发现电子助理)。
根据IDA的一般框架(见图4),IDEA首先
为DM进程收集了任务说明,分析用户想要的数据并提取相关的元
数据,如所包含属性的类型(如连续性、范围)。
使用图形用户界面
(GUI),然后用户可以根据数据的其他知识来补充收集到的信息,
并且指定数据挖掘的目标。
IDEA的一个核心组成部分,DM流程
规划,生成有效的进程集,在3.2节做进行描述。
有效的DM进程集通常将包含对于某些用户目标不合意的进程
——比如,牺牲太多的精确度来获得快速模型。
(IDEA)的第二个核
心组成是启发式排列,使用一些启发式函数对有效的DM进程进行排列。
GUI还允许用户:
在排列函数间指定权衡(权重),使用任意排列(加权排列)对计划进行排序,检查过程计划的细节,生成代码并
运行程序。
IDEA的最终函数给用户提供本体接口。
用户可以使用树状层次结构的浏览器浏览本体条目。
为了给本体增加新的算子,要求在本体树增加新的条目,并且指定它的参数。
当增加ID3归纳数算子,比如,用户将首先选择决策树作为本体论中合适的父本。
然后,用户将开始增加合适的参数。
作为决策树的子树,新的ID3算子将继承一些参数值。
用户必须根据实际的算法实现来补充这些参数,它的接口调用(Weka的ID3:
java-classweka.classifiers.trees.Id3有关方法的调用或对WSDL文件的引用)和启发式函数(比如Sped=+25)。
3.2列举有效的DM进程:
IDEA的步骤
IDA可以产生一个DM过程的枚举系统,将对数据挖掘过程有
用,帮助他们避免忽略重要的进程。
只列举有效的DM程序,IDEA
执行一个本体定义的搜索空间进程,受制于本体论定义的算子应用的
限制。
搜索问题的结构更复杂,人工智能式规划,但是我们面临的结
果,简单的搜索就足够了。
IDEA构建了DM算子的子序列的规范(即
DM过程)从起始状态移动——数据集的元数据描述——目标状态
——通常情况下,一个预测模型所需的属性。
开始于一个空进程,在
每一个状态,发现可用的算子利用兼容性,增加了每个算子(独立地)的部分进程以达到当前状态,并且使用其影响来转变状态。
使用上例,为了应用朴素贝叶斯,当前状态必须不能包含数字属性,这将是离散化后的情况。
策划人员不能使用两次离散化因为在第一次应用离散化后,该状态将不再包含数字属性,因此,对先提条件的离散化将不再适用。
当达到目标状态或遇到不能到达目标状态的“死角”,策划人员不再追求给定的进程。
策划人员还可以添加复杂的算子图式到任何解决方案。
类似于层次规划,必须重新访问未指定阶数并且将他们作为其自身的规划问题(见第5节例)。
与传统主要不同之处是智能规划在找到可行的解决方案之前不会停下。
相反,搜索尽可能多的返回有效的程序,在遇到可选的方案之前,以帮助那些不能准确表达或者不能完全表达他们喜好的用户。
本体的这些约束是很重要的。
如果我们使用整个结构如图5所示的本体,给出分类目标,仅仅用原型本体组成的逻辑分组顺序来约束搜索,IDEA产生163,840个DM程序。
增加由预先和后续条件的算子(比如,神经网络要求数字属性;决策树裁剪只适用于决策树)组成的约束,IDEA产生597个有效的进程示例——不到没有约束示例的百分之一的一半大小。
增加元数据(如数据集包含数字属性)或者用户需求(如用户希望费用敏感分类)允许枚举进一步受限制。
3.3列举有效的DM程序:
IDEA的枚举样例
由IDEA产生的枚举进程是很重要。
在许多情况下,他们不
仅对初学者有用,甚至对数据挖掘专家也有用。
例1.当给定IDEA产生由于两类问题的费用敏感分类目标时,
它产生的枚举包括189个DM进程。
该枚举包括构建类的概率估计和
关于输出概率特定成本阈值。
包括构建回归模型和决定(凭经验地)
关于输出得分有效的阈值。
该枚举还包括使用阶级分层抽样与分类算法(错误最小化分类器转变为成本最小化分类器)。
数据挖掘初学者当遇到费用敏感问题时当然不会考虑所有这些选项。
事实上,我们不仅知道关于费用敏感学习的研究论文的发表,还考虑了这些选项[11]的类型。
例2.当我们给定IDEA生成理解分类的目标是,排名第一的DM过
程时:
对样本进行二次采样
特征选择
使用规则学习者
裁剪合成的规则集
尽管兼容性是机器学习研究的目标,但我们不知道这一过程是否被使用或者说是建议使用。
这个过程很有趣,因为每一个组件都分别被证实能产生更多的理解模型;为什么这个合成体不应该产生更多的理解模型呢?
IDEA建议的另一个排名较高的DM过程:
创建决策树
将决策树转化为规则
裁剪规则集
这也是一个重要的建议:
这个程序由Quinlan[12]介绍并且证明了是可
理解性和高度精确性的结合体。
尽管加入本体的
将决策树转化为规则
是受益于Quinlan的研究,我们没有“计划”系统产生这一进程。
IDEA
基于个别的算子知识组成并排列进程。
这特别有价值因为在本体中新
添加的算子产生了深远的影响。
例3.需要考虑用户对哪些分类有兴趣,但是要快速取得结果。
IDEA
的枚举是否包含特别有用的(快速)进程?
事实上,它表明进程使用
快速归纳算法,比如C4.5(与其他归纳算法相比,该算法被证明是
对于常驻内存数据非常快[13])。
它还产生不能被普遍接受的建议
[14]。
比如,枚举包含使用进程离散化作为预处理。
研究表明和不进
行预处理相比,进行离散化的预处理可以生成比较准确的分类[15];
但是进行离散化处理,许多递归算法运行的更快。
比如,如Provost
和Kolluri[16]所描述的,大多数决策树导致数值属性重复排列,增加
了大量的计算复杂性,离散化消除重复排序。
IDEA关于快速规划的
建议也包括使用重采样作为预处理的计划。
研究人员通过研究扩大研究比例往往不考虑抽样的明确性,但是,它可以很快分类——并且,
对于大的数据集,它可以产生具有一定精确度的分类[17][18]。
表1十六个进程计划和排列
每个计划被指定为组成步骤的次序
3.IDA产生有效的排序
大量的DM进程枚举是不方便的。
这对于用户在选择候选进程
有重要的帮助。
DM进程的排列可以由多种方式产生。
比如,进程根据不同的标准进行的静态排名可以存储在系统中。
灵活的排名同样重要——这样当添加新的本体知识时,系统能够立即使用。
IDEA通过组成各个算子的影响而生成动态排名。
本体包含了关于每个算子目标的影响的评估。
比如,一个归纳算法可能被估测为拥有一个特殊的速度(和其他算法相比)。
随机抽取百分之十的数据样本作为预处理,可能减少90%的运行时间(这可能对那些运行时间是线性增长的算法比较适用)。
相应地,抽样可能由于某些因素(平均)儿减少了精确性,同时也增加了不同因素的兼容性(与Oates和Jensen[17]的研究进行比较)。
对于给定的DM过程规划,组成算子的功能集合体给出一个整体的评分。
4.1排列经验的详细情况
为了提供IDA能产生有用排列的证明,我们利用代码生成器将IDEA连接起来为Weka数据挖掘工具生成代码[5]。
系统生成执行程序的Java代码,并且代码为评估基于精度和学习速度的结果模型。
由于这些一般用户感兴趣的标准和被很好接受的评估度量,我们通过速度和精度来评估IDEA的能力而排名。
此外,还希望权衡一下速度和精度[13],并且IDA的用户可能对两个极端之间感兴趣。
对于本节中的例子,我们限制本体论的子集对于研究整个示意图的枚举是可行的。
本体集使用7个常见的预处理,后续处理和归纳技术(其中在Weak中有合适的功能,见下文)。
本实验任务是创建一个分类器,并且它的起始状态数据集至少包含一个数字属性(致使一些不进行预处理的诱导不适用)。
表1左边显示了为该问题而产生的的16个有效的IDEA进程计划列表;该表的右边是描述7个算子使用的图例。
即使是这个小本体也可以产生一系列能引起兴趣的DM过程计划。
比如,本体说明朴素贝叶斯只考虑类别属性,因此规划者需要包括预处理对数据进行属性转换。
尽管该实验的本体很小,但其多样性比很多研究论文大都大。
在表1中,排名第1列的是该计划的算子数量。
这对于那些准备手动执行计划的用户也是很感兴趣,因为可以减少不少麻烦。
我们将不会考虑该排列,而进一步期望参考计划数目。
表1的启发式排列显示了通过启发式计算的基于速度的排列。
该“credit-g”排列是一个由随机选择数据集(即credit-g不用于测试)而运行的计划而产生的静态排列。
静态排名使现实感(如果能灵活添加算子)变得不重要。
增加新的算子(或改变本体)改变计划的空间,在这种情况下,必须更新或重新计算静态排。
“结构”排名是由功能构成而产生;本体为每个学习者指定了一个基本的精度和速度,并且指出所有的预处理将不同程度的减少精度增加速度。
基于我们自己不同的数据挖掘技术和我们阅读的文献(例如[13])的经验,启发式函数是主观的。
排列函数在我们开始使用Weka的特殊实现之前是确定了的,但是有一个例外:
由于执行的速度明显不同,我们我们运行Weka的数据集(再一次用到credit-g)来举例说明学习算法的速度及改善采样因子和离散化。
我们的实验比较实验前数据集的排列和自动运行计划后数据集的排列。
对于该实验,我们使用UCIRepository[20]中的23个数据集,每个数据集都包含至少一个数字属性。
表2中列出了每个数据集和他们的总数。
除非另有指定,每次实验中,我们随机的将每个数据集分为两半(我们称这些子集为D1和D2)。
我们在D2中使用10倍交叉验证计算平均分类精度和平均速度——然后被用于构建实际排名(实验之后)并且评估实验之前的排名质量。
然后我们将使用D1数据集,以构建自动实验排名;D1、D2分区保证所有结果都具有可比性。
表2数据集名称和大小
4.2速度排名
我们第一个实验验证启发式对于DM过程的速度名是否有效。
既然对于较大的数据集而言由速度排名是非常重要的,那么考虑我们最大的数据集:
成年人。
表3Adult数据集的速度排名
表3显示了两个启发式排名,并且实际(实验后)排名是基于所有计
划的平均运行时间。
按该表实际排名分类,每个计划的排名组成了整
个表(即1是第一个计划的排名,2是下一个计划的排名等等)。
这
两种启发式排名都非常好。
对于credit-g排名(关于adult数据集),spearman秩相关系数rs=0.93,对于组合排名,rs=0.98(我们知道完美相关系数是1,没有关系是0,到排名是-1)
表4显示了启发式排列和基于实际速度排名之间所有域的相关性。
这里,数据集呈现出增长趋势(向底部扩大)。
粗体突出的是rs>0.5(所有最小数据集)的情况。
所有的启发式都比较高级,但是两者均有效,每个启发式排列都有效,平均相关性rs=0.85。
表4Spearman速度和精度的启发式排名得相关性rs
4.3精确性排名——使用Autoexperimentation
我们下一个论证IDA对于DM过程精度排名是否有效。
请注意
对于该任务我们不期望它可以像速度排名一样好。
然而,在这方面可
以给用户提供引导,尤其是当系统计划一个用户不熟悉的进程——如果该进程的精度排名很高,这将证明学习了这个新组件。
然而,我们打算实验启发式得分,和成功的速度排名相似,并没有产生特别好的准确排名。
幸运的是,IDA可以执行自动实验,构成进程计划并运行自己的实验以产生计划的精度排名。
尽管这可能是最好的排序方法(虽然耗时),甚至是对预测模型进行认真的实验性精度评估只产生模型的精度评估。
通过这种评估,DM过程的排名质量会发生变化(如数据集大小),且对于任何特殊的领域必须靠经验确定。
现在我用一个实验去评估这个过程的有效性。
对于每个域,IDEA构成DM过程计划并且生成了该计划的Weka代码并交叉检验了评估。
对于每个数据集,对于数据子集D1的交叉验证会产生精度的评估,这将由运行该域的数据集计划产生。
这些进度用于构建DM过程计划的排名。
然后这些排名和D2(与前面的实验相同)数据集产生的精度排名相比。
表4的最右列列出了相关性排名。
正如所料,凭经验确定排名对于大的数据集来说比较好:
对于>=5000条记录的数据集平均rs=0.86。
4.4精确度和速度间的折中
对于大的数据集自动实验提供良好的精度排名,但是随着数据集
规模的增大将消耗大量的时间。
如果用户愿意牺牲速度来获得更好的精度排名,但是没有时间去全面执行自动实验(即运行数据的所有计划)时该如何处理?
一个办法是对数据子集执行自动实验以评估整个数据集得精度排名。
现在我们证明IDA可以允许用户由于时间而折中排名质量。
随着不断增大的数据子集,IDEA运行6大数据集(每个数据集有5000条甚至更多的记录)的处理计划。
具体来说,对于每个域的D1子集,我们随机抽取数据子集的10%、20%......100%。
对于每个子集,IDEA通过交叉验证凭经验决定精度预期的精度排名,与之前的实验相同。
对于该实验,我们仅考虑8个DM过程计划而不(已经)包含随机抽样。
图6为样本增长幅度的相关性示图,粗体显示的是相关性的平均增幅。
正如所期望的,最大的样本集比最小的样本集有更好的排名。
对于100%的样本,其相关性均在0.5以上,并且所选数字在0.8以上。
另一方面,对几组数据集(页码、成人、信件)的10%抽样排名不比随机抽样排名更好。
图6相关系数和样本大小。
为了提高可读性,结果被分为两个图。
所
有数据集(除了说明的选择的数字)的平均数据
有一个明显的例外,当能看到数据的一半时相关性比较稳定。
当使用更多数据的时候,该选择点曲线