用 WEKA 进行数据挖掘_第1页
用 WEKA 进行数据挖掘_第2页
用 WEKA 进行数据挖掘_第3页
用 WEKA 进行数据挖掘_第4页
用 WEKA 进行数据挖掘_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用WEKA进行数据挖掘,第1部分:简介和回

MichaelAbernethv,产品开发经理,OptimalAuctions

简介:数据挖掘是技术界的谈论话题,因为各公司都在生成有关其用户的数百万的数据点并在想方设法将

该信息转变为收入的增加。数据挖掘是很多技术的共同术语,用以表达从数据中一点点地收集信息并将其

转变成有实际意义的东西。本文将向您介绍开源的数据挖掘软件以及用来解析数据的最为常见的一些技术。

查看本系列更多内容

本文的标签:data,mining,weka,商业智能

标记本文!

发布日期:2010年5月17日

级别:中级

其他语言版本:裹文

访问情况:5315次浏览

评论:1(查叠|添加评论-登录)

平均分(20个评分)

为本文评分

简介

什么是数娱笏嫡您会不时地问自己这个问题,因为这个主题越来越得到技术界的关注。您可能听说过像

Google和Yah。。!这样的公司都在生成有关其所有用户的数十亿的数据点,您不禁疑惑,“它们要所有这

些信息干什么?”您可能还会惊奇地发现Walmart是最为先进的进行数据挖掘并将结果应用于业务的公司

之一。现在世界上几乎所有的公司都在使用数据挖掘,并且目前尚未使用数据挖掘的公司在不久的将来就

会发现自己处于极大的劣势。

那么,您如何能让您和您的公司跟上数据挖掘的大潮呢?

我们希望能够回答您所有关于数据挖掘的初级问题。我们也希望将一种免费的开源软件Waikato

EnvironmentforKnowledgeAnalysis(WEKA)介绍给您,您可以使用该软件来挖掘数据并将您对您用户、

客户和业务的认知转变为有用的信息以提高收入。您会发现要想出色地完成挖掘数据的任务并不像您想象

地那么困难。

此外,本文还会介绍数据挖掘的第一种技术:回归,意思是根据现有的数据预测未来数据的值。它可能是

挖掘数据最为简单的一种方式,您甚至以前曾经用您喜爱的某个流行的电子数据表软件进行过这种初级的

数据挖掘(虽然WEKA可以做更为复杂的计算)。本系列后续的文章将会涉及挖掘数据的其他方法,包

括群集、最近的邻居以及分类树。(如果您还不太知道这些术语是何意思,没关系。我们将在这个系列一

一介绍。)

回页首

什么是数据挖掘?

数据挖掘,就其核心而言,是指将大量数据转变为有实际意义的模式和规则。并且,它还可以分为两种类

型:直接的和间接的。在直接的数据挖掘中,您会尝试预测一个特定的数据点一比如,以给定的一个房

子的售价来预测邻近地区内的其他房子的售价。

在间接的数据挖掘中,您会尝试创建数据组或找到现有数据内的模式一比如,创建“中产阶级妇女”的人

群。实际上,每次的美国人口统计都是在进行数据挖掘,政府想要收集每个国民的数据并将它转变为有用

信息。

现代的数据挖掘开始于20世纪90年代,那时候计算的强大以及计算和存储的成本均到达了一种很高的

程度,各公司开始可以自己进行计算和存储,而无需再借助外界的计算帮助。

此外,术语数据挖掘是全方位的,可指代诸多查看和转换数据的技术和过程。因为本系列只触及能用数据

挖掘实现的功能的一些皮毛。数据挖掘的专家往往是数据统计方面的博士,并在此领域有10-30年的研究

经验。这会为您留下一种印象,即只有大公司才能负担得起数据挖掘。

我们希望能够清除有关数据挖掘的这些误解并希望弄清楚一点:数据挖掘既不像对一系列数据运行一个电

子数据表函数那么简单,也不像有人想的那样难到靠自己根本无法实现。这是80/20范型的一个很好的例

子一甚至更进一步可以是90/10范型。您用所谓的数据挖掘专家的10%的专业知识就能创建具有

90%效力的数据挖掘模型。而为了补上模型剩下的10%的效力并创建一个完美的模型将需要90%额外

的时间,甚至长达20年。所以除非您立志以数据挖掘为职业方向,否贝『足够好”就可以了。从另一个方面

看,利用数据挖掘所达到的“足够好”总要比您现在所采用的其他技术要好。

数据挖掘的最终目标就是要创建一个模型,这个模型可改进您解读现有数据和将来数据的方式。由于现在

已经有很多数据挖掘技术,因此创建一个好的模型的最主要的步骤是决定要使用哪种技术。而这则极大地

依赖于实践和经验以及有效的指导.这之后,需要对模型进行优化以让它更令人满意。在阅读了本系列的

文章后,您应该能够自己根据自己的数据集正确决定要使用的技术,然后采取必要的步骤对它进行优化。

您将能够为您自己的数据创建一个足够好的模型。

回页首

WEKA

数据挖掘绝非大公司的专有,也不是多昂贵的软件。实际上,有一种软件可以实现那些价格不菲的软件所

