用WEKA进行数据挖掘,第3部分 最近邻和服务器端库

简介

在这个 “用 WEKA 进行数据挖掘” 系列之前的两篇文章中,我介绍了数据 挖掘的概念。如果您还未曾阅读过 用 WEKA 进行数据挖掘,第 1 部分:简介和 回归 和 用 WEKA 进行数据挖掘,第 2 部分:分类和群集,那么请先阅读这两 个部分,因为二者涵盖了一些在继续之前必须了解的关键概念。而且更重要的是 ,在这两个部分中我谈及了数据挖掘中常用的三种技术,它们可以将难以理解的 无用数据转变为有意义的规则和趋势。第一种技术是回归,用来基于其他的示例 数据预测一个数值输出(比如房屋价值)。第二种技术是分类(即分类树或决策 树),用来创建一个实际的分支树来预测某个未知数据点的输出值。(在我们的 例子中,我们预测的是对 BMW 促销活动的反应。)我介绍的第三种技术是群集 ,可用它来创建数据组(群集)并从中识别出趋势和其他规则(在我们的例子中 ,即 BMW 的销售)。三者的相似点在于它们都能将数据转换成有用信息,但它 们各自的实现方法以及使用的数据各不相同,而这正是数据挖掘最为重要的一点 :正确的模型必须用于正确的数据。

本文将讨论四种常用的数据挖掘技术中的最后一种:最近邻。您将看到它更 像是分类与群集的组合,并为我们消灭数据误导的使命提供了另一种有用的武器 。

在我们之前的文章中,我们将 WEKA 用作一种独立的应用程序。那么它在实 际中能多有用呢?很显然,它并不完美。由于 WEKA 是一种基于 Java 的应用程 序,它有一个可被用在我们自己的服务器端代码中的 Java 库。对于大多数人而 言,这可能是最为常见的用法,因为您可以编写代码来不断地分析您的数据并动 态地做出调整,而不必依赖他人提取数据、将其转换成 WEKA 格式,然后再在 WEKA Explorer 内运行它。

最近邻

最近邻(也即 Collaborative Filtering 或 Instance-based Learning)是 一种非常有用的数据挖掘技术,可用来用输出值已知的以前的数据实例来预测一 个新数据实例的未知输出值。从目前的这种描述看来,最近邻非常类似于回归和 分类。那么它与这二者究竟有何不同呢?首先,回归只能用于数值输出,这是它 与最近邻的最直接的一个不同点。分类,如我们在前一篇文章的例子中看到的, 使用每个数据实例 来创建树,我们需要遍历此树才能找到答案。而这一点对于 某些数据而言会是一个很严重的问题。举个例子,亚马逊这样的公司常常使用 “购买了 X 的顾客还购买了 Y" 特性,如果亚马逊拟创建一个分类树,那么它 将需要多少分支和节点?它的产品多达数十万。这个树将有多巨大呀?如此巨大 的一个树能有多精确呢?即便是单个分支,您都将会惊讶地发现它只有三个产品 。亚马逊的页面通常会有 12 种产品推荐给您。对于这类数据,分类树是一种极 不适合的数据挖掘模型。

而最近邻则可以非常有效地解决所有这些问题,尤其是在上述亚马逊的例子 中遇到的这些问题。它不会受限于数量。它的伸缩性对于 20 个顾客的数据库与 对于 2000 万个顾客的数据库没有什么差异,并且您可以定义您想要得到的结果 数。看起来是一个很棒的技术!它的确很棒 — 并且可能对于那些正在阅读本文 的电子商务店铺的店主最为有用。

让我们先来探究一下最近邻背后的数学理论,以便能更好地理解这个过程并 了解此技术的某些限制。

最近邻背后的数学理论

最近邻技术背后的数学理论非常类似于群集技术所涉及到的数学理论。对于 一个未知的数据点,这个未知数据点与每个已知数据点之间的距离需要被计算出 来。如果用电子数据表计算此距离将会非常繁琐,而一个高性能的计算机则可以 立即完成这些计算。最容易也是最为常见的一种距离计算方式是 “Normalized Euclidian Distance”。它看起来复杂,实则不然。让我们通过一个例子来弄清 楚第 5 个顾客有可能会购买什么产品?

