当前位置:文档之家› mahout简介

mahout简介

mahout简介
mahout简介

Apache Mahout 简介

通过可伸缩、商业友好的机器学习来构建智能应用程序

Grant Ingersoll , 技术人员, Lucid Imagination

简介: 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见。人们对机器学习技巧(比如说集群、协作筛选和分类)的需求前所未有地增长,无论是查找一大群人的共性还是自动标记海量 Web 内容。Apache Mahout 项目旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 的创始者 Grant Ingersoll 介绍了机器学习的基本概念,并演示了如何使用 Mahout 来实现文档集群、提出建议和组织内容。

发布日期: 2009 年 10 月 12 日

级别: 中级

其他语言版本: 英文

访问情况 6120 次浏览

建议: 0 (添加评论)

平均分 (共 13 个评分 )

在信息时代,公司和个人的成功越来越依赖于迅速有效地将大量数据转化为可操作的信息。无论是每天处理数以千计的个人电子邮件消息,还是从海量博客文章中推测用户的意图,都需要使用一些工具来组织和增强数据。这其中就蕴含着机器学习 领域以及本文章所介绍项目的前景:Apache Mahout (见 参考资料)。

机器学习是人工智能的一个分支,它涉及通过一些技术来允许计算机根据之前的经验改善其输出。此领域与数据挖掘密切相关,并且经常需要使用各种技巧,包括统计学、概率论和模式识别等。虽然机器学习并不是一个新兴领域,但它的发展速度是毋庸置疑的。许多大型公司,包括 IBM ?、Google 、Amazon 、Yahoo! 和 Facebook ,都在自己的应用程序中实现了机器学习算法。此外,还有许多公司在自己的应用程序中应用了机器学习,以便学习用户以及过去的经验,从而获得收益。

在简要概述机器学习的概念之后,我将介绍 Apache Mahout 项目的特性、历史和目标。然后,我将演示如何使用 Mahout 完成一些有趣的机器学习任务,这需要使用免费的 Wikipedia 数据集。

机器学习 101

机器学习可以应用于各种目的,从游戏、欺诈检测到股票市场分析。它用于构建类似于 Netflix 和 Amazon 所提供的系统,可根据用户的购买历史向他们推荐产品,或者用于构建可查找特定时间内的所有相似文章的系统。它还可以用于根据类别(体育、经济和战争等)对网页自动进行分类,或者用于标记垃圾电子邮件。本文无法完全列出机器学习的所有应用。如果您希望更加深入地探究该领域,我建议您参阅 参考资料。

可以采用一些机器学习方法来解决问题。我将重点讨论其中最常用的两个 — 监管 和无监管 学习 — 因为它们是 Mahout 支持的主要功能。 监管学习的任务是学习带标签的训练数据的功能,以便预测任何有效输入的值。监管学习的常见例子包括将电子邮件消息分类为垃圾邮件,根据类别标记网页,以及识别手写输入。创建监管学习程序需要使用许多算法,最常见的包括神经网络、Support Vector Machines (SVMs) 和 Naive Bayes 分类程序。

无监管学习的任务是发挥数据的意义,而不管数据的正确与否。它最常应用于将类似的输入集成到逻辑分组中。它还可以用于减少数据集中的维度数据,以便只专注于最有用的属性,或者用于探明趋势。无监管学习的常见方法包括 k-Means 、分层集群和自组织地图。

在本文中,我将重点讨论 Mahout 当前已实现的三个具体的机器学习任务。它们正好也是实际应用程序中相当常见的三个领域: l

协作筛选 l

集群 l 分类

在研究它们在 Mahout 中的实现之前,我将从概念的层面上更加深入地讨论这些任务。

协作筛选

协作筛选 (CF) 是 Amazon 等公司极为推崇的一项技巧,它使用评分、单击和购买等用户信息为其他站点用户提供推荐产品。CF 通常用于推荐各种消费品,比如说书籍、音乐和电影。但是,它还在其他应用程序中得到了应用,主要用于帮助多个操作人员通过协作来缩小数据范围。您可能已经在 Amazon 体验了 CF 的应用,如 图 1 所示:

图 1. Amazon 上的协作筛选示例

CF 应用程序根据用户和项目历史向系统的当前用户提供推荐。生成推荐的 4 种典型方法如下:

l

基于用户:通过查找相似的用户来推荐项目。由于用户的动态特性,这通常难以定量。 l

基于项目:计算项目之间的相似度并做出推荐。项目通常不会过多更改,因此这通常可以离线完成。 l

Slope-One :非常快速简单的基于项目的推荐方法,需要使用用户的评分信息(而不仅仅是布尔型的首选项)。 l 基于模型:通过开发一个用户及评分模型来提供推荐。

所有 CF 方法最终都需要计算用户及其评分项目之间的相似度。可以通过许多方法来计算相似度,并且大多数 CF 系统都允许您插入不同的指标,以便确定最佳结果。

集群

对于大型数据集来说,无论它们是文本还是数值,一般都可以将类似的项目自动组织,或集群,到一起。举例来说,对于全美国某天内的所有的报纸新闻,您可能希望将所有主题相同的文章自动归类到一起;然后,可以选择专注于特定的集群和主题,而不需要阅读大量无关内容。另一个例子是:某台机器上的传感器会持续输出内容,您可能希望对输出进行分类,以便于分辨正常和有问题的操作,因为普通操作和异常操作会归类到不同的集群中。

与 CF 类似,集群计算集合中各项目之间的相似度,但它的任务只是对相似的项目进行分组。在许多集群实现中,集合中的项目都是作为矢量表示在 n 维度空间中的。通过矢量,开发人员可以使用各种指标(比如说曼哈顿距离、欧氏距离或余弦相似性)来计算两个项目之间的距离。然后,通过将距离相近的项目归类到一起,可以计算出实际集群。

可以通过许多方法来计算集群,每种方法都有自己的利弊。一些方法从较小的集群逐渐构建成较大的集群,还有一些方法将单个大集群分解为越来越小的集群。在发展成平凡集群表示之前(所有项目都在一个集群中,或者所有项目都在各自的集群中),这两种方法都会通过特定的标准退出处理。流行的方法包括 k-Means 和分层集群。如下所示,Mahout 也随带了一些不同的集群方法。 分类

分类(通常也称为归类)的目标是标记不可见的文档,从而将它们归类不同的分组中。机器学习中的许多分类方法都需要计算各种统计数据(通过指定标签与文档的特性相关),从而创建一个模型以便以后用于分类不可见的文档。举例来说,一种简单的分类方法可以跟踪与标签相关的词,以及这些词在某个标签中的出现次数。然后,在对新文档进行分类时,系统将在模型中查找文档中的词并计算概率,然后输出最佳结果并通过一个分类来证明结果的正确性。

分类功能的特性可以包括词汇、词汇权重(比如说根据频率)和语音部件等。当然,这些特性确实有助于将文档关联到某个标签并将它整合到算法中。

机器学习这个领域相当广泛和活跃。理论再多终究需要实践。接下来,我将继续讨论 Mahout 及其用法。

Mahout 简介

Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,

括集群、分类、CP 和进化程序。此外,通过使用Apache Hadoop 库,Mahout 可以有效地扩展到云中(见参考资料)。

Mahout 的历史

背景知识

mahout的意思是大象的饲养者及驱赶者。Mahout 这个名称来源于该项目(有时)使用Apache Hadoop —其徽标上有一头黄色的大象—来实现可伸缩性和容错性。

Mahout 项目是由Apache Lucene(开源搜索)社区中对机器学习感兴趣的一些成员发起的,他们希望建立一个可靠、文档翔实、可伸缩的项目,在其中实现一些常见的用于集群和分类的机器学习算法。该社区最初基于Ng et al. 的文章“Map-Reduce for Machine Learning on Multicore”(见参考资料),但此后在发展中又并入了更多广泛的机器学习方法。Mahout 的目标还包括:l建立一个用户和贡献者社区,使代码不必依赖于特定贡献者的参与或任何特定公司和大学的资金。

l专注于实际用例,这与高新技术研究及未经验证的技巧相反。

l提供高质量文章和示例。

特性

虽然在开源领域中相对较为年轻,但Mahout 已经提供了大量功能,特别是在集群和CF 方面。Mahout 的主要特性包括:

Map-Reduce 简介

Map-Reduce 是Google 开发的一种分布式编程API,并在Apache Hadoop 项目中得到了实现。与分布式文件系统相结合,它可以为程序员提供一个定义良好的用于描述计算任务的API,从而帮助他们简化并行化问题的任务。(有关更多信息,请参见参考资料)。

l Taste CF。Taste 是Sean Owen 在SourceForge 上发起的一个针对CF 的开源项目,并在2008 年被赠予Mahout。

l一些支持Map-Reduce 的集群实现包括k-Means、模糊k-Means、Canopy、Dirichlet 和Mean-Shift。

l Distributed Naive Bayes 和Complementary Naive Bayes 分类实现。

l针对进化编程的分布式适用性功能。

l Matrix 和矢量库。

l上述算法的示例。

Mahout 入门

Mahout 的入门相对比较简单。首先,您需要安装以下软件:

l JDK 1.6 或更高版本

l Ant 1.7 或更高版本

l如果要编译Mahout 源代码,还需要安装Maven 2.0.9 或2.0.10

您还需要本文的示例代码(见下载部分),其中包括一个Mahout 副本及其依赖关系。依照以下步骤安装示例代码:

1.解压缩sample.zip

2.cd apache-mahout-examples

3.ant install

步骤 3 将下载必要的Wikipedia 文件将编译代码。所使用的Wikipedia 文件大约为2.5 GB,因此下载时间将由您的宽带决定。

建立一个推荐引擎

Mahout 目前提供了一些工具,可用于通过Taste 库建立一个推荐引擎—针对CF 的快速且灵活的引擎。Taste 支持基于用户和基于项目的推荐,并且提供了许多推荐选项,以及用于自定义的界面。Taste 包含 5 个主要组件,用于操作用户、项目和首选项:l DataModel:用于存储用户、项目和首选项