能实现的全部功能一这个软件就是WEKA(参见参考资料)。WEKA诞生于UniversityofWaikato(新

西兰)并在1997年首次以其现代的格式实现。它使用了GNUGeneralPublicLicense(GPL)«该软件以

Java™语言编写并包含了一个GUI来与数据文件交互并生成可视结果(比如表和曲线)。它还有一个通

用API,所以您可以像嵌入其他的库一样将WEKA嵌入到您自己的应用程序以完成诸如服务器端自动数

据挖掘这样的任务。

我们继续并安装WEKAe因为它基于Java,所以如果您在计算机上没有安装JRE,那么请下载一个包含

JRE的WEKA版本。

图1.WEKA的开始屏

ProgramVisualizationTookHelp

Applications

WEKA

TheUniversity

ofWaikato

WaikatoEnvironmentforKnowledgeAnalysis

Version3.6,2

(c)1999-2010

TheUniversityofWaikato

Hamilton,NewZealand

在启动WEKA时,会弹出GUI选择器,让您选择使用WEKA和数据的四种方式。对于本文章系列中的

例子,我们只选择了Explorer选项。对于我们要在这些系列文章中所需实现的功能,这已经足够。

图2.WEKAExplorer

S<«lUb.

WelcometotheW«kdExplorer.1tx

在熟悉了如何安装和启动WEKA后,让我们来看看我们的第一个数据挖掘技术:回归。

回页首

回归

回归是最为简单易用的一种技术,但可能也是最不强大(这二者总是相伴而来,很有趣吧)。此模型可以

简单到只有一个输入变量和一个输出变量(在Excel中称为Scatter图形,或OpenO内的

XYDiagram)。当然,也可以远比此复杂,可以包括很多输入变量。实际上,所有回归模型均符合同一个

通用模式。多个自变量综合在一起可以生成一个结果一一个因变量。然后用回归模型根据给定的这些自

变量的值预测一个未知的因变量的结果。

每个人都可能使用过或看到过回归模型,甚至曾在头脑里创建过一个回归模型。人们能立即想到的一个例

子就是给房子定价。房子的价格(因变量)是很多自变量一房子的面积、占地的大小、厨房是否有花岗

石以及卫生间是否刚重装过等的结果。所以,不管是购买过一个房子还是销售过一个房子,您都可能会创

建一个回归模型来为房子定价。这个模型建立在邻近地区内的其他有可比性的房子的售价的基础上(模型),

然后再把您自己房子的值放入此模型来产生一个预期价格。

让我们继续以这个房屋定价的回归模型为例,创建一些真实的数据。在我的邻近地区有一些房子出售,我

试图找到我自己房子的合理价格。我还需要拿此模型的输出申报财产税。

表1.回归模型的房屋值

房子面积(平方英尺)占地的大小卧室花岗岩卫生间有无重装?销售价格

35299191600$205,000

324710061511$224,900

403210150501$197,900

239714156410$189,900

2200960040r$195,000

353619994611$325,000

29839365501$230,000

31989669511????

好的消息是(也可能是坏消息,取决于您自己的看法)上述对回归模型的简单介绍只触及了一些皮毛,这

种触及甚至都不会被真正地注意到。关于回归模型有大学的课程可以选择,那会教授给您有关回归模型的

更多信息,甚至多过您想要知道的。但我们的简介让您充分熟悉了这个概念,已足够应付本文中WEKA试

用。如果对回归模型以及其中的数据统计的细节有更深的兴趣,您可以用自己喜爱的搜索引擎搜索如下的

术语:leastsquares>homoscedasticity^normaldistribution、WhitetestsLillieforstests、R-squared和

p-values«

回页首

为WEKA构建数据集

为了将数据加载到WEKA,我们必须将数据放入一个我们能够理解的格式。WEKA建议的加载数据的格式

是Attribute-RelationFileFormat(ARFF),您可以在其中定义所加载数据的类型,然后再提供数据本身。

在这个文件内,我们定义了每列以及每列所含内容。对于回归模型,只能有NUMERIC或DATE歹ij。最后,

以逗号分割的格式提供每行数据。我们为WEKA使用的ARFF文件如下所示。请注意在数据行内,并未

包含我的房子。因为我们在创建模型,我房子的价格还不知道,所以我们还不能输入我的房子。

清单1.WEKA文件格式

©RELATIONhouse

©ATTRIBUTEhouseSizeNUMERIC

©ATTRIBUTElotSizeNUMERIC

©ATTRIBUTEbedroomsNUMERIC

©ATTRIBUTEgraniteNUMERIC

©ATTRIBUTEbathroomNUMERIC

©ATTRIBUTEsellingpriceNUMERIC

©DATA

3529,9191,6,0,0,205000

3247,10061,5,1,1,224900

4032,10150,5,0,1,197900

2397,14156,4,1,0,189900

2200,9600,4,0,1,195000

3536,19994,6,1,1,325000

2983,9365,5,0,1,230000

回页首

将数据载入WEKA

数据创建完成后,就可以开始创建我们的回归模型了。启动WEKA,然后选择Explorer。将会出现Explorer

屏幕,其中Preprocess选项卡被选中。选择OpenFile按钮并选择在上一节中创建的ARFF文件。在选