清单 1. 最近邻的数学理论

Customer   Age   Income   Purchased Product
1      45    46k    Book
2      39    100k   TV
3      35    38k    DVD
4      69    150k   Car Cover
5      58    51k    ???

Step 1: Determine Distance Formula
Distance = SQRT( ((58 - Age)/(69-35))^2) + ((51000 -  Income)/(150000-38000))^2 )

Step 2: Calculate the Score
Customer   Score   Purchased Product
1      .385     Book
2      .710     TV
3      .686     DVD
4      .941     Car Cover
5      0.0     ???

如果使用最近邻算法回答我们上面遇到的 “第 5 个顾客最有可能购买什么 产品” 这一问题,答案将是一本书。这是因为第 5 个顾客与第 1 个顾客之间 的距离要比第 5 个顾客与其他任何顾客之间的距离都短(实际上是短很多)。 基于这个模型,可以得出这样的结论:由最像第 5 个顾客的顾客可以预测出第 5 个顾客的行为。

不过,最近邻的好处远不止于此。最近邻算法可被扩展成不仅仅限于一个最 近匹配,而是可以包括任意数量的最近匹配。可将这些最近匹配称为是 “N-最 近邻”(比如 3-最近邻)。回到上述的例子,如果我们想要知道第 5 个顾客最 有可能购买的产品,那么这次的结论是书和 DVD。而对于上述的亚马逊的例子, 如果想要知道某个顾客最有可能购买的 12 个产品,就可以运行一个 12-最近邻 算法(但亚马逊实际运行的算法要远比一个简单的 12-最近邻算法复杂)。

并且,此算法不只限于预测顾客购买哪个产品。它还可被用来预测一个 Yes/No 的输出值。考虑上述例子,如果我们将最后一列改为(从顾客 1 到顾客 4)“Yes,No,Yes,No,”,那么用 1-最近邻模型可以预测第 5 个顾客会说 “Yes”,如果用一个 2-最近邻算法也会得到预测结果 “Yes”(顾客 1 和 3 均说 “Yes”),若用 3-最近邻模型仍会得到 “Yes”(顾客 1 和 3 说 “Yes”,顾客 2 说 “No”,所以它们的平均值是 “Yes”)。

我们考虑的最后一个问题是 “我们应该在我们的模型中使用多少邻?” 啊 哈 — 并不是每件事都这么简单。为了确定所需邻的最佳数量,需要进行试验。 并且,如果要预测值为 0 和 1 的列的输出,很显然需要选择奇数个邻,以便打 破平局。

时间: 2025-01-30 11:58:47

用WEKA进行数据挖掘,第3部分 最近邻和服务器端库的相关文章

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

简介 在 用 WEKA 进行数据挖掘,第 1 部分:简介和回归,我介绍了数据挖掘的 概念以及免费的开源软件 Waikato Environment for Knowledge Analysis (WEKA),利用它可以挖掘数据来获得趋势和模式.我还谈到了第一种数据挖掘 的方法 - 回归 - 使用它可以根据一组给定的输入值预测数字值.这种分析方 法非常容易进行,而且也是功能最不强大的一种数据挖掘方法,但是通过它,读 者对 WEKA 有了很好的了解,并且它还提供了一个很好的例子,展示了原始数据 是如

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

简介 什么是 数据挖掘?您会不时地问自己这个问题,因为这个主题 越来越得到技术界的关注.您可能听说过像 Google 和 Yahoo! 这样的公司都在 生成有关其所有用户的数十亿的数据点,您不禁疑惑,"它们要所有这些 信息干什么?"您可能还会惊奇地发现 Walmart 是最为先进的进行数据挖 掘并将结果应用于业务的公司之一.现在世界上几乎所有的公司都在使用数据挖 掘,并且目前尚未使用数据挖掘的公司在不久的将来就会发现自己处于极大的劣 势. 那么,您如何能让您和您的公司跟上数据挖掘的大潮