l UserSimilarity:用于定义两个用户之间的相似度的界面

l ItemSimilarity:用于定义两个项目之间的相似度的界面

l Recommender:用于提供推荐的界面

l UserNeighborhood:用于计算相似用户邻近度的界面,其结果随时可由Recommender使用

借助这些组件以及它们的实现,开发人员可以构建复杂的推荐系统,提供基于实时或者离线的推荐。基于实时的推荐经常只能处理数千用户,而离线推荐具有更好的适用性。Taste 甚至提供了一些可利用Hadoop 离线计算推荐的工具。在许多情况中,这种合适的方法可以帮助您满足包含大量用户、项目和首选项的大型系统的需求。

为了演示如何构建一个简单的推荐系统,我需要一些用户、项目和评分。为此,我们会使用cf.wikipedia.GenerateRatings中的代码(包含在示例代码的源代码中)为Wikipedia 文档(Taste 称之为项目)随机生成大量用户和首选项,然后再手动补充一些关于特定话题(Abraham Lincoln)的评分,从而创建示例中的最终recommendations.txt 文件。此方法的内涵是展示CF 如何将对某特定话题感兴趣的人导向相关话题的其他文档。此示例的数据来源于990(标记为从0 到989)个随机用户,他们随机为集合中的所有文章随机分配了一些评分,以及10 个用户(标记为从990 到999),他们对集合中包含Abraham Lincoln关键字的17 篇文章中的部分文章进行了评分。

注意虚构数据!

本文中的示例完全使用的是虚构数据。我自己完成了所有评分,模拟了10 个对Abraham Lincoln 感兴趣的实际用户。虽然我相信数据内部的概念很有趣,但数据本身以及所使用的值并非如此。如果您希望获得实际数据,我建议您参阅University of Minnesota 的GroupLens 项目,以及Taste 文档(见参考资料)。我选择虚构数据的原因是希望在所有示例中都使用单一数据集。

首先,我将演示如何为在recommendations.txt 文件中指定了分数的用户创建推荐。这是Taste 最为常见的应用,因此首先需要载入包含推荐的数据,并将它存储在一个DataModel中。Taste 提供了一些不同的DataModel实现,用于操作文件和数据库。在本例中,为简便起见,我选择使用FileDataModel类,它对各行的格式要求为:用户ID、项目ID、首选项—其中,用户ID 和项目ID 都是字符串,而首选项可以是双精度型。建立了模型之后,我需要通知Taste 应该如何通过声明一个UserSimilarity实现来比较用户。根据所使用的UserSimilarity实现,您可能还需要通知Taste 如何在未指定明确用户设置的情况下推断首选项。清单 1 实现了以上代码。(示例代码中的cf.wikipedia.WikipediaTasteUserDemo包含了完整的代码清单)。

清单 1. 创建模型和定义用户相似度

//create the data model

FileDataModel dataModel = new FileDataModel(new File(recsFile));

UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);

// Optional:

userSimilarity.setPreferenceInferrer(new AveragingPreferenceInferrer(dataModel));

在清单1中,我使用了PearsonCorrelationSimilarity,它用于度量两个变量之间的关系,但是也可以使用其他UserSimilarity 度量。应该根据数据和测试类型来选择相似度度量。对于此数据,我发现这种组合最为合适,但仍然存在一些问题。有关如何选择相似度度量的更多信息,请访问Mahout 网站(见参考资料)。

为了完成此示例,我需要构建一个UserNeighborhood和一个Recommender。UserNeighborhood可以识别与相关用户类似的用户,并传递给Recommender,后者将负责创建推荐项目排名表。清单 2 实现了以下想法:

清单 2. 生成推荐

//Get a neighborhood of users

UserNeighborhood neighborhood =

new NearestNUserNeighborhood(neighborhoodSize, userSimilarity, dataModel);

//Create the recommender

Recommender recommender =

new GenericUserBasedRecommender(dataModel, neighborhood, userSimilarity);

User user = dataModel.getUser(userId);

System.out.println("-----");

System.out.println("User: " + user);

//Print out the users own preferences first

TasteUtils.printPreferences(user, handler.map);

//Get the top 5 recommendations

List recommendations =

recommender.recommend(userId, 5);

TasteUtils.printRecs(recommendations, handler.map);

您可以在命令行中运行整个示例,方法是在包含示例的目录中执行ant user-demo。运行此命令将打印输出虚构用户995 的首选项和推荐,该用户只是Lincoln 的爱好者之一。清单 3 显示了运行ant user-demo的输出:

清单 3. 用户推荐的输出

[echo] Getting similar items for user: 995 with a neighborhood of 5

[java] 09/08/20 08:13:51 INFO file.FileDataModel: Creating FileDataModel

for file src/main/resources/recommendations.txt

[java] 09/08/20 08:13:51 INFO file.FileDataModel: Reading file info...

[java] 09/08/20 08:13:51 INFO file.FileDataModel: Processed 100000 lines

[java] 09/08/20 08:13:51 INFO file.FileDataModel: Read lines: 111901

[java] Data Model: Users: 1000 Items: 2284

[java] -----

[java] User: 995

[java] Title: August 21 Rating: 3.930000066757202

[java] Title: April Rating: 2.203000068664551

[java] Title: April 11 Rating: 4.230000019073486

[java] Title: Battle of Gettysburg Rating: 5.0

[java] Title: Abraham Lincoln Rating: 4.739999771118164

[java] Title: History of The Church of Jesus Christ of Latter-day Saints

Rating: 3.430000066757202

[java] Title: Boston Corbett Rating: 2.009999990463257

[java] Title: Atlanta, Georgia Rating: 4.429999828338623

[java] Recommendations:

[java] Doc Id: 50575 Title: April 10 Score: 4.98

[java] Doc Id: 134101348 Title: April 26 Score: 4.860541

[java] Doc Id: 133445748 Title: Folklore of the United States Score: 4.4308662

[java] Doc Id: 1193764 Title: Brigham Young Score: 4.404066

[java] Doc Id: 2417937 Title: Andrew Johnson Score: 4.24178

从清单 3 中可以看到,系统推荐了一些信心级别不同的文章。事实上,这些项目的分数都是由其他Lincoln 爱好者指定的,而不是用户995 一人所为。如果您希望查看其他用户的结构,只需要在命令行中传递-Duser.id=USER-ID参数,其中USER-ID是0和999之间的编号。您还可以通过传递-Dneighbor.size=X来更改邻近空间,其中,X是一个大于0 的整型值。事实上,将邻近空间更改为10可以生成极为不同的结果,这是因为阾近范围内存在一个随机用户。要查看邻近用户以及共有的项目,可以向命令行添加-Dcommon=true。

现在,如果您所输入的编号恰好不在用户范围内,则会注意到示例生成了一个NoSuchUserException。确实,应用程序需要处理新用户进入系统的情况。举例来说,您可以只显示10 篇最热门的文章,一组随机文章,或者一组“不相关”的文章—或者,与其这样,还不如不执行任何操作。

如前所述,基于用户的方法经常不具有可伸缩性。在本例中,使用基于项目的方法是更好的选择。幸运的是,Taste 可以非常轻松地实现基于项目的方法。处理项目相似度的基本代码并没有很大差异,如清单 4 所示:

清单 4. 项目相似度示例(摘录自cf.wikipedia.WikipediaTasteItemItemDemo)

//create the data model

FileDataModel dataModel = new FileDataModel(new File(recsFile));

//Create an ItemSimilarity

ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);

//Create an Item Based Recommender

ItemBasedRecommender recommender =

new GenericItemBasedRecommender(dataModel, itemSimilarity);

//Get the recommendations

List recommendations =

recommender.recommend(userId, 5);

TasteUtils.printRecs(recommendations, handler.map);

与清单1相同,我根据推荐文件创建了一个DataModel,但这次并未实例化UserSimilarity实例,而是使用LogLikelihoodSimilarity创建了一个ItemSimilarity,它可以帮助处理不常见的事件。然后,我将ItemSimilarity提供给一个ItemBasedRecommender,最后请求推荐。完成了!您可以通过ant item-demo命令在示例中代码运行它。当然,在此基础上,您可以让系统支持离线执行这些计算,您还可以探索其他的ItemSimilarity度量。注意,由于本示例中的数据是随机的,所推荐的内容可能并不符合用户的期望。事实上,您应该确保在测试过程中计算结果,并尝试不同的相似度指标,因为许多常用指标在一些边界情况中会由于数据不足而无法提供合适的推荐。

我们再来看新用户的例子,当用户导航到某个项目之后,缺少用户首选项时的操作就比较容易实现了。对于这种情况,您可以利用项目计算并向ItemBasedRecommender请求与相当项目最相似的项目。清单 5 展示了相关代码:

清单 5. 相似项目演示(摘录自cf.wikipedia.WikipediaTasteItemRecDemo)

//create the data model

FileDataModel dataModel = new FileDataModel(new File(recsFile));

//Create an ItemSimilarity

ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);

//Create an Item Based Recommender

ItemBasedRecommender recommender =

new GenericItemBasedRecommender(dataModel, itemSimilarity);

//Get the recommendations for the Item

List simItems

= recommender.mostSimilarItems(itemId, numRecs);

TasteUtils.printRecs(simItems, handler.map);

您可以通过在命令中执行ant sim-item-demo来运行清单5。它与清单4之间的唯一差异就是,清单5并没有请求推荐,而是请求输出最相似的项目。

现在,您可以继续深入探索Taste。要了解更多信息,请阅读Taste 文档和mahout-user@https://www.doczj.com/doc/721888164.html, 邮件列表(见参考资料)。接下来,我将讨论如何通过利用Mahout 的集群功能来查找相似文章。

使用Mahout 实现集群

Mahout 支持一些集群算法实现(都是使用Map-Reduce 编写的),它们都有一组各自的目标和标准:

l Canopy:一种快速集群算法,通常用于为其他集群算法创建初始种子。

l k-Means(以及模糊k-Means):根据项目与之前迭代的质心(或中心)之间的距离将项目添加到k 集群中。

l Mean-Shift:无需任何关于集群数量的推理知识的算法,它可以生成任意形状的集群。

l Dirichlet:借助基于多种概率模型的集群,它不需要提前执行特定的集群视图。

从实际的角度来说,名称和实现并不如它们生成的结果重要。了解了这一点之后,我将展示k-Means 的运行原理,而其余内容将由您自己去研究。请记住,要有效运行每个算法,您需要满足它们各自的的需求。

简单来说(详细信息见下文),使用Mahout 创建数据集群的步骤包括:

1.准备输入。如果创建文本集群,您需要将文本转换成数值表示。

2.使用Mahout 中可用的Hadoop 就绪的驱动程序运行所选集群算法。

3.计算结果。

4.如果有必要,执行迭代。

首先,集群算法要求数据必需采用适合处理的格式。在机器学习中,数据通常被表示为矢量,有时也称作特征矢量。在集群中,矢量是表示数据的一组权重值。我将使用通过Wikipedia 文档生成的矢量来演示集群,但是也可以从其他地方获取矢量,比如说传感器数据或用户资料。Mahout 随带了两个Vector表示:DenseVector和SparseVector。根据所使用的数据,您需要选择合适的实现,以便实现良好的性能。通常而言,基于文本的问题是很少的,因此应该使用SparseVector来处理文本。另一方面,如果大多数矢量的大多数值都是非零的,则比较适合使用DenseVector。如果您对此不确定,可以尝试这两种实现来处理数据的一个子集,然后确定哪种实现的运行速度更快。

通过Wikipedia 内容生成矢量的方法如下(我已经完成了此工作):

1.将内容索引编入Lucene,确保存储相关字段(用于生成矢量的字段)的term 矢量。我不会讨论这方面的详细信息—不在本

文讨论范围之内—但我会提供一些简要提示以及Lucene 上的一些参考资料。Lucene 提供了一个称为EnWikiDocMaker的类(包含在Lucene 的contrib/benchmark包中),该类可以读取Wikipedia 文件块中的内容并生成编入Lucene 索引的文档。2.使用org.apache.mahout.utils.vectors.lucene.Driver类(位于Mahout 的utils模块中)通过Lucene 索引创建矢量。此

驱动程序提供了大量用于创建矢量的选项。Mahout wiki 页面“Creating Vectors from Text”提供了更多信息(见参考资料)。

运行这两个步骤的结果是生成一个文件,该文件类似于与您从Getting started with Mahout 入门部分下载的n2.tar.gz 文件。需要说明一下,n2.tar.gz 文件中的矢量是通过由ant install方法之前下载的Wikipedia “块”文件中的所有文件的索引创建的。矢量将被格式化为Euclidean 格式(或者L2格式;请参见参考资料)。在使用Mahout 时,您可能希望尝试采用不同的方法来创建矢量,以确定哪种方法的效果最好。

评估结果

可以采用多种方法来评估集群结果。许多人最开始都是使用手动检查与随机测试相结合的方法。但是,要实现令人满足的结果,通常都需要使用一些更加高级的计算技巧,比如说使用一些准则开发一个黄金标准。有关评估结果的更多信息,请参见参考资料。在本例中,我使用手动检查来判断结果集群是否有意义。如果要投入生产,则应该使用更加严格的流程。

创建了一组矢量之后,接下来需要运行k-Means 集群算法。Mahout 为所有集群算法都提供了驱动程序,包括k-Means 算法,更合适的名称应该是KMeansDriver。可以直接将驱动程序作为单独的程序使用,而不需要Hadoop 的支持,比如说您可以直接运行ant k-means。有关KMeansDriver可接受的参数的更多信息,请查看build.xml 中的Ant k-means 目标。完成此操作之后,您可以使用ant dump命令打印输出结果。

成功在独立模式中运行驱动程序之后,您可以继续使用Hadoop 的分布式模式。为此,您需要Mahout Job JAR,它位于示例代码的hadoop 目录中。Job JAR 包可以将所有代码和依赖关系打包到一个JAR 文件中,以便于加载到Hadoop 中。您还需要下载Hadoop 0.20,并依照Hadoop 教程的指令,首先在准分布式模式(也就是一个集群)中运行,然后再采用完全分布式模式。有关更多信息,请参见Hadoop 网站及资源,以及IBM 云计算资源(参见参考资料)。

使用Mahout 实现内容分类

Mahout 目前支持两种根据贝氏统计来实现内容分类的方法。第一种方法是使用简单的支持Map-Reduce 的Naive Bayes 分类器。Naive Bayes 分类器为速度快和准确性高而著称,但其关于数据的简单(通常也是不正确的)假设是完全独立的。当各类的训练示例的大小不平衡,或者数据的独立性不符合要求时,Naive Bayes 分类器会出现故障。第二种方法是Complementary Naive Bayes,它会尝试纠正Naive Bayes 方法中的一些问题,同时仍然能够维持简单性和速度。但在本文中,我只会演示Naive Bayes 方法,因为这能让您看到总体问题和Mahout 中的输入。

简单来讲,Naive Bayes 分类器包括两个流程:跟踪特定文档及类别相关的特征(词汇),然后使用此信息预测新的、未见过的内容的类别。第一个步骤称作训练(training),它将通过查看已分类内容的示例来创建一个模型,然后跟踪与特定内容相关的各个词汇的概率。第二个步骤称作分类,它将使用在训练阶段中创建的模型以及新文档的内容,并结合Bayes Theorem 来预测传入文档的类别。因此,要运行Mahout 的分类器,您首先需要训练模式,然后再使用该模式对新内容进行分类。下一节将演示如何使用Wikipedia 数据集来实现此目的。

运行Naive Bayes 分类器

在运行训练程序和分类器之前,您需要准备一些用于训练和测试的文档。您可以通过运行ant prepare-docs来准备一些Wikipedia 文件(通过install目标下载的文件)。这将使用Mahout 示例中的WikipediaDatasetCreatorDriver类来分开Wikipedia 输入文件。分开文档的标准是它们的类似是否与某个感兴趣的类别相匹配。感兴趣的类别可以是任何有效的Wikipedia 类别(或者甚至某个Wikipedia 类别的任何子字符串)。举例来说,在本例中,我使用了两个类别:科学(science)和历史(history)。因此,包含单词science或history的所有Wikipedia 类别都将被添加到该类别中(不需要准确匹配)。此外,系统为每个文档添加了标记并删除了标点、Wikipedia 标记以及此任务不需要的其他特征。最终结果将存储在一个特定的文件中(该文件名包含类别名),并采用每行一个文档的格式,这是Mahout 所需的输入格式。同样,运行ant prepare-test-docs代码可以完成相同的文档测试工作。需要确保测试和训练文件没有重合,否则会造成结果不准确。从理论上说,使用训练文档进行测试应该能实现最的结果,但实际情况可能并非如此。

设置好训练和测试集之后,接下来需要通过ant train目标来运行TrainClassifier类。这应该会通过Mahout 和Hadoop 生成大量日志。完成后,ant test将尝试使用在训练时建立的模型对示例测试文档进行分类。这种测试在Mahout 中输出的数据结构是混合矩阵。混合矩阵可以描述各类别有多少正确分类的结果和错误分类的结果。

总的来说,生成分类结果的步骤如下:

1.ant prepare-docs

2.ant prepare-test-docs

3.ant train

4.ant test

运行所有这些命令(Ant 目标classifier-example将在一次调用中捕获所有它们),这将生成如清单 6 所示的汇总和混合矩阵:

清单 6. 运行Bayes 分类器对历史和科学主题进行分类的结果

[java] 09/07/22 18:10:45 INFO bayes.TestClassifier: history

95.458984375 3910/4096.0

[java] 09/07/22 18:10:46 INFO bayes.TestClassifier: science

15.554072096128172 233/1498.0

[java] 09/07/22 18:10:46 INFO bayes.TestClassifier: =================

[java] Summary

[java] -------------------------------------------------------

[java] Correctly Classified Instances : 4143

74.0615%

[java] Incorrectly Classified Instances : 1451

25.9385%

[java] Total Classified Instances : 5594

[java]

[java] =======================================================

[java] Confusion Matrix

[java] -------------------------------------------------------

[java] a b <--Classified as

[java] 3910 186 | 4096 a = history

[java] 1265 233 | 1498 b = science

[java] Default Category: unknown: 2

中间过程的结果存储在base 目录下的wikipedia 目录中。

获取了结果之后,显然还有一个问题:“我应该如何做?”汇总结果表明,正确率和错误率大概分别为75%和25%。这种结果看上去非常合理,特别是它比随机猜测要好很多。但在仔细分析之后,我发现对历史信息的预测(正确率大约为95%)相当出色,而对科学信息的预测则相当糟糕(大约15%)。为了查找其原因,我查看了训练的输入文件,并发现与历史相关的示例要比科学多很多(文件大小几乎差了一倍),这可能是一个潜在的问题。

对于测试,您可以向ant test添加-Dverbose=true选项,这会显示关于各测试输入的信息,以及它的标签是否正确。仔细研究此输出,您可以查找文档并分析它分类错误的原因。我还可以尝试不同的输入参数,或者使用更加科学数据来重新训练模型,以确定是

否能够改善此结果。

在训练模型时考虑使用特征选择也是很重要的。对于这些示例,我使用Apache Lucene 中的WikipediaTokenizer来标记初始文档,但是我没有尽力删除可能标记错误的常用术语或垃圾术语。如果要将此分类器投入生产,那么我会更加深入地研究输入和其他设置,以弥补性能的每个方面。