择了文件后,WEKAExplorer应该类似于图3中所示的这个屏幕快照。

图3.房屋数据加载后的WEKA

在这个视图中,WEKA允许您查阅正在处理的数据。在Explorer窗口的左边,给出了您数据的所有列

(Attributes)以及所提供的数据行的数量(Instances)。若选择一列,Explorer窗口的右侧就会显示数据

集内该列数据的信息。比如,通过选择左侧的houseSize列(它应该默认选中),屏幕右侧就会变成显示

有关该列的统计信息。它显示了数据集内此列的最大值为4,032平方英尺,最小值为2,200平方英尺。

平均大小为3,131平方英尺,标准偏差为655平方英尺(标准偏差是一个描述差异的统计量度)。止匕外,

还有一种可视的手段来查看数据,单击VisualizeAll按钮即可。由于在这个数据集内的行数有限,因此可

视化的功能显得没有有更多数据点(比如,有数百个)时那么功能强大。

好了,对数据的介绍已经够多了。让我们立即创建一个模型来获得我房子的价格。

回页首

用WEKA创建一个回归模型

为了创建这个模型,单击Classify选项卡。第一个步骤是选择我们想要创建的这个模型,以便WEKA知

道该如何处理数据以及如何创建一个适当的模型:

1.单击Choose按钮,然后扩展functions分支。

2.选择LinearRegression叶。

这会告诉WEKA我们想要构建一个回归模型。除此之外,还有很多其他的选择,这说明可以创建的的模

型有很多。非常多!这也从另一个方面说明本文只介绍了这个主题的皮毛。有一点值得注意。在同一个分

支还有另外一个选项,称为SimpleLinearRegression。请不要选择该选项,因为简单回归只能有一个变

量,而我们有六个变量。选择了正确的模型后,WEKAExplorer应该类似于图4。

图4.WEKA内的线性回归模型

我能用电子数据表达到同样的目的么?

简单而言:不可以。深思熟虑后的答案是:可以。大多数流行的电子数据表程序都不能轻松完成我们用

WEKA实现的功能,即定义一个具有多个自变量的线性模型。不过,您十分容易地实现一个SimpleLinear

Regression模型(具有一个自变量)。如果您有足够的勇气,甚至可以进行一个多变量的回归,但是这将

非常困难,绝对不如用WEKA来得简单。本文的参考资料部分有一个MicrosoftExcel的示例视频。

现在,选择了想要的模型后,我们必须告诉WEKA它创建这个模型应该使用的数据在哪里。虽然很显然

我们想要使用在ARFF文件内提供的那些数据,但实际上有不同的选项可供选择,有些甚至远比我们将要

使用的选项高级。其他的三个选择是:Suppliedtestset允许提供一个不同的数据集来构建模

型;Cross-validation让WEKA基于所提供的数据的子集构建一个模型,然后求出它们的平均值来创建

最终的模型;PercentagesplitWEKA取所提供数据的百分之一来构建一个最终的模型。这些不同的选择

对于不同的模型非常有用,我们在本系列后续文章中会看到这一点。对于回归,我们可以简单地选择Use

trainingset。这会告诉WEKA为了构建我们想要的模型,可以使用我们在ARFF文件中提供的那些数

据。

创建模型的最后一个步骤是选择因变量(即我们想要预测的列)。在本例中指的就是房屋的销售价格,因

为那正是我们想要的。在这些测试选项的正下方,有一个组合框,可用它来选择这个因变量。

歹sellingPrice应该默认选中。如果没有,请选择它。

我们准备好创建模型后,单击Start。图5显示了输出结果。

图5.WEKA内的房屋价格回归模型

回页首

解析这个回归模型

WEKA可不马虎。它会把这个回归模型径直放在输出,如清单2所示。

清单2.回归输出

sellingprice=(-26.6882*housesize)+

(7.0551*lotsize)+

(43166.0767*bedrooms)+

(42292.0901*bathroom)

-21661.1208

清单3显示了结果,其中已经插入了我房子的价格。

清单3.使用回归模型的房屋价格

sellingprice=(-26.6882*3198)+

(7.0551*9669)+

(43166.0767*5)+

(42292.0901*1)

-21661.1208

sellingprice=219,328

不过,回过头来看看本文的开头部分,我们知道数据挖掘绝不是仅仅是为了输出一个数值:它关乎的是识

别模式和规则。它不是严格用来生成一个绝对的数值,而是要创建一个模型来让您探测模式、预测输出并

根据这些数据得出结论。让我们更进一步来解读一下我们的模型除了房屋价格之外告诉我们的模式和结论:

・花岗石无关紧要一WEKA将只使用在统计上对模型的正确性有贡献的那些列(以R-squared量

度,但这超出了本文的范围)。它将会抛弃并忽视对创建好的模型没有任何帮助的那些列。所以这

个回归模型告诉我们厨房里的花岗石并不会影响房子的价值。

・卫生间是有关系的一因我们为卫生间使用了简单的。或1值,所以我们可以使用来自回归模型

的这个系数来决定卫生间的这个值对房屋价值的影响。这个模型告诉我们它使房子的价值增加了

$42,292o