数据挖掘-weka学习AdditiveRegression算法

问题描述 weka学习AdditiveRegression算法 AdditiveRegression算法(GBDT在weka中的基本实现) 能不能给我一个 拥有使用这个算法对数据进行分类的截图 有正确率的那种 我最近才接触WEKA和数据挖掘 对这个算法不是很了解 网上大牛们博客上的中文内容我也基本都浏览完了 但对实现还是有些搞不定 我用的weka对数据进行分析 如果有经常使用这个平台的大神 还望帮帮忙 感激不尽 解决方案 Weka学习三(ensemble算法)Weka算法介绍[weka 中的算法

初试weka数据挖掘

        偶然间在网上看到了一篇关于weka好的博文,就记录了下来--             weka下载地址为http://www.cs.waikato.ac.nz/ml/weka/downloading.html             读者有时候看到两个图片并列,其中一个是原文的,另一个是我实验时打开的. 一.引入         数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至算法优化,确实需要很多背景知识.但事实是,绝大多数数据挖掘工程师不需

数据挖掘系列(5)使用mahout做海量数据关联规则挖掘

上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因 为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分 布式数据挖掘开源项目(mahout本来是指一个骑在大象上的人).掌握了关联规则的基本算法和使用 ,加上分布式关联规则挖掘后,就可以处理基本的关联规则挖掘工作了,实践中只需要把握业务,理 解数据便可游刃有余. 安装mahout 骑在大象上的侠士必然需要一头雄纠纠的大象,不过本文不解绍大象hadoop,所

weka学习入门笔记

目录  1. 简介 2. 数据格式 3. 数据获取与预处理 3. 关联规则(购物篮分析) 4. 分类与回归 5. 聚类分析 1. 简介  WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过http://www.cs.waikato.ac.nz/ml/weka 得到.同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰.  WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机

资源总结——七步学习数据挖掘与数据科学

想知道如何学习数据挖掘和数据科学吗?本文概述了七个步骤,指出的资源能让你成为一名数据科学家. 作者为Gregory Piatetsky,是一名数据挖掘与数据科学方面的专家. 以下为7个步骤用于学习数据挖掘和数据科学.虽然有编号顺序,你也可以并行或以不同的顺序学习: 1 语音:学习R.Python以及SQL语音: 2 工具:了解如何使用数据挖掘和可视化工具: 3 教材:阅读介绍性的教科书,了解基础知识: 4 教育:观看网络研讨会,参加课程,考虑获得数据科学中的证书或学位: 5 数据:检查可用的数据

什么是数据挖掘?分析如何揭示洞察

数据挖掘是通过大量数据集进行分类以识别趋势和模式并建立关系的自动化过程. 如今的组织正在收集来自各种来源的日益增长的信息量,包括网站.企业应用程序.社交媒体.移动设备以及日益增加的物联网(IoT). 最大的问题是:如何从这些信息中获得真正的商业价值?数据挖掘可以在很大程度上做出贡献.数据挖掘是通过大量数据集进行分类的自动化过程,以通过数据分析来识别趋势和模式,建立关系,解决业务问题或产生新的机会. 查看数据来了解过去发生的事情以便能够在现在明智地行动只是一方面.数据挖掘工具和技术让你可以预测未来

进行数据挖掘的8个最佳开源工具

数据挖掘,又称为资料探勘.数据采矿.它是数据库知识发现(英语:Knowledge-Discovery in Databases,简称:KDD)中的一个步骤,是一个挖掘和分析大量数据并从中提取信息的过程.其中一些应用包括市场细分 - 如识别客户​​从特定品牌购买特定产品的特征,欺诈检测 - 识别可能导致在线欺诈的交易模式等.在本文中,我们整理了进行数据挖掘的 8 个最佳开源工具. 1.Weka WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理