为了确定Science 结果是否是个意外,我尝试了一组不同的类别:共和(Republican)与民主(Democrat)。在本例中,我希望预测新文档是否与Republicans 或者Democrats 相关。为了帮助您独立实现此功能,我在src/test/resources 中创建了repubs-dems.txt 文件。然后,通过以下操作完成分类步骤:

ant classifier-example -Dcategories.file=./src/test/resources/repubs-dems.txt -Dcat.dir=rd

两个-D值仅仅指向类别文件以及wikipedia 目录中存储中间结果的目录。此结果概要和混合矩阵如清单7 所示:

清单7. 运行Bayes 分别器查找Republicans 和Democrats 的结果

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: --------------

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: Testing:

wikipedia/rd/prepared-test/democrats.txt

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: democrats 70.0

21/30.0

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: --------------

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: Testing:

wikipedia/rd/prepared-test/republicans.txt

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier: republicans 81.3953488372093

35/43.0

[java] 09/07/23 17:06:38 INFO bayes.TestClassifier:

[java] Summary

[java] -------------------------------------------------------

[java] Correctly Classified Instances : 56 76.7123%

[java] Incorrectly Classified Instances : 17 23.2877%

[java] Total Classified Instances : 73

[java]

[java] =======================================================

[java] Confusion Matrix

[java] -------------------------------------------------------

[java] a b <--Classified as

[java] 21 9 | 30 a = democrats

[java] 8 35 | 43 b = republicans

[java] Default Category: unknown: 2

虽然最终结果在正确性方面差不多是相同的,但您可以看到我在这两个类别中进行选择时采取更好的方式。查看包含输入文档的wikipedia/rd/prepared 目录,我们发现两个训练文件在训练示例方面更加平衡了。此外,与“历史/科学”结果相比,得到了示例也少了很多,因为每个文件都比历史或科学训练集小很多。总的来说,结果至少表明平衡性得到了显著改善。更大的训练集可能会抵消Republicans 和Democrats 之间的差异,即便不行也可以暗示某个分组坚持其在Wikipedia 上的消息是较好的选择—但是,我选择将这留给政治学者来决定。

现在,我已经展示了如何在独立模式中执行分类,接下来需要将代码添加到云中,并在Hadoop 集群上运行。与集群代码相同,您需要Mahout Job JAR。除此之外,我之前提到的所有算法都是支持Map-Reduce 的,并且能够在Hadoop 教程所述的Job 提交流程中运行。

结束语

Apache Mahout 在一年多的时间中走过了漫长的道路,为集群、分类和CF 提供了许多重要的功能,但它还存在很大的发展空间。日益强大起来的还有Map-Reduce 的随机决策实现,它提供了分类、关联规则、用于识别文档主题的Latent Dirichlet Allocation 以及许多使用HBase 和其他辅助存储选项的类别选项。除了这些新的实现之外,还可以找到许多演示、文档和bug 修复包。

最后,就像实际驱象者(mahout)利用大象的力量一样,Apache Mahout 也可以帮助您利用小黄象Apache Hadoop 的强大功能。下次在需要集群、分类或推荐内容时,特别是规模很大时,一定要考虑使用Apache Mahout。

致谢

特别感谢Ted Dunning 和Sean Owen 对本文的审阅和建议。

参考资料

学习

l机器学习

?机器学习:Wikipedia 页面提供了一些有用的入门信息和优秀的参考资料,可帮助您了解关于机器学习(包含监管学习等方法)的更多信息。

?Programming Collective Intelligence(Toby Segaran,O'Reilly,2007 年):本书可以帮助您迅速掌握许多机器任务。

?Artificial Intelligence | Machine Learning:使用斯坦福大学教授Andrew Ng 开发的这个类。

?Evaluation of clustering:了解关于评估集群的更多信息。另请参阅Mahout 邮件列表上的讨论。

?Bayes Theorem:了解Bayes Theorem 的运行原理。

?L p空间:理解L p格式。

l Apache Mahout 和Apache Lucene

?Mahout 项目主页:搜索关于Mahout 的所有内容。

?“Map-Reduce for Machine Learning on Multicore”:这篇文章将帮助您启动Mahout。

?“MapReduce: Simplified Data Processing on Large Clusters”(Google Research Publications):阅读关于Map-Reduce 初级文章。

?Taste:阅读Taste 文档。

?Apache Lucene:了解关于Lucene 的更多信息。

?Apache Lucene on developerWorks:通过这些文章探索Lucene 的世界。

?Creating Vectors from Text:阅读Mahout Wiki 中的这个条目,了解如何将数据转换为Mahout 的Vector类。

?Cluster Your Data:阅读此Mahout Wiki 页面,了解关于如何实现数据集群的更多信息。

l Apache Hadoop:

?Apache Hadoop:了解关于Hadoop 的更多信息。

?Hadoop 快速入门教程:了解如何运行Hadoop Job。

?HBase:理解Hadoop 数据库。

l浏览技术书店,阅读有关这些主题和其他技术主题的图书。

l Cloud Computing:访问developerWorks 云计算空间。

l developerWorks Java 技术专区:数百篇关于Java 编程各个方面的文章。

获得产品和技术

l下载Hadoop 0.20.0。

l下载Wikipedia 的子集。

l下载Wikipedia 的子集作为矢量。

l从GroupLens项目获取真实的电影评分数据。

讨论

l加入Mahout 社区:mahout-user@https://www.doczj.com/doc/721888164.html,。

l加入My developerWorks 社区。

关于作者

Grant Ingersoll 是Lucid Imagination 的创始人及技术人员之一。Grant 的编程兴趣包括信息检索、机器学习、文本分类和提取。Grant 是Apache Mahout 机器学习项目的创始人之一,同时还是Apache Lucene 和Apache Solr 项目的热衷者和演讲者。他还与人共同编写了Taming Text(Manning,即将出版)一书,该书概述了用于自然语言处理的开源工具。

数据挖掘试卷一

数据挖掘整理(熊熊整理-----献给梦中的天涯) 单选题 1.下面哪种分类方法是属于神经网络学习算法?() A. 判定树归纳 B. 贝叶斯分类 C. 后向传播分类 D. 基于案例的推理 2.置信度(confidence)是衡量兴趣度度量( A )的指标。 A、简洁性 B、确定性 C.、实用性 D、新颖性 3.用户有一种感兴趣的模式并且希望在数据集中找到相似的模式,属于数据挖掘哪一类任务?(A) A. 根据内容检索 B. 建模描述 C. 预测建模 D. 寻找模式和规则 4.数据归约的目的是() A、填补数据种的空缺值 B、集成多个数据源的数据 C、得到数据集的压缩表示 D、规范化数据 5.下面哪种数据预处理技术可以用来平滑数据,消除数据噪声? A.数据清理 B.数据集成 C.数据变换 D.数据归约 6.假设12个销售价格记录组已经排序如下:5, 10, 11, 13, 15, 35, 50, 55, 72, 92, 204, 215 使用如下每种方法将它们划分成四个箱。等频(等深)划分时,15在第几个箱子内?(B) A 第一个 B 第二个 C 第三个 D 第四个 7.下面的数据操作中,()操作不是多维数据模型上的OLAP操作。 A、上卷(roll-up) B、选择(select) C、切片(slice) D、转轴(pivot) 8.关于OLAP和OLTP的区别描述,不正确的是: (C) A. OLAP主要是关于如何理解聚集的大量不同的数据.它与OTAP应用程序不同. B. 与OLAP应用程序不同,OLTP应用程序包含大量相对简单的事务. C. OLAP的特点在于事务量大,但事务内容比较简单且重复率高. D. OLAP是以数据仓库为基础的,但其最终数据来源与OLTP一样均来自底层的数据库系统,两者面对的用户是相同的 9.下列哪个描述是正确的?() A、分类和聚类都是有指导的学习 B、分类和聚类都是无指导的学习

数据挖掘流程模型CRISP-DM

CRISP-DM 1.0 数据挖掘方法论指南 Pete Chapman (NCR), Julian Clinton (SPSS), Randy Kerber (NCR), Thomas Khabaza (SPSS), Thomas Reinartz (DaimlerChrysler), Colin Shearer (SPSS) and Rüdiger Wirth (DaimlerChrysler)

该手册描述了CRISP-DM(跨行业数据挖掘标准流程)过程模型,包括CRISP-DM的方法论、相关模型、用户指南、报告介绍,以及一个含有其他相关信息的附录。 本手册和此处的信息均为CRISP-DM协会以下成员的专利:NCR Systems Engineering Copenhagen (USA and Denmark), DaimlerChrysler AG (Germany), SPSS Inc. (USA) and OHRA Verzekeringen en Bank Groep B.V (The Netherlands)。 著作权? 1999, 2000 本手册中所有商标和服务标记均为它们各自所有者的标记,并且为CRISP-DM协会的成员所公认。

前言 1996年下半年,数据挖掘市场尚处于萌芽状态,CRISP-DM率先由三家资深公司共同提出。DaimlerChrysler (即后来的Daimler-Benz) 在其商业运营中运用数据挖掘的经验颇为丰富,远远领先于其他大多数商业组织。SPSS(即后来的ISL)自1990年以来一直致力于提供基于数据挖掘的服务,并于1994年推出了第一个商业数据挖掘平台——Clementine。至于NCR,作为对其Teradata数据仓库客户增值目标的一部分,它已经建立了数据挖掘顾问和技术专家队伍以满足其客户的需要。 当时,数据挖掘所引起的市场关注开始表明其进入爆炸式增长和广泛应用的迹象。这既令人兴奋又使人害怕。随着我们在这条路上不断走下去,所有人都不断研究和发展数据挖掘方法。可是我们做的是否正确?是否每一个数据挖掘的新使用者都必须像我们当初一样经历反复试验和学习?此外,从供应商的角度来看,我们怎样向潜在客户证明数据挖掘技术已足够成熟到可以作为它们商业流程的一个关键部分? 在这种情况下,我们认为急需一个标准的流程模型——非私人所有并可以免费获取——向我们和所有的从业者很好的回答这些问题。 一年后我们组建了联盟,名字CRISP-DM取自CRoss-Industry Standard Process for Data Mining的缩写,由欧洲委员会提供资助,开始实施我们最初的想法。因为CRISP-DM的定位是面向行业、工具导向和面向应用的,所以我们明白必须“海纳百川,博采众家之长”,必须在一个尽可能宽的范围内吸引人们的兴趣(比如数据仓库制造商和管理咨询顾问)。于是我们决定成立CRISP-DM 专门兴趣小组(即大家所知道的“The SIG”)。我们邀请所有感兴趣的团体和个人到阿姆斯特丹参加为期一天的工作会议,讨论并正式成立SIG组织:我们观念共享,鼓励与会者畅所欲言,为发展CRISP-DM共商大计。 当天每个协会成员都心怀惴惴,会不会没有人对CRISP-DM有足够的兴趣?即使有,那他们是否认为实际上并未看到一种对标准化流程的迫切需求?或者我们的想法迄今为止与别人的步调不一致,任何标准化的念头只是不切实际的白日梦? 事实上,讨论的结果大大超出了我们的期望。下面三点最为突出: 当天的与会人数是我们原先期望的两倍 行业需要而且现在就需要一个标准化流程——大家压倒性的一致同意 每个出席者从他们的项目经验出发陈述了自己关于数据挖掘的看法,这使我们越来越清晰地看到:尽管表述上有些区别——主要是在阶段的划分和术语方面,但在如何看待数据挖掘流程上大家具有极大的相似之处。 在工作组结束的时候,我们充满了自信,受SIG的启发和批评,我们能够建成一个标准化流程模型,为数据挖掘事业作出贡献。 接下来的两年半里,我们努力工作来完善和提炼CRISP-DM。我们不断地在Mercedes-Benz、保险部门的伙伴及OHRA的实际大型数据挖掘项目中进行尝试。同时也运用商业数据挖掘工具来整合CRISP-DM。SIG证明了是无价的,其成员增长到200多,并且在伦敦、纽约和布鲁塞尔都拥有工作组。 到该项目的欧洲委员会支持基金部分结束时——1999年年中,我们提出了自己觉得质量优良的流程模型草案。熟悉这一草案的人将会发现,一年以来,尽管现在的CRISP-DM1.0更完整更好,但从根本上讲并没有什么本质不同。我们强烈地意识到:在整个项目中,流程模型仍然是一个持续进行的工作;CRISP-DM还只是在一系列有限的项目中得到证实。过去的一年里,DaimlerChrysler有机会把CRISP-DM运用于更为广阔的范围。SPSS和NCR的专业服务团体采纳了CRISP-DM,而且用之成功地完成了无数客户委托,包括许多工业和商业的问题。这段时间以来,我们看到协会外部的服务供应商也采用了CRISP-DM;分析家不断重复地提及CRISP-DM

数据挖掘过程中的预处理阶段

数据挖掘过程中的预处理阶段 整个数据挖掘过程中,数据预处理要花费60%左右的时间,而后的挖掘工作仅占总工作量的10%左右[1]。经过预处理的数据,不但可以节约大量的空间和时间,而且得到的挖掘结果能更好地起到决策和预测作用。 一般的,数据预处理分为4个步骤,本文把对初始数据源的选择作为数据预处理过程中的一个步骤,即共分为5个步骤。因为,如果在数据获得初期就有一定的指导,则可以减少数据获取的盲目性以及不必要噪声的引入且对后期的工作也可节约大量的时间和空间。整个预处理过程见下图: 1 初始源数据的获取 研究发现,通过对挖掘的错误结果去寻找原因,多半是由数据源的质量引起的。因此,原始数据的获取,从源头尽量减少错误和误差,尤其是减少人为误差,尤为重要。首先应了解任务所涉及到的原始数据的属性和数据结构及所代表的意义,确定所需要的数据项和数据提取原则,使用合适的手段和严格的操作规范来完成相关数据的获取,由于这一步骤涉及较多相关专业知识,可以结合专家和用户论证的方式尽量获取有较高含金量(预测能力)的变量因子。获取过程中若涉及到多源数据的抽取,由于运行的软硬件平台不同,对这些异质异构数据库要注意数据源的连接和数据格式的转换。若涉及到数据的保密,则在处理时应多注意此类相关数据的操作且对相关数据作备注说明以备查用。

2 数据清理 数据清理 数据清理是数据准备过程中最花费时间、最乏味,但也是最重要的步骤。该步骤可以有效减少学习过程中可能出现相互矛盾情况的问题。初始获得的数据主要有以下几种情况需要处理: 1)含噪声数据。处理此类数据,目前最广泛的是应用数据平滑技术。1999年,Pyle系统归纳了利用数据平滑技术处理噪声数据的方法,主要有:①分箱技术,检测周围相应属性值进行局部数据平滑。②利用聚类技术,根据要求选择包括模糊聚类分析或灰色聚类分析技术检测孤立点数据,并进行修正,还可结合使用灰色数学或粗糙集等数学方法进行相应检测。③利用回归函数或时间序列分析的方法进行修正。④计算机和人工相结合的方式等。 对此类数据,尤其对于孤立点或异常数据,是不可以随便以删除方式进行处理的。很可能孤立点的数据正是实验要找出的异常数据。因此,对于孤立点应先进入数据库,而不进行任何处理。当然,如果结合专业知识分析,确信无用则可进行删除处理。 2)错误数据。对有些带有错误的数据元组,结合数据所反映的实际问题进行分析进行更改或删除或忽略。同时也可以结合模糊数学的隶属函数寻找约束函数,根据前一段历史趋势数据对当前数据进行修正。 3)缺失数据。①若数据属于时间局部性的缺失,则可采用近阶段数据的线性插值法进行补缺;若时间段较长,则应该采用该时间段的历史数据恢复丢失数据。若属于数据的空间缺损则用其周围数据点的信息来代替,且对相关数据作备注说明,以备查用。②使用一个全局常量或属性的平均值填充空缺值。③使用回归的方法或使用基于推导的贝叶斯方法或判定树等来对数据的部分属性进行修复④忽略元组。 4)冗余数据。包括属性冗余和属性数据的冗余。若通过因子分析或经验等方法确信部分属性的相关数据足以对信息进行挖掘和决策,可通过用相关数学方法找出具有最大影响属性因子的属性数据即可,其余属性则可删除。若某属性的部分数据足以反映该问题的信息,则其余的可删除。若经过分析,这部分冗余数据可能还有他用则先保留并作备注说明。