・较大的房子价格反而低一WEKA告诉我们房子越大,销售价格越低?这可以从housesize变

量前面负的系数看出来。此模型告诉我们房子每多出一平方英尺都会使房价减少$26?这根本没有

意义。这是在美国!当然是房子越大越好,特别是在我所在的得克萨斯州。那么我们怎么才能解释

这一点呢?这是无用数据入、无用数据出的一个很好的例子。房子的大小并不是一个自变量,它还

与卧室变量相关,因为房子大通常卧室也多。所以我们的模型并不完美。但是我们可以修复这个问

题。还记得么:在Preprocess选项卡,可以从数据集中删除列。对于本例,我们删除houseSize列

并创建另一个模型。那么它会如何影响房子的价格呢?这个新模型乂如何更有实际意义?(修改后

的我的房子价格是:$217,894)。

对统计学家的一个提示

这个模型打破了一个常规线性回归模型的几个要求,因为每个列并不是完全独立的,并且这里也没有足够

的数据行来生成一个有效的模型。由于本文主要的目的是介绍WEKA这个数据挖掘工具,因此我们极大

地简化了示例数据。

要想把这个简单的示例提升到一个新的级别,让我们来看一下WEKAWeb站点上作为回归示例提供给我

们的一个数据文件。理论上讲,这要比我们七个房子的简单示例要复杂得多。这个示例数据文件的作用是

创建一个能基于汽车的几个特性来推测其油耗(每加仑英里数,MPG)的回归模型(请务必记住,数据取

自1970至1982年)。这个模型包括汽车的如下属性:汽缸、排量、马力、重量、加速度、年份、产地

及制造商。此外,这个数据集有398行数据,这些数据足以满足我们的多种统计需求,而这在我们的房价

模型中是不能实现的。理论上讲,这是一个极为复杂的回归模型,WEKA可能需要大量时间才能创建一个

具有如此多数据的模型(但我估计您已预见到了WEKA能够很好地处理这些数据)。

要用这个数据集生成一个回归模型,我们需要严格地按照处理房子数据的步骤来处理这些数据,所以这里

我不再赘述。继续并创建这个回归模型。它将生成如清单4所示的输出。

清单4.MPG数据回归模型

class(akaMPG)=

-2.2744*cylinders=6,3,5,4+

-4.4421*cylinders=3,5,4+

6.74*cylinders=5,4+

0.012*displacement+

-0.0359*horsepower+

-0.0056*weight+

1.6184*model=75,71,76,74,77,78,79,81,82,80+

1.8307*model=77,78,79,81,82,80+

1.8958*model=79,81,82,80+

1.7754*model=81,82,80+

1.167*model=82,80+

1.2522*model=80+

2.1363*origin=2,3+

37.9165

在您自己生成这个模型时,您会看到WEKA只用了不到一秒的时间就处理好了这个模型。所以,即使要

处理的是具有大量数据的功能强大的回归模型,就计算而言,也不是什么问题。这个模型看上去应该比房

子数据复杂得多,但事实并非如此。例如,这个回归模型的首行,-2.2744*cylinders=6,3,5,4表

示,如果汽车有6个缸,就会在此列中放上一个1,如果汽车有8个缸,就会放上一个0。让我们从这

个数据集中取一个示例行(第10行)并将这些数值放入回归模型,看看我们这个模型的输出是否与数据

集中提供给我们的输出相似。

清单5.示例MPG数据

data=8,390,190,3850,8.5,70,1,15

class(akaMPG)=

-2.2744*0+

-4.4421*0+

6.74*0+

0.012*390+

-0.0359*190+

-0.0056*3850+

1.6184*0+

1.8307*0+

1.8958*0+

1.7754*0+

1.167*0+

1.2522*0+

2.1363*0+

37.9165

Expectedvalue=15mpg

RegressionModelOutput=14.2mpg

因此,当我们用随机选择的测试数据对此模型进行测试时,此模型的表现非常出色,对于一辆实际值为15

MPG的车,我们的预测值是14.2MPG。

回页首

结束语

本文通过向您介绍数据挖掘这个主题的背景以及这个领域的目标力求回答“什么是数据挖掘”这个问题。数据

挖掘就是通过创建模型和规则来将大量的不可用信息(通常是分散的数据形式)变成有用的信息。您的目

标是使用模型和规则来预测将来的行为,从而改进您的业务,或是解释一些您用其他方法不能解释的事情。

这些模型可以帮助您确认您已经有了的某些想法,甚至可能会让您发现数据中您以前不曾意识到的新东西。

这里有个有趣的数据挖掘的例子(不知道还存在多少类似的事例),在美国,Walmart会在周末时把啤酒

移到尿布货架的未端,这是因为Walmart的数据挖掘结果显示男士通常会在周末购买尿布,而他们同时也

喜欢在周末喝啤酒。

本文还向您介绍了一种免费的开源软件程序WEKA«当然,市场上还有很多更为复杂的数据挖掘商业软件

产品,但对于刚开始进行数据挖掘的人来说,这种开源的解决方案非常有益。请记住,您永远不可能成为

数据挖掘方面的专家,除非您打算用20年的时间来研究它。WEKA可以让您步入数据挖掘的大门,同时

也能为您遇到的初级问题提供完美的解决方案。如果您以前对数据挖掘接触不多,那么这个非常好的解决

方案将能满足您的全部所需。

最后,本文探讨了第一个数据挖掘模型:回归模型(特别是线性回归多变量模型),另外还展示了如何在

WEKA中使用它。这个回归模型很容易使用,并且可以用于很多数据集。您会发现这个模型是我在本系列

文章中所讨论的所有模型中最有用的一个。然而,数据挖掘不仅局限于简单的回归,在不同的数据集及不

同的输出要求的情况下,您会发现其他的模型也许是更好的解决方案。

最后,我再重申一下,本文及本系列的后续文章只是对数据统计和数据挖掘领域做了最简单的介绍。花上

整整一学期的时间去学习数据统计和数据挖掘的人也只能被称为“初学者”。我们的目的就是让初学者充分

领略这个可用的开源工具的妙处并提高对数据挖掘所能提供的价值的了解和重视。

回页首

下载

描述名字大小下载方法

示例代码os-weka1-Examples.zip6KBHTTP

关于下载方法的信息

参考资料

学习

・WEKA要求所有关于它的出版物都必须提及这篇题为“TheWEKADataMininqSoftware:An

Update"(作者MarkHalkEibeFrank、GeoffreyHolmes、BernhardPfahringerPeterReutemann

和IanH.Witten)的论文。

・利用YouTube上的这个视频了解如何将一个电子数据表用于一个简单的回归模型。

・查阅WEKAWeb站点获得此软件的所有文档和一个FAQ。

・在Wikipedia上杳阅回,模型,这里可能有比您想象中还要多的技术细节。

・阅读有关ARFF的详细信息,以便您可以将数据加载入WEKA。

•IBM也有自己的数据挖掘软件,"IntegrateInfoSphereWarehousedataminingw让hIBMCoqnos

reporting!,Part1"提供了一个很好的起点。

•要收听面向软件开发人员的有趣访谈和讨论,请访问developerWorkspodcasts。

•随时关注developerWorks技术活动和网络广播。

・查阅最近将在全球举办的面向旧M开放源码开发人员的研讨会、交易展览、网络广播和其他适动。

•访问developerWorksOpensource专区获得丰富的how-to信息、工具和项目更新以及最受欢迎

的文章和教程,帮助您用开放源码技术进行开发,并将它们与IBM产品结合使用。

•developerWorks社区是流行社区的一个成功典范,包含广泛的主题。

杳看免费的developerWorks演示中心,观看并了解旧M及开源技术和产品功能。

用WEKA进行数据挖掘,第2部分:分类和群

MichaelAbernethy,产品开发经理,OptimalAuctions

简介:数据挖掘是很多技术的共同术语,用以表达从数据中一点点地收集信息并将其转变成有实际意义的

趋势和规则来提高您对数据的理解。在本系列“用WEKA进行数据挖掘”的第2部分我们将讨论两种最

常见的数据挖掘方法一分类和群集一利用它们可以对您的数据进行更强大的分析。

查看本系列更多内容

本文的标签:商业智能,开发工具

标记本文!

发布日期:2010年5月31日

级别:中级

其他语言版本:裹文

访问情况:5977次浏览

评论:0(查叠|添加评论-登录)

平均分(11个评分)

为本文评分

简介

在用WEKA进行数据挖掘,第1部分:简介和回归,我介绍了数据挖掘的概念以及免费的开源软件

WaikatoEnvironmentforKnowledgeAnalysis(WEKA),利用它可以挖掘数据来获得趋势和模式。我还

谈到了第一种数据挖掘的方法一回归一使用它可以根据一组给定的输入值预测数字值。这种分析方法

非常容易进行,而且也是功能最不强大的一种数据挖掘方法,但是通过它,读者对WEKA有了很好的了

解,并且它还提供了一个很好的例子,展示了原始数据是如何转换为有意义的信息的。

在本文中,我将带您亲历另外两种数据挖掘的方法,这二者要比回归模型稍微复杂一些,但功能则更为强

大。如果回归模型只能为特定输入提供一个数值输出,那么这两种模型则允许您对数据做不同的解析。正

如我在第1部分中所说的,数据挖掘的核心就是将正确的模型应用于数据。即便有了有关客户的最佳数据

(无论这意味着什么),但是如果没有将正确的模型应用于数据,那么这些数据也没有任何意义。不妨从

另一个角度考虑这件事情:如果您只使用能生成数值输出的回归模型,那么Amazon如何能告知您“购买

了X产品的客户还购买了Y产品”?这里没有数值型的函数能够告诉您这类信息。所以让我们来深入研究

可用在数据中的其他两个模型。

在本文中,我会反复提及称为“最近邻”的数据挖掘方法,但我不会过多地对其进行剖析,详细的介绍会在第

3部分给出。不过,我在本文中的比较和描述部分将它包括进来以使讨论更为完整。

回页首

分类VS.群集VS.最近邻

在我深入探讨每种方法的细节并通过WEKA使用它们之前,我想我们应该先理解每个模型一每个模型

适合哪种类型的数据以及每个模型试图实现的目标。我们还会将我们已有的模型一回归模型一也包括