数据挖掘过程说明文档

生产再生钢的过程如下:组合后的废钢通过炉门送入炉子,电流通过悬浮在炉内的电极输送到熔化的废钢中。提供给这些电极的高电流通过电弧传输到内部的金属废料,对其加热并产生超过3000°C的温度。 通过添加各种活性气体和惰性气体以及固体物质来维持和优化炉内条件。然后,钢水从熔炉中流出,进入移动坩埚,并浇铸到钢坯中。 你将得到一个数据集,代表从各种金属废料lypes生产回收钢坯的过程。Hie数据集包含大 ?这是一个基于团队的项目。你需要组成一个小组,由三名(或两名)组员来完成这项练习。?您可以使用Weka或任何其他可用的数据挖掘资源和软件包来帮助您制定问题、计算、评

估等。 ?您的团队绩效将完全根据团队的结果和您的报告进行评估。 ?作为一个团队,您需要决定给定问题的性质;什么类型的数据挖掘问题公式适合解决此类问题;您的团队可以遵循什么样的基本数据挖掘过程;您的团队希望尝试什么类型的算法;以何种方式,您可以进一步利用或最大化您的性能,等等。 ?您的团队应致力于涵盖讲座、教程中包含的领域,考虑预处理、特征选择、各种算法、验证、测试和性能评估方法。 ?对于性能基准,建议您使用准确度和/或错误率作为评估指标。 ?表现最好的球队将被宣布为本次迷你KDD杯冠军,并将获得10%的加分,最高100%满分。 数据挖掘流程: 一、数据建模 1. 数据获取 2. 数据分析 3. 数据预处理 二、算法建模 1. 模型构建 2. 模型检验 三、评估 一、数据建模 1.数据获取及分析 数据集:EAF_process_dataqqq.csv 根据《assignment 2》中,数据集的说明,可知:

数据挖掘教程

摘要: 顾名思义, 数据挖掘就是从大量的数据中挖掘出有用的信息。它是根据人们的特定要求,从浩如烟海的数据中找出所需的信息来,供人们的特定需求使用。2000年7 月,IDC发布了有关信息存取工具市场的报告。1999年,数据挖掘市场大概约为7.5亿美元,估计在下个5年内市场的年增长率为32.4%,其中亚太地 区为26.6%。到2002年,该市场会发展到22亿美元。据国外专家预测,随着数据量的日益积累和计算机的广泛应用,在今后的5—10年内,数据挖掘将 在中国形成一个新型的产业。 为了帮助大家了解数据挖掘的基本理论和方法,我们从“数据挖掘讨论组”网站上整理加工了一组有关该概念的基本知识,省却了纷繁的技术方法,供读者学习参考。 第一课 数据挖掘技术的由来第二课 数据挖掘的定义 第三课 数据挖掘的研究历史和现状第四课 数据挖掘研究内容和本质 第五课 数据挖掘的功能第六课 数据挖掘常用技术 第七课 数据挖掘的流程第八课 数据挖掘未来研究方向及热点第九课 数据挖掘应用第十课 实施数据挖掘项目考虑的问题 URL:h ttp://https://www.doczj.com/doc/721888164.html,/learning/lesson/xinxi/20021125/lesson.asp