在我们的讨论之中,以便您可以看到这三种新模型与我们已经了解的这个模型的对比。我将通过实际的例

子展示每个模型的使用以及各自的不同点。这些实际的例子均围绕着一个本地的BMW经销店展开,研究

它如何能增加销售。这个经销店已经保存了所有其过去的销售信息及有关购买过BMW、留意过BMW或

是来过BMW展厅的每个客户的信息。这个经销店想要增加未来的销售并部署了数据挖掘来实现此目标。

回归

问题:“对于新的BMWM5车型我们该如何定价?”回归模型只能给出这个问题的一个数值答案。回归模

型会使用BMW和M5的过去销售数据来基于所售汽车的属性和卖点确定人们过去在这个经销店购买车

的价格。然后,回归模型允许BMW经销店插入新车的属性来确定其价格。

比如:SellingPrice=$25,000+($2900夫LitersinEngine)+($9000*isSedan)

+($11,000*isConvertible)+($100*inchesofcar)+($22z000*isM)o

分类

问题:“那么客户X有多大的可能会购买最新的BMWM5呢?”创建一个分类树(一个决策树),并借

此挖掘数据就可以确定这个人购买一辆新的M5的可能性有多大.这个树上的节点可以是年龄、收入水平、

目前拥有的车的数量、婚姻状况、有无孩子、房主还是租户。对这个决策树使用此人的这些属性就可以确

定他购买M5的可能性。

群集

问题是:"哪个年龄组最喜欢银色的BMWM5?”这就需要挖掘数据来对比过去购车者的年龄和过去购买的

车的颜色。从这些数据,就能够找到某个年龄组(比如22-30岁)具有订购某种颜色的BMWM5的更高

的倾向性(75%购买蓝色)。同样地,它也可显示另一个不同的年龄组(比如55-62)则更倾向于订购银

色的BMW(65%购买银色,20%购买灰色)。这些数据,当挖掘后,倾向于集中于某些特定年龄组和

特定颜色周围,方便用户快速判断该数据内的模式。

最近邻

问题:“当人们购买BMWM5时,他们倾向于同时购买其他哪些选项?”数据挖掘显示,人们入店并购买一

辆BMWM5时,他们还会倾向于购买与之配套的行李箱。(这也就是所谓的购物篮分析)。使用此数据,

汽车经销店就会将配套行李箱的促销广告放在店面的显眼处,甚至会在报纸上做促销广告,如果他们购买

M5,配套行李箱将免费/打折,以期增加销售。

回页首

分类

分类(也即分类树或决策树)是一种数据挖掘算法,为如何确定一个新的数据实例的输出创建逐步指导。

它所创建的这个树上的每个节点都代表一个位置,在这个位置必须基于输入做出决策,并且会从一个节点

移到下一个节点直至到达能够得出预测的输出的叶子节点。这虽然听起来有些让人迷惑,但其实它非常直

观。让我们看一个例子。

清单1.简单的分类树

[will

YouRead

This

Section?]

Yes

NO

/

\

[willYOU

understand

It?]

[won't

LearnIt]

/

\

Yes

NO

/

\

[will

Learnit]

[won*t

LearnIt]

这个简单的分类树试图回答这个问题:“您理解分类树么?”在每个节点,您都会回答这个问题并继续沿着分

支下移,直到您到达一个回答了是或不是的叶子节点。这个模型可用于任何未知的数据实例,来预测这个

未知数据实例是否通过只询问两个简单问题就能理解分类树。这看上去像是分类树的一大优势一它无需

有关数据的大量信息就能创建一个十分准确且信息丰富的树。

分类树的一个重要概念非常类似于我们在用WEKA进行数据挖掘,第1部分:简介和回归回归模型中

看到的概念:使用一个“训练集”来生成模型。就是拿一组输出值已知的数据集并使用此数据集来创建我们的

模型。之后,只要我们有一个输出值未知的新的数据点,我们都可以将其放入这个模型并生成预期的输出。

这与我们在回归模型中看到的没有差别。只不过,这个模型更进了一步,通常会把整个训练集分成两个部

分:拿数据的约60-80%放入我们的训练集,用来生成模型;然后拿剩下的数据放入一个测试集,在模型

生成后,立即用其来测试我们模型的准确性。

那么这个额外的步骤为什么在此模型中如此重要呢?这个问题就是所谓的过双合:如果我们提供过多数据

用于模型创建,我们的模型虽然会被完美创建,但只针对的是该数据。请记住:我们想使用此模型来预测

未来的未知数;我们不是想使用此模型来准确地预测我们已经知道的值。这就是为什么我们要创建一个测

试集。在创建了模型后,我们要进行检查以确保我们所创建模型的准确性不会在测试集降低。这就保证了

我们的模型会准确地预测出未来的未知值。使用WEKA会看到它的实际效果。

这还引出了分类树的另一个重要概念:修剪。嬷翦正如其名字所指,意思是删减分类树的枝条。那么为什

么有人会想要将信息从分类树中删除呢?还是因为过拟合的缘故。随着数据集的增大以及属性数量的增长,

我们所创建的树就会越来越复杂。理论上讲,一个树可以具有leaves=(rows*attributes)»

但那又有何益处呢?就预测未来的未知数而言,它根本帮不到我们,因它只适于我们现有的训练数据。因

此我们需要的是一种平衡。我们想要我们的树尽量简单,节点和枝叶尽量少。同时我们还想要它尽量地准

确。这就需要进行权衡,我们不久就会看到。

在使用WEKA前,有关分类我还想指出最后一点,那就是假正和假负。假正指的是这样的一个数据实例:

我们创建的这个模型预测它应该是正的,但事实相反,实际值却是负的。同样地,假负指的是这样一个数

据实例:我们创建的这个模型预测它应该是负的,但事实相反,实际值却是正的。

这些错误表明在我们的模型中出了问题,我们的模型正在错误地分类某些数据。虽然可能会出现不正确的

分类,但可接受的错误百分比由模型创建者决定。比如,如果是在医院里测试心脏监视器,很显然,将需

要极低的错误百分比。而如果您只是在有关数据挖掘的文章中挖掘一些虚构的数据,那么错误率可以更高

一些。为了使之更进一步,还需要决定可以接受的假负与假正的百分比率是多少。我立即想到的一个例子

就是垃圾邮件模型:一个假正(一个真邮件被标记为了垃圾邮件)要比假负(一个垃圾消息未被标记为垃

圾邮件)更具破坏性。在像这样的例子中,就可以判断假负:假正的比率最低为100:1才是可以接受的。

好了,对于分类树的背景和技术方面的介绍已经够多了。让我们现在开始获得一些真正的数据并将其带入

WEKAo

WEKA数据集

我们用于分类示例的数据集所围绕的仍然是我们虚构的BMW经销店。这个经销店正在启动一个推销计

划,试图向其老客户推销两年延保。这个经销店过去曾做过类似的计划并从过去的销售中收集了4,500个

数据点。数据集中的属性有:

•收入水平[0=$0-$30k,1=$31k-$40k,2=$41k-$60k,3=$61k-$75k,4=$76k-$100k,5=$101k-$150k,

6=$151k-$500k,7=$501k+]

・第一辆BMW购买的年/月

・最近的BMW购买的年/月

・是否过去曾响应过延保计划

让我们来看看在这个例子中使用的Attribute-RelationFileFormat(ARFF)»

清单2.分类WEKA数据

©attributeincomeBracket{0,1,2,3,4,5,6,7}