第一课数据挖掘技术的由来 1.1 网络之后的下一个技术热点 1.2 数据爆炸但知识贫乏 1.3 支持数据挖掘技术的基础 1.4 从商业数据到商业信息的进化 1.5 数据挖掘逐渐演变的过程 1.1网络之后的下一个技术热点 我们现在已经生活在一个网络化的时代,通信、计算机和网络技术正改变着整个人类和社会。如果用芯片集成度来衡量微电子技术,用CPU处理速度来衡量计 算机技术,用信道传输速率来衡量通信技术,那么摩尔定律告诉我们,它们都是以每18个月翻一番的速度在增长,这一势头已经维持了十多年。在美国,广播达到 5000万户用了38年;电视用了13年;Internet拨号上网达到5000万户仅用了4年。全球IP网发展速度达到每6个月翻一番,国内情况亦然。 1999年初,中国上网用户为210万,现在已经达到600万。网络的发展导致经济全球化,在1998年全球产值排序前100名中,跨国企业占了51个, 国家只占49个。有人提出,对待一个跨国企业也许比对待一个国家还要重要。在新世纪钟声刚刚敲响的时候,回顾往昔,人们不仅要问:就推动人类社会进步而 言,历史上能与网络技术相比拟的是什么技术呢?有人甚至提出要把网络技术与火的发明相比拟。火的发明区别了动物和人,种种科学技术的重大发现扩展了自然人 的体能、技能和智能,而网络技术则大大提高了人的生存质量和人的素质,使人成为社会人、全球人。 现在的问题是:网络之后的下一个技术热点是什么?让我们来看一些身边俯拾即是的现象:《纽约时报》由60年代的10~20版扩张至现在的 100~200版,最高曾达1572版;《北京青年报》也已是16~40版;市场营销报已达100版。然而在现实社会中,人均日阅读时间通常为30~45 分钟,只能浏览一份24版的报纸。大量信息在给人们带来方便的同时也带来了一大堆问题:第一是信息过量,难以消化;第二是信息真假难以辨识;第三是信息安 全难以保证;第四是信息形式不一致,难以统一处理。人们开始提出一个新的口号:“要学会抛弃信息”。人们开始考虑:“如何才能不被信息淹没,而是从中及时 发现有用的知识、提高信息利用率?” 面对这一挑战,数据开采和知识发现(DMKD)技术应运而生,并显示出强大的生命力。 1.2 数据爆炸但知识贫乏 另一方面,随着数据库技术的迅速发展以及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,人们希望能够对其 进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根 据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。 1.3 支持数据挖掘技术的基础

数据挖掘期末复习提纲(整理版)

1.熟悉数据挖掘的流程: 提示:1)业务理解2)数据理解3)数据准备4)建立模型5)模型评估6)模型发布 2.数据库系统与数据仓库系统的区别: 数据仓库是一个面向主题的、集成的、时变的和非易失的数据集合,支持管理部门的决策过程:而数据库是面向具体操作的、单一的、实时的、更新的数据集合,支持管理机构日常操作的。数据库系统的主要任务是执行联机事务和查询处理,这种系统称为OLTP系统,涵盖了组织机构的大部分日常操作;另一方面,数据仓库在数据分析和决策方面为用户和知识工人提供服务。 3. 数据聚合需考虑的问题; 4. 利用免费商品做促销的关联规则挖掘问题: 1)找到免费商品的频繁1—项集,记为S1。 2)使用FP增长算法生成那些价格不少于$200的频繁项集,记为S2。这是一个单调约束,因此不必要在每一步使用“生成—测试”过程,这样能 节省一些不必要的计算开销。如果我们有一个频繁项价格至少¥200,则 没必要对这个频繁项的任何超集进行测试。这是因为任何其他商品加到 这个频繁项里,价格肯定会增多。需要检验的是超集是否是频繁的。这 里之所以使用FP增长算法的原因是Apriori算法丢弃了那些价格低于 $200的频繁项集。这样导致了将不能够发现满足约束条件的频繁项集。 FP增长算法不会有这样的问题,因为它保留了关于数据库的完整信息在 一个树结构中。 3)从S1S2中找到频繁项集。 4)生成满足最小置信度且形如2 S 的规则。 1S 5.分布式数据的关联规则挖掘方法: 第一.在每一个站点挖掘局部频繁项集,设CF为四个站点的局部频繁项集的并集; 第二.计算CF中每个频繁项集在各个站点的支持度计数;

数据挖掘的基本流程

CRISP-DM (cross-industry standard process for data mining), 即为"跨行业数据挖掘过程标准". 此KDD过程模型于1999年欧盟机构联合起草. 通过近几年的发展,CRISP-DM 模型在各种KDD过程模型中占据领先位置,采用量达到近60%.(数据引自Cios and Kurgan于2005年合著的论文trands in data mining and knowledge discovery中) 在1996年,当时数据挖掘市场是年轻而不成熟的,但是这个市场显示了爆炸式的增长。三个在这方面经验丰富的公司DaimlerChrysler、SPSS、NCR发起建立一个社团,目的建立数据挖掘方法和过程的标准。在获得了EC (European Commission)的资助后,他们开始实现他们的目标。为了征集业界广泛的意见共享知识,他们创建了CRISP-DM Special Interest Group(简称为SIG)。 大概在1999年,SIG(CRISP-DM Special Interest Group)组织开发并提炼出CRISP-DM,同时在Mercedes-Benz和OHRA(保险领域)企业进行了大规模数据挖掘项目的实际试用。SIG还将CRISP-DM和商业数据挖掘工具集成起来。SIG组织目前在伦敦、纽约、布鲁塞尔已经发展到200多个成员。2000年,CRISP-DM 1.0版正式推出,应该说CRISP-DM是实际项目的经验总结和理论抽象。CRISP-DM 强调,DM不单是数据的组织或者呈现,也不仅是数据分析和统计建模,而是一个从理解业务需求、寻求解决方案到接受实践检验的完整过程。 CRISP-DM的六个阶段 CRISP-DM过程描述 CRISP-DM 模型为一个KDD工程提供了一个完整的过程描述。一个数据挖掘项目的生命周期包含六个阶段。这六个阶段的顺序是不固定的,我们经常需要前后调整这些阶段。这依赖每个阶段或是阶段中特定任务的产出物是否是下一个阶段必须的输入。上图中箭头指出了最重要的和依赖度高的阶段关系。 上图的外圈象征数据挖掘自身的循环本质――在一个解决方案发布之后一个数据挖掘的过程才可以继续。在这个过程中得到的知识可以触发新的,经常是更聚焦的商业问题。后续的过程可以从前一个过程得到益处。 业务理解(Business Understanding)

数据挖掘的流程及应用

数据挖掘的流程 (1)确定业务对象 清晰地定义出业务问题,认清数据挖掘的目的是数据挖掘的重要一步。挖掘的最后结构是不可预测的,但要探索的问题应是有预见的,为了数据挖掘而数据挖掘则带有盲目性,是不会成功的。 (2)数据准备 数据的选择:搜索所有与业务对象有关的内部和外部数据信息,并从中选择出适用于数据挖掘应用的数据。 数据的预处理:研究数据的质量,为进一步的分析作准备.并确定将要进行的挖掘操作的类型。 数据的转换:将数据转换成一个分析模型.这个分析模型是针对挖掘算法建立的.建立一个真正适合挖掘算法的分析模型是数据挖掘成功的关键。 (3)数据挖掘 对所得到的经过转换的数据进行挖掘.除了完善从选择合适的挖掘算法外,其余一切工作都能自动地完成。 (4)分析和同化 结果分析:解释并评估结果,其使用的分析方法一般应作数据挖掘操作而定,通常会用到可视化技术。 知识的同化:将分析所得到的知识集成到业务信息系统的组织结构中去。 5)数据挖掘在CRM中的应用 从客户生命周期角度分析数据挖掘技术的应用 从行业角度分析数据挖掘技术的应用 (1)从客户生命周期角度分析数据挖掘技术的应用 在客户生命周期的过程中,各个不同的阶段包含了许多重要的事件。数据挖掘技术可以应用于客户生命周期的各个阶段提高企业客户关系管理能力,包括争取新的客户,让已有的客户创造更多的利润、保持住有价值的客户等等。 a 潜在客户期市场活动及数据挖掘应用 潜在客户获得活动是针对目标市场的营销活动,寻找对企业产品或服务感兴趣的人。值得注意的是,在这个阶段缺乏客户数据。数据挖掘可以把以前的客户对类似活动的响应进行挖掘,从而把市场活动重点锁定在以前的响应者身上。一个更好的方法就是寻找和高价值的客户类似的潜在客户——只要一次就获得正确的客户。通常,获得活动使用广告和其它

数据挖掘的基本步骤

卜庆峰《网络营销》 数据挖掘的基本步骤 数据挖掘的步骤会随不同领域的应用而有所变化,每一种数据挖掘技术也会有各自的特性和使用步骤,针对不同问题和需求所制定的数据挖掘过程也会存在差异。此外,数据的完整程度、专业人员的支持程度等都会对建立数据挖掘过程有所影响。这些因素造成了数据挖掘在各不同领域中的运用、策划,以及流程的差异性,即使同一产业,也会因为分析技术和专业知识的摄入程度不同而不同,因此对于数据挖掘的系统化、标准化就显得格外重要。如此一来,不仅可以较容易的跨领域应用,也可以结合不同的专业知识,发挥数据挖掘的真正精神。数据挖掘完整的步骤如下: (1) 理解数据和数据局的来源(Understanding) (2) 获取相关知识与技术(Acquisition) (3) 整合与检查数据(Integration and Checking) (4) 去除错误或不一样的数据(Data Cleaning) (5) 建立模型与假设(Model and Hypothesis Development) (6) 实际数据挖掘工作(Data Mining) (7) 测试和验证挖掘结果(Testing and Verification) (8) 解释和应用(Interpretation and Use) 由上述步骤可以看出,数据挖掘牵涉了大量的准备工作和规划工作,事实上许多专家都认为在整套数据挖掘的过程中,有80%的时间和精力是花费在数据预处理阶段的,其中包括数据的净化、数据格式转换、变量整合,以及数据表的链接。可见,在进行数据挖掘技术的分析之前,还有许多准备工作要完成。 参考文献:卜庆峰《网络营销》 130401101刘超 130401101刘超