(^attributeFirstPurchasenumeric

©attributeLastpurchasenumeric

©attributeresponded{1,0}

©data

4,200210,200601,0

5,200301,200601,1

在WEKA内进行分类

使用我们之前使用过的相同步骤来将数据文件bmw-training.arff(参见上载)载入WEKA。请注意:这

个文件只包含经销店记录内的这4,500个记录中的3,000个。我们需要分割我们的记录以便某些数据实

例被用来创建模型,某些被用来测试模型以确保没有过拟合。在加载了数据后,屏幕应该类似于图1o

图1.WEKA内的BMW分类数据

与我们在用WEKA进行数据挖掘,第1部分:简介和回归中对回归模型所做的类似,我们选

择Classify选项卡,然后选择trees节点,然后是J48叶子(我不知道为何这就是正式的名称,不过还是

接受吧)。

图2.BMW分类算法

至此,我们已经准备好可以在WEKA内创建我们的模型了。请确保Usetrainingset被选中以便我们使

用刚刚加载的这个数据集来创建模型。单击Start并让WEKA运行。模型的输出应类似于清单3内的结

果。

清单3.WEKA的分类模型的输出

NumberofLeaves:28

Sizeofthetree:43

Timetakentobuildmodel:0.18seconds

===Evaluationontrainingset===

===Summary===

CorrectlyClassifiedInstances177459.1333%

incorrectlyClassifiedinstances122640.8667%

KappastatiStic0.1807

Meanabsoluteerror0.4773

Rootmeansquarederror0.4885

Relativeabsoluteerror95.4768%

Rootrelativesquarederror97.7122%

TotalNumberofinstances3000

===DetailedAccuracyByclass===

TPRateFPRatePrecisionRecal1F-MeasureROCAreaclass

0.6620.4810.5870.6620.6220.6161

0.5190.3380.5970.5190.5550.6160

weightedAvg・0.5910.4110.5920.5910.5890.616

===ConfusionMatrix===

ab<--classifiedas

1009516|a=1

710765|b=0

上述这些数字是什么意思?我们怎么才能知道这是一个好的模型?我们应该寻找的这个所谓的“树”在哪

里?这些问题问得很好。让我们逐一回答:

•这些数字是什么意思?这里应该关注的重要数字是"CorrectlyClassifiedInstances"(59.1%)与

"IncorrectlyClassifiedInstances"(40.9%)旁边的这些数字。其他的重要数字还有"ROCArea"列

第一行的这个数字(0.616);我稍候会详细解释这个数字,目前只需记住即可。最后,在“Confusion

Matrix”中,显示了假正和假负的数量。在这个矩阵中,假正为516,假负为710。

・我们怎么才能知道这是一个好的模型?由于准确率仅为59.1%,我不得不承认经初步分析后,这

不是一个非常好的模型。

・这个所谓的“树”在哪里?要看到这个树,可右键单击刚刚创建的这个模型。在弹出菜单中,选

择Visualizetree。之后,就会看到我们所创建的这个分类树,虽然在本例中,可视树不能提供任

何帮助。我们的树如图3所示。看到这个树的另一种方式是在ClassifierOutput内往高处看,其

中的文本输出显示了具有节点和叶子的整个树。

图3.分类树可视化

还有最后一个步骤,就是验证我们的分类树,这需要贯穿模型运行我们的测试集并确保我们模型的准确性

在测试集时与在训练集时相差不远。为此,在Testoptions内,选择Suppliedtestset单选按钮并单

击Set。选择文件bmw-test.arff,内含1,500条记录,而这些记录在我们用来创建模型的训练集中是没有

的。当我们这次单击Start时,WEKA将会贯穿我们已经创建的这个模型运行测试数据集并会让我们知道

模型的情况。让我们现在单击Start。如下是输出。

图4.分类树测试

对比这个测试集的"CorrectlyClassifiedInstances"(55.7%)与训练集的"CorrectlyClassifiedInstances"

(59.1%),我们看到此模型的准确性非常接近,这表明此模型不会在应用未知数据或未来数据时,发生

故障。

不过,由于模型的准确性很差,只能正确地分类60%的数据记录,因此我们可以后退一步说:“哦,这个

模型一点都不好。其准确性勉强超过50%,我随便猜猜,也能得到这样的准确性。”这完全正确。这也是

我想审慎地告诉大家的一点:有时候,将数据挖掘算法应用到数据集有可能会生成一个糟糕的模型。这一

点在这里尤其准确,并且它是故意的。

我本想带您亲历用适合于分类模型的数据生成一个分类树的全过程。然而,我们从WEKA获得的结果表

明我们错了。我们在这里本应选择的并泮■分类树。我们所创建的这个模型不能告诉我们任何信息,并且如

果我们使用它,我们可能会做出错误的决策并浪费钱财。

那么这是不是意味着该数据无法被挖掘呢?当然不是,只不过需要使用另一种数据挖掘方法:最近邻模型,

该模型会在本系列的后续文章中讨论,它使用相同的数据集,却能创建一个准确性超过88%的模型。它

旨在强调一点:那就是必须为数据选择合适的模型才能得到有意义的信息.

进一步阅读:如果您想更多地了解分类树,有一些关键字可以查找,因篇幅的原因我在这里就不逐一介绍

了:ROCcurvesAUC、falsepositivesfalsenegatives>learningcurves、NaiveBayes、informationgain、

overfitting、pruning,chi-squaretest»

回页首

群集

群集让用户可以通过数据组来从数据确定模式。当数据集已定义并且需要从此数据确定一个通用的模式时,

群集的优势就会比较明显。您可以根据自身业务需要创建一定数量的组。与分类相比,群集的一个好处是

数据集内的每个属性都被用来分析该数据。(在分类方法中,只有属性的一个子集用在了模型中。)使用

群集的一个主要劣势是用户需要提前知道他想要创建的组的数量。若用户对其数据知之甚少,这可能会很

困难。是应该创建三个组?五个组?还是十个组?所以在决定要创建的理想组数之前,可能需要进行几个

步骤的尝试和出错。

不过,对于一般的用户,群集有可能是最为有用的一种数据挖掘方法。它可以迅速地将整个数据集分成组,

供您快速得出结论。此方法背后的算法多少有些复杂和难懂,这也是我们为何要充分利用WEKA的原因。

算法概览

如下是对群集中所用算法的一个简要的快速概览:

1.数据集内的每个属性都应该是规格化的,因此,每个值均除以该属性在数据集内的最高值与最低值

间的差值。例如,如果属性是年龄,且最高值为72,最低值为16,那么年龄32将被规格化为

0.5714,

2.理想的群集数量给定后,就可以随机地从数据集选择该数量的样例来充当我们初始测试群集中心。

比如,如果想要有三个群集,那么就可以从数据集中随意选择三行数据。

3.计算从每个数据样例到群集中心(我们随意选中的数据行)的距离,使用距离计算的最小平方法。

4.基于到每个群集中心的最短距离将每个数据行分配给一个群集。

5.计算重心,即只使用每个群集的数的每列数据的平均数。

6.计算每个数据样例与刚刚创建的这些重心之间的距离。如果群集及群集数不变,那么就说明大功告

成,群集创建完毕。如果它们变化,那么就需要返回到步骤3重新开始并一遍遍重复,直到不再

变化为止。

很显然,这看上去不怎么有趣。对于一个具有10行和三个群集的数据集,若使用电子数据表,需要花上30

分钟才能完成。那么想象一下,如果有100,000数据行和10个群集,若用手工完成那将花费多长时间。

所幸的是,计算机在几秒内就可以完成这类计算。

WEKA的数据集

我们为群集示例要使用的这个数据集同样也围绕着我们虚构的BMW经销店。这个经销店保留了人们如何

在经销店以及展厅行走、他们看了哪些车以及他们最终购车的机率的记录.经销店期望通过寻找数据内的

模式挖掘这些数据并使用群集来判断其客户是否有某种行为特点。在这个例子中有100行数据,并且每个

列都描述了顾客在他们各自的B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论