数据仓库与数据挖掘课后习题答案

数据仓库与数据挖掘 第一章课后习题 一:填空题 1)数据库中存储的都是数据,而数据仓库中的数据都是一些历史的、存档的、归纳的、计算的数据。 2)数据仓库中的数据分为四个级别:早起细节级、当前细节级、轻度综合级、高度综合级。3)数据源是数据仓库系统的基础,是整个系统的数据源泉,通常包括业务数据和历史数据。 4)元数据是“关于数据的数据”。根据元数据用途的不同将数据仓库的元数据分为技术元数据和业务元数据两类。 5)数据处理通常分为两大类:联机事务处理和联机事务分析 6)Fayyad过程模型主要有数据准备,数据挖掘和结果分析三个主要部分组成。 7)如果从整体上看数据挖掘技术,可以将其分为统计分析类、知识发现类和其他类型的数据挖掘技术三大类。 8)那些与数据的一般行为或模型不一致的数据对象称做孤立点。 9)按照挖掘对象的不同,将Web数据挖掘分为三类:web内容挖掘、web结构挖掘和web 使用挖掘。 10)查询型工具、分析型工具盒挖掘型工具结合在一起构成了数据仓库系统的工具层,它们各自的侧重点不同,因此适用范围和针对的用户也不相同。 二:简答题 1)什么是数据仓库?数据仓库的特点主要有哪些? 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 主要特点:面向主题组织的、集成的、稳定的、随时间不断变化的、数据的集合性、支持决策作用 2)简述数据挖掘的技术定义。 从技术角度看,数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际数据

中,提取隐含在其中的、人们不知道的、但又是潜在有用的信息和知识的过程。 3)什么是业务元数据? 业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够读懂数据仓库中的数据 4)简述数据挖掘与传统分析方法的区别。 本质区别是:数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先前未知、有效和实用三个特征。 5)简述数据仓库4种体系结构的异同点及其适用性。 a.虚拟的数据仓库体系结构 b.单独的数据仓库体系结构 c.单独的数据集市体系结构 d.分布式数据仓库结构 第二章课后习题 一:填空题 1)模型是对现实世界进行抽象的工具。在信息管理中需要将现实世界的事物及其有关特征转换为信息世界的数据才能对信息进行处理与管理,这就需要依靠数据模型作为这种转换的桥梁。 2)数据仓库模型设计包括概念、逻辑、物理、元数据模型设计等内容。 3)现实世界是存在于现实之中的各种客观事物。概念世界是现实情况在人们头脑中的反应。逻辑世界是人们为将存在于自己头脑中的概念模型转换到计算机中的实际的物理存储过程中的一个计算机逻辑表示模式。计算机世界则是指现实世界中的事物在计算机系统中的实际存储模式。

医学数据挖掘..doc

第一章 一.填空 1.数据挖掘和知识发现的三大主要技术为:数据库、统计学、机器学习 2.数据挖掘获得知识的表现形式主要有6种:规则、决策树、知识基网络权值、公式、案例 3.规则是由前提条件、结论两部分组成 4.基于案例推理CBR的基础是案例库 5.知识发现的基本步骤:数据选择、处理、转换、数据挖掘、解释与评价。数据挖掘是知识发现的关键步骤 6.数据挖掘的核心技术是:人工智能、机器学、统计学 7.目前数据挖掘在医学领域的应用集中在疾病辅助诊断、药物开发、医院信息系统、遗传学等方面 二.名解 1.数据挖掘DM:在数据中正规的发现有效的、新颖的、潜在有用的、并且最终可以被读懂的模式的过程 2.案例推理CBR:当要解决一个新问题时,CBR利用相似性检索技术到案例库中搜索与新问题相似的案例,再经过对就案例的修改来解决新问题 三.简答 1.数据挖掘的特点 a挖掘对象是超大型的DB,b发现隐含的知识,c可以用于增进人类认知的知识,d不是手工完成的 2.案例是解决新问题的一种知识,案例知识表示为三元组 a问题描述:对求解的问题及周围环境的所有特征的描述,b解描述:对问题求解方案的描述,c效果描述:描述解决方案后的结果情况,是失败还是成功 3.医学数据挖掘存在的关键问题 a数据预处理,b信息融合技术,c快速的鲁棒的书库挖掘算法,d提供知识的准确性和安全性 4.数据挖掘在遗传学方面的应用 遗传学的研究表明,遗传疾病的发生是由基因决定的,基因数据库搜索技术在基因研究上做出了很多重大发现,其工作主要包括:a从各种生物体的大量DNA序列中定位出具有某种功能的基因,b在基因DB中搜索与某种具有高阶结构或功能的蛋白质相似的高阶结构序列 第二章 一.填空 1.DM的对象分为:关系型DB、数据仓库、文本DB、复杂类型DB 2.从用户角度来看,数据仓库的基本组成包括:数据源、数据存储、应用工具、可视化用户界面 3.数据仓库是最流行的数据模型是多维数据模型,多维数据模型将数据看作是数据立方体的形式,数据立方体是由维和事实来定义 4.常用的多维数据模式包括:星型模式、雪花模式、事实星座模式。星型模式是由事实表和维表构成 5.WEB DM分为:WEB内容挖掘、WEB结构挖掘、WEB使用挖掘 二.名解 1.数据仓库:一个面向主题的、集成的、时变的、非易失的数据集合,用以支持管理活动

数据挖掘的基本流程

数据挖掘的基本流程-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

数据挖掘的基本流程 数据挖掘有很多不同的实施方法,如果只是把数据拉到Excel表格中计算一下,那只是数据分析,不是数据挖掘。本节主要讲解数据挖掘的基本规范流程。CRISP-DM和SEMMA是两种常用的数据挖掘流程。 2.5.1数据挖掘的一般步骤 从数据本身来考虑,数据挖掘通常需要有信息收集、数据集成、数据规约、数据清理、数据变换、数据挖掘实施过程、模式评估和知识表示8个步骤。 步骤(1)信息收集:根据确定的数据分析对象,抽象出在数据分析中所需要的特征信息,然后选择合适的信息收集方法,将收集到的信息存入数据库。对于海量数据,选择一个合适的数据存储和管理的数据仓库是至关重要的。 步骤(2)数据集成:把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。 步骤(3)数据规约:如果执行多数的数据挖掘算法,即使是在少量数据上也需要很长的时间,而做商业运营数据挖掘时数据量往往非常大。数据规约技术可以用来得到数据集的规约表示,它小得多,但仍然接近于保持原数据的完整性,并且规约后执行数据挖掘结果与规约前执行结果相同或几乎相同。 步骤(4)数据清理:在数据库中的数据有一些是不完整的(有些感兴趣的属性缺少属性值)、含噪声的(包含错误的属性值),并且是不一致的(同样的信息不同的表示方式),因此需要进行数据清理,将完整、正确、一致的数据信息存入数据仓库中。不然,挖掘的结果会差强人意。 步骤(5)数据变换:通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。对于有些实数型数据,通过概念分层和数据的离散化来转换数据也是重要的一步。 步骤(6)数据挖掘过程:根据数据仓库中的数据信息,选择合适的分析工具,应用统计方法、事例推理、决策树、规则推理、模糊集,甚至神经网络、遗传算法的方法处理信息,得出有用的分析信息。 步骤(7)模式评估:从商业角度,由行业专家来验证数据挖掘结果的正确性。 步骤(8)知识表示:将数据挖掘所得到的分析信息以可视化的方式呈现给用户,或作为新的知识存放在知识库中,供其他应用程序使用。

如何做数据挖掘

数据挖掘工作咋开展?记住这六步::定义商业问题、数据准备、数据理解、建立模型、评估模型、应用/部署模型 快要过年了,年底却不亦乐呼,就写写我对数据挖掘过程的体会吧! Step1. 就是商业问题的理解了,那么如何更好的理解“老大”提出的商业问题困惑呢?我觉得思维导图倒是个不错的选择,当然自己要想更好的理解“老大”的意思还需要进一步的沟通,商业问题的理解关系到这个挖掘项目的价值,甚至成败,所以在这块大家要显得“外向”一些,多交流、多沟通、多了解这个商业问题背后的东东;

step2. 接下来就是需要提取的字段,也就是数据挖掘的宽表,这点就要和企业的DBA人员多多交流,看数据库中各个维度的表格都有什么字段,主要关联的主键有那些,那么如何选取字段呢?这就需要自己把自己与“老大”共同讨论的思维导图拿出来看看,这样就有提取那些字段的感觉了,这部分大多数的提取是自己对商业问题的感觉或者一些前辈的经验; Step3 数据的ETL,这部分一般的时间占数据挖掘项目的70%左右,为什么数据的ETL如此重要呢?万丈高楼平地起,如果连地基都是“豆腐渣工程”的话,那么再华丽的楼房也没人愿意掏腰包;嘿嘿,开个玩笑;数据的ETL主要是一些异常值、空值(miss值)、错误数值的处理,这部分一般需要根据数据自身的分布、简单的统计知识、该字段体现的业务特点、自己的经验进行的,也就是这一部分的处理主要是统计知识+项目经验+业务特点;

Step4 建立模型所需要的变量如何选?当然目标变量(Y)一般都是事前设定好的,那么X如何找呢?大多数都是应用相关分析、特征选择、描述性的统计图表(分箱图、散点图等),这里我只想说一句算法是死的,有时候我们根据算法得出来的X对Y没有影响,但在实际的业务中影响却很大,所以大家不要过于依赖算法、工具,我曾经因为这点,被人批了,555~~~~~ Step5 建立数据挖掘模型,这块是许多同行相当痴迷的地方,我也不例外,记得大学毕业去北京的时候,就在咨询公司研究算法什么的,后来经过leader的几次谈话,自己才慢慢走出了误区;一句话,我们追求的是模型带来的效益,所以没那么多时间去玩模型、搞算法;但是作为数据挖掘从业者,最基本的应该是了解各种算法的原理,还有一些数据挖掘模型参数的意义,比如在spss clementine中就有自定义和专家两个供大家选择,所以掌握一些参数的意义也是有必要的,大家可以上网下一些人大数据挖掘的视频教程,里面讲的比较详细;

数据挖掘模型训练,预测过程使用说明

数据挖掘模型训练,预测过程使用说 明 作者:张青松

目录 1. 模型训练 (2) 1.1. 输入数据 (2) 1.1.1. 文件读取数据 (2) 1.1.2. 数据库读取数据 (2) 1.2. 训练模型 (3) 2. 模型预测 (3) 2.1. 输入预测数据 (3) 2.2. 使用预测模型进行预测 (3) 2.3. 查看训练结果 (4) 摘要 一个数据挖掘完整的工作流包含训练和预测两个过程。 1)模型训练过程包含:输入训练数据、使用训练模型训练,得到预测模型。 2)预测过程包含:输入预测数据、使用训练得到的预测模型进行预测。 1.模型训练 1.1.输入数据 在DataStudio中,输入数据的方式分为两种: 1.1.1.文件读取数据 使用文件读取节点输入数据,在节点选择中的数据源页签中,选择文件节点。 根据文件读取节点使用说明设置,并读取数据: 1.1. 2.数据库读取数据 使用数据库节点输入数据,在节点选择中的数据源页签中,选择数据库节点。

根据数据库读取节点使用说明设置,并读取数据: 1.2.训练模型 根据实际需要在节点选择面板的建模页签下选择模型节点 图1 训练模型节点 在工作区中设置选中的模型参数,并点击执行,对开始训练,训练完成后在左下的模型窗口生成对应的训练结果。 图2 预测模型管理 各模型节点设置方法参照: 2.模型预测 2.1.输入预测数据 输入预测数据的方法仍然采用上文中1.1介绍的方法读取数据。 2.2.使用预测模型进行预测 对于训练生成的模型,主要分为两种:一种是生成的模型可以用于预测,这样的节点需

要输入预测数据,并进行设置,然后对未知的结果进行预测,比如指数平滑、ARIMA等。另一种节点是不需要预测,只需要查看训练结果,比如K-means、Apriori等。 为了统一工作流的工作方式,规定两种训练节点生成的模型采用相同的工作方式,即从模型管理面板拖入预测模型节点,连接数据源,设置,并运行。 预测模型的设置及运行方法见对应的节点使用说明: 图3 预测工作流 2.3.查看训练结果 对于2.2中介绍的两种预测模型节点,使用相同的方式查看结果。预测模型设置面板右肩上的执行并预览按钮查看预测模型的结果的二维表,或者执行后在预测模型的右键菜单中的“预览:预测结果集”菜单查看结果。 图4 右肩执行预览按钮 图5 右键预览结果集 为了更加直观的查看预测结果,可以选择使用可视化节点,以图形的方式展示预测结果。

数据挖掘的基本流程

数据挖掘的基本流程 数据挖掘有很多不同的实施方法,如果只是把数据拉到Excel表格中计算一下,那只是数据分析,不是数据挖掘。本节主要讲解数据挖掘的基本规范流程。CRISP-DM和SEMMA是两种常用的数据挖掘流程。 数据挖掘的一般步骤 从数据本身来考虑,数据挖掘通常需要有信息收集、数据集成、数据规约、数据清理、数据变换、数据挖掘实施过程、模式评估和知识表示8个步骤。 步骤(1)信息收集:根据确定的数据分析对象,抽象出在数据分析中所需要的特征信息,然后选择合适的信息收集方法,将收集到的信息存入数据库。对于海量数据,选择一个合适的数据存储和管理的数据仓库是至关重要的。 步骤(2)数据集成:把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。 步骤(3)数据规约:如果执行多数的数据挖掘算法,即使是在少量数据上也需要很长的时间,而做商业运营数据挖掘时数据量往往非常大。数据规约技术可以用来得到数据集的规约表示,它小得多,但仍然接近于保持原数据的完整性,并且规约后执行数据挖掘结果与规约前执行结果相同或几乎相同。 步骤(4)数据清理:在数据库中的数据有一些是不完整的(有些感兴趣的属性缺少属性值)、含噪声的(包含错误的属性值),并且是不一致的(同样的信息不同的表示方式),因此需要进行数据清理,将完整、正确、一致的数据信息存入数据仓库中。不然,挖掘的结果会差强人意。 步骤(5)数据变换:通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。对于有些实数型数据,通过概念分层和数据的离散化来转换数据也是重要的一步。 步骤(6)数据挖掘过程:根据数据仓库中的数据信息,选择合适的分析工具,应用统计方法、事例推理、决策树、规则推理、模糊集,甚至神经网络、遗传算法的方法处理信息,得出有用的分析信息。 步骤(7)模式评估:从商业角度,由行业专家来验证数据挖掘结果的正确性。 步骤(8)知识表示:将数据挖掘所得到的分析信息以可视化的方式呈现给用户,或作为新的知识存放在知识库中,供其他应用程序使用。

什么是数据挖掘

什么是数据挖掘 数据挖掘(Data Mining),又称为数据库中的知识发现(Knowledge Discovery in Database, KDD),就是从大量数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程,简单的说,数据挖掘就是从大量数据中提取或“挖掘”知识。 并非所有的信息发现任务都被视为数据挖掘。例如,使用数据库管理系统查找个别的记录,或通过因特网的搜索引擎查找特定的Web页面,则是信息检索(information retrieval)领域的任务。虽然这些任务是重要的,可能涉及使用复杂的算法和数据结构,但是它们主要依赖传统的计算机科学技术和数据的明显特征来创建索引结构,从而有效地组织和检索信息。尽管如此,数据挖掘技术也已用来增强信息检索系统的能力。 数据挖掘的起源 为迎接前一节中的这些挑战,来自不同学科的研究者汇集到一起,开始着手开发可以处理不同数据类型的更有效的、可伸缩的工具。这些工作建立在研究者先前使用的方法学和算法之上,在数据挖掘领域达到高潮。特别地,数据挖掘利用了来自如下一些领域的思想:(1) 来自统计学的抽样、估计和假设检验,(2) 人工智能、模式识别和机器学习的搜索算法、建模技术和学习理论。数据挖掘也迅速地接纳了来自其他领域的思想,这些领域包括最优化、进化计算、信息论、信号处理、可视化和信息检索。 一些其他领域也起到重要的支撑作用。特别地,需要数据库系统提供有效的存储、索引和查询处理支持。源于高性能(并行)计算的技术在处理海量数据集方面常常是重要的。分布式技术也能帮助处理海量数据,并且当数据不能集中到一起处理时更是至关重要。 数据挖掘能做什么 1)数据挖掘能做以下六种不同事情(分析方法): ·分类(Classification) ·估值(Estimation) ·预言(Prediction) ·相关性分组或关联规则(Affinity grouping or association rules) ·聚集(Clustering) ·描述和可视化(Des cription and Visualization) ·复杂数据类型挖掘(Text, Web ,图形图像,视频,音频等) 2)数据挖掘分类

数据挖掘试题

For personal use only in study and research; not for commercial use 单选题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 3. 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B. 分类和预测 C. 数据预处理 D. 数据流挖掘 4. 当不知道数据所带标签时,可以使用哪种技术促使带同类标签的数据与带其他标签的数据相分离?(B) A. 分类 B. 聚类 C. 关联分析 D. 隐马尔可夫链 6. 使用交互式的和可视化的技术,对数据进行探索属于数据挖掘的哪一类任务?(A) A. 探索性数据分析 B. 建模描述 C. 预测建模 D. 寻找模式和规则 11.下面哪种不属于数据预处理的方法? (D) A变量代换 B离散化 C 聚集 D 估计遗漏值 12. 假设12个销售价格记录组已经排序如下:5, 10, 11, 13, 15, 35, 50, 55, 72, 92, 204, 215 使用如下每种方法将它们划分成四个箱。等频(等深)划分时,15在第几个箱子内? (B) A 第一个 B 第二个 C 第三个 D 第四个 13.上题中,等宽划分时(宽度为50),15又在哪个箱子里? (A) A 第一个 B 第二个 C 第三个 D 第四个 16. 只有非零值才重要的二元属性被称作:( C ) A 计数属性 B 离散属性 C非对称的二元属性 D 对称属性 17. 以下哪种方法不属于特征选择的标准方法: (D) A嵌入 B 过滤 C 包装 D 抽样 18.下面不属于创建新属性的相关方法的是: (B) A特征提取 B特征修改 C映射数据到新的空间 D特征构造 22. 假设属性income的最大最小值分别是12000元和98000元。利用最大最小规范化的方法将属性的值映射到0至1的范围内。对属性income的73600元将被转化为:(D) A 0.821 B 1.224 C 1.458 D 0.716 23.假定用于分析的数据包含属性age。数据元组中age的值如下(按递增序):13,15,16,16,19,20,20,21,22,22,25,25,25,30,33,33,35,35,36,40,45,46,52,70, 问题:使用按箱平均值平滑方法对上述数据进行平滑,箱的深度为3。第二个箱子值为:(A) A 18.3 B 22.6 C 26.8 D 27.9 28. 数据仓库是随着时间变化的,下面的描述不正确的是 (C) A. 数据仓库随时间的变化不断增加新的数据内容; B. 捕捉到的新数据会覆盖原来的快照; C. 数据仓库随事件变化不断删去旧的数据内容; D. 数据仓库中包含大量的综合数据,这些综合数据会随着时间的变化不断地进行重新综合. 29. 关于基本数据的元数据是指: (D) A. 基本元数据与数据源,数据仓库,数据集市和应用程序等结构相关的信息; B. 基本元数据包括与企业相关的管理方面的数据和信息;

相关主题
文本预览
相关文档 最新